oracle
ストレージの故障に備え、制御ファイルは複数のストレージに分散させよう。
なぜなら制御ファイルはどれかファイルが読めなくても、ほかに分散しているファイルをそのままコピーしてファイル名を修正するだけで復旧するから。っで、この制御ファイルはRMANのリポジトリも持つので、このファイルが全損するとえらく大変。
制御ファイル(***.CTL)が読めない†
障害作成:
1
2
3
4
| バックアップ
データベースをシャットダウン
制御ファイルを削除
データベースを起動
|
制御ファイルがないと下記のようにエラーが表示されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
| | $ set NLS_LANG=AMERICAN_AMERICA.US7ASCII $ sqlplus sys as sysdba
SQL> startup
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 373293520 bytes
Database Buffers 155189248 bytes
Redo Buffers 5804032 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL>
|
初期化ファイルに制御ファイルのありかが示されているので、nomountでオラクルさんを立ち上げます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| | SQL> startup nomount
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 373293520 bytes
Database Buffers 155189248 bytes
Redo Buffers 5804032 bytes
SQL> show parameter control_files;
NAME TYPE VALUE
control_files string C:\ORACLE\ORADATA\AERS\CONTROL01.CTL,
C:\ORACLE\FLASH_RECOVERY_AREA\AERS\CONTROL02.CTL
|
2つファイルがありました。このうちどれが読めないのか不明ですが、コピーしてファイル名を上記に従い修正します。
っで、一度シャットダウンして、立ち上げます。
1
2
| | SQL> shutdown immediate
SQL> startup
|
以上。
制御ファイルが全損した†
RMANから制御ファイルを抜き取る必要があるのですが、RMANへのリポジトリが制御ファイルにある....
っでまずはというよりも事前にDBIDを知っているといいのかと
1
| | SELECT DBID,NAME,DB_UNIQUE_NAME,CURRENT_SCN,LOG_MODE FROM V$DATABASE ;
|