部分控制文件損壞
(一)對原有的控制文件作刪除操做,模擬部分控制文件損壞
SQL> select name from v$controlfile;
SQL> shutdown immediate
將控制文件「control03.ctl」刪除
SQL> startup
ORACLE 例程已經啓動。
提示信息:
Total System Global Area 285212672 bytes
Fixed Size 1248552 bytes
Variable Size 83886808 bytes
Database Buffers 192937984 bytes
Redo Buffers 7139328 bytes
ORA-00205: ?????????, ??????, ???????
SQL>altersystem set control_files='E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl', 'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl' scope=spfile;
SQL> shutdown
SQL> startup
SQL> select name from v$controlfile;
SQL> shutdown
SQL> startup
SQL>altersystem set control_files='E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl', 'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl', 'E:\oracle\product\10.2.0\oradata\yanshu\control03.ctl' scope=spfile;
SQL> shutdown
將「control02.ctl」複製一份改爲「control03.ctl」,而後從新啓動數據庫。
SQL> startup
(二)新增一個控制文件,而後作刪除操做,模擬部分控制文件損壞:
1.SQL>altersystem set control_files='D:\control04.ctl','E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl', 'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl','E:\oracle\product\10.2.0\oradata\yanshu\control03.ctl' scope=spfile; (在open狀態下操做:)
提示信息:
系統已更改(能夠查看動態參數文件「E:\oracle\product\10.2.0\db_1\dbs\SPFILEDOG.ora」)。
2.SQL> shutdown immediate
複製控制文件「E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl」到d盤根目錄下並更名爲:control04.ctl,而後啓動數據庫。
3.SQL> startup
4.SQL> show parameter spfile;
5.SQL> select name from v$controlfile;
6.SQL> shutdown immediate
刪除文件「'D:\control04.ctl」,而後啓動數據庫,看看出現什麼現象:
7.SQL> startup
8.SQL> startup
提示信息:
ORACLE 例程已經啓動。
Total System Global Area 285212672 bytes
Fixed Size 1248552 bytes
Variable Size 71303896 bytes
Database Buffers 205520896 bytes
Redo Buffers 7139328 bytes
ORA-00205: ?????????, ??????, ???????(這是錯誤提示信息)
查看跟蹤文件「D:\oracle\product\10.2.0\admin\dog\bdump\alert_dog」,看錯誤緣由。
錯誤緣由提示信息:
ALTER DATABASE MOUNT
Thu Apr 14 08:15:17 2011
ORA-00202: control file: 'D:\CONTROL01.CTL'
ORA-27041: unable to open file
OSD-04002: 沒法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。
9.解決辦法:從新修改初始化參數文件中「control_files」的設置,把刪除的文件項目去掉,而後再關閉從新啓動就能夠了:
SQL>altersystem set control_files='E:\oracle\product\10.2.0\oradata\yanshu\control01.ctl', 'E:\oracle\product\10.2.0\oradata\yanshu\control02.ctl','E:\oracle\product\10.2.0\oradata\yanshu\control03.ctl' scope=spfile;
10.SQL> shutdown immediate
11.SQL> startup