首页 > 应用开发 > IT综合 > 细节决定一切-多工控制文件有感
1.首先查看控制文件情况
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string E:ORACLEPRODUCT10.2.0ORADATAORCLCONTRO
L03.CTL
2.shutdown immediate关闭数据库,并且在相同目录下增加控制文件2, CONTROL02.CTL,同时修改pfile
内容如下:
*.control_files='E:oracleproduct10.2.0oradataorclCONTROL01.CTL,E:oracleproduct10.2.0oradataorclCONTROL02.CTL,E:oracleproduct10.2.0oradataorclCONTROL03.CTL'
3.用pfile启动数据库
SQL> startup pfile='e:pfile.ora'
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 209718148 bytes
Database Buffers 394264576 bytes
Redo Buffers 7135232 bytes
ORA-00205: ??????????,??????,??????
遇到此类问题时,首先查看alert日志,当时有点懵,没有第一时间想到查看alert日志
alert日志内容:
Mon Feb 09 11:37:05 2009
ALTER DATABASE MOUNT
Mon Feb 09 11:37:05 2009
ORA-00202: control file: 'E:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL,E:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 123) 文件名、目录名或卷标语法不正确。
Mon Feb 09 11:37:05 2009
ORA-205 signalled during: ALTER DATABASE MOUNT...
alert提示'无法打开文件',这一般是OS层面的错误,当时怀疑以下两点:
1)copy的文件有问题
2)路径与大小写有关
但是,之后验证与以上两点无关.其实,如果仔细看alert日志是能发现问题的,但是线索就这么被忽略掉了.最后通过pub查到了问题原因,关键在pfile的内容:
以前的pfile内容:
*.control_files='E:oracleproduct10.2.0oradataorclCONTROL01.CTL,E:oracleproduct10.2.0oradataorclCONTROL02.CTL,E:oracleproduct10.2.0oradataorclCONTROL03.CTL'
修改后的pfile内容
*.control_files='E:oracleproduct10.2.0oradataorclCONTROL01.CTL','E:oracleproduct10.2.0oradataorclCONTROL02.CTL','E:oracleproduct10.2.0oradataorclCONTROL03.CTL'
关键在于引号,以前的pfile,引号('')中的内容看作一个控制文件,所以oracle把'E:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL,E:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL'看作一个文件,所以alert中报无法打开文件,如果认真观察alert文件是能发现这个问题的.
同时在pub上跟biti也学了一招,在拉库前,先根据pfile创建spfile
SQL>create spfile from pfile='e:pfile.ora';
文件已创建.
SQL>startup
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 209718148 bytes
Database Buffers 394264576 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
总结经验教训:
1.搞oracle要认真仔细,注意细节,这个问题认真分析1分钟就能解决,如果不认真像我就搞了1个小时.代价是昂贵的.
2.多动脑筋,biti的方法让人少走弯路.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9533994/viewspace-1017028/ ,如需转载,请注明出处,否则将追究法律责任。