写入控制文件时出错 ORA-00221 oracle
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写入控制文件时出错 ORA-00221 oracle相关的知识,希望对你有一定的参考价值。
医院的一套HIS系统。
环境:ORACLE V10.1.0.2.0 - Production vsnsta=0
vsnsql=13 vsnxtr=3
Windows Server 2003 Version V5.2
CPU : 4 - type 586, 2 Physical Cores
Process Affinity: 0x00000000
Memory (A/P) : PH:1600M/2047M, PG:3636M/3947M, VA:1958M/2047M
processes = 150
shared_pool_size = 83886080
large_pool_size = 8388608
java_pool_size = 50331648
nls_language = SIMPLIFIED CHINESE
nls_territory = CHINA
control_files = E:\ORADATA\ORACLE10\CONTROL01.CTL, E:\ORADATA\ORACLE10\CONTROL02.CTL, E:\ORADATA\ORACLE10\CONTROL03.CTL
db_block_size = 8192
db_cache_size = 25165824
compatible = 10.1.0.2.0
db_file_multiblock_read_count= 16
db_recovery_file_dest = d:\oracle\product\10.1.0\flash_recovery_area
db_recovery_file_dest_size= 2147483648
undo_management = AUTO
undo_tablespace = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain =
dispatchers = (PROTOCOL=TCP) (SERVICE=oracle10XDB)
job_queue_processes = 10
background_dump_dest = D:\ORACLE\PRODUCT\10.1.0\ADMIN\ORACLE10\BDUMP
user_dump_dest = D:\ORACLE\PRODUCT\10.1.0\ADMIN\ORACLE10\UDUMP
core_dump_dest = D:\ORACLE\PRODUCT\10.1.0\ADMIN\ORACLE10\CDUMP
sort_area_size = 65536
db_name = oracle10
open_cursors = 300
pga_aggregate_target = 25165824
现象:
大约每3~4天,用户130访问时,oracle进程不再相应,求助原因。
服务器异常断电,导致oracle控制文件版本不一致,报错ora-00214解决记录
控制文件介绍:
每一个oracle都至少会生成一个控制文件,一个数据库可以拥有多个控制文件,但是一个控制文件只能属于一个数据库。
控制文件内部除了存放数据库名及其创建日期,数据文件,日志文件等相关信息,在系统运行的过程中还会存放系统更改号,检查点信息及归档的当前状态等信息。
出于安全考虑,数据库会自动创建2到3个控制文件,每个控制文件记录相同的信息,这个可以确保在数据库运行时,某个控制文件损坏,oracle会自动使用另一个控制文件,当所有控制文件损坏时,数据库将无法工作。
注:通过 v$controlfile 可以查看oracle的控制文件信息。 select name from v$controlfile
本次问题发生情况:服务器异常断电,启动后,oracle无法连接,使用plsql连接报错ora12514监听出现问题,进一步检查后发现是控制文件不一致,导致数据库无法启动。
解决步骤:
cmd窗体运行以下语句
1.使用nolog模式,DBA登录
sqlplus /nolog
sqlplus / as sysdba
2.先关闭数据库
shutdown immediate
3.使用nomount模式登录
startup nomount
4.拷贝其中一个控制文件到另外一个地方,完成替换
host copy D:\app\Administrator\oradata\orcl\control01.ctl D:\app\Administrator\flash_recovery_area\orcl\control02.ctl
5.手动启动到mount模式
alter database mount;
6.手动启动到open模式
alter database open;
注:本次解决问题的关键在于搞清楚数据库不同的启动模式的区别。
直接使用startup命令启动数据库,数据库会自动按次序执行nomount,mount,open模式打开数据库,这样就会生成新的控制文件,
因为服务器异常断电后,原有的控制文件不一致,所以就会导致数据库启动不了
因此先以nomount模式启动:只会创建实例,不加载数据库,也不会打开任何数据文件然后使用host copy命令复制其中一个控制文件到另外一个控制文件的地方,
再启动到mount,open模式,问题解决。
2017年11月8日17:16:01
以上是关于写入控制文件时出错 ORA-00221 oracle的主要内容,如果未能解决你的问题,请参考以下文章