Startup Inconsistent Database
Sebagai DBA kita kadang dipusingkan dengan masalah yang disebabkan oleh file corrupt. Masalah ini bisa disebabkan oleh database yang mati tiba-tiba karena listrik mati atau masalah di storage (disk). Misalnya database tidak bisa startup dengan error berikut
SQL> startup
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2177912 bytes
Variable Size 396149896 bytes
Database Buffers 1207959552 bytes
Redo Buffers 4325376 bytes
Database mounted.
ORA-01113: file 2 needs media recovery
ORA-01110: data file 2: '/oradata/oracle/ts/undotbs01.dbf'
Biasanya database tidak bisa startup kalau yang perlu di-recovery adalah file UNDO atau SYSTEM. [Dalam contoh di atas adalah file UNDO]. Dalam kasus ini baik yang bermasalah file SYSTEM atau UNDO, perlakuan (work around atau solusi sementara) nya adalah sama.
Lakukan recover database
SQL> recover database;
ORA-00279: change 7516226638 generated at 05/05/2008 12:32:11
needed for thread 1
ORA-00289: suggestion : /oradata/oracle/ts/arc/1_42_653916655.dbf
ORA-00280: change 7516226638 for thread 1 is in sequence #42
Specify log: {ret=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00308: cannot open archived log
'/oradata/oracle/ts/arc/1_42_653916655.dbf'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Open database
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 2 needs media recovery
ORA-01110: data file 2: '/oradata/oracle/ts/undotbs01.dbf'
Mau tidak mau kita butuh archived log dan/atau logfile yang berisi sequence yang dibutuhkan. Bila archived log atau logfile (yang dibutuhkan) tidak tersedia karena corrupt (atau hilang) maka sampai kapanpun database tidak akan bisa dinaikkan.
Berikut ini adalah work around (solusi sementara) untuk menaikkan database. Database nantinya akan up dengan kondisi inconsistent (tidak konsisten). Kalau database berisi data yang sangat urgent, ini mungkin terasa tidak masalah, yang penting database bisa up dan data bisa diselamatkan.
Work Around
- Edit Init file
Remark parameterundo_management
danundo_tablespace
Tambahkan parameter berikut:UNDO_MANAGEMENT=MANUAL
_ALLOW_RESETLOGS_CORRUPTION = TRUE
_ALLOW_ERROR_SIMULATION = TRUE
_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU1,_SYSSMU2,_SYSSMU3, ...)
Dapatkan value _CORRUPTED_ROLLBACK_SEGMENTS dari [OS] command berikutcd system_datafile_directory
strings system01.dbf | grep _SYSSMU | cut -d $ -f 1 | sort -u - Matikan database, dan nyalakan dengan initfile yang telah diedit tersebut. Pfile HARUS disebutkan secara eksplisit di command startup.
SQL> startup mount
pfile='/data1/oracle/product/10.2.0/dbs/initts.ora';
ORACLE instance started.Total System Global Area 1610612736 bytes
Fixed Size 2177912 bytes
Variable Size 396149896 bytes
Database Buffers 1207959552 bytes
Redo Buffers 4325376 bytes
Database mounted. - Recover database until cancel
SQL> recover database until cancel;
ORA-00279: change 7516226638 generated at 05/05/2008 12:32:11
needed for thread 1
ORA-00289: suggestion :
/oradata/oracle/ts/arc/1_42_653916655.dbf
ORA-00280: change 7516226638 for thread 1 is in sequence #42Specify log: {ret=suggested | filename | AUTO | CANCEL}
CANCEL
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/oradata/oracle/ts/system01.dbf'
ORA-01112: media recovery not started - Open database
SQL> ALTER DATABASE OPEN RESETLOGS;
Database altered.
Tidak ada komentar:
Posting Komentar