실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.
디스크 오류에 대한 복구 사례(파라미터 파일 이용)
c:\oracle\admin\wink\pfile에는 파라미터 파일들, D:\oracle\oradata\wink 폴더에 데이터 파일이 있었는데 디스크 손상으로 D드라이브에 접근을 할 수가 없다고 했을 때, 기존의 위치(D드라이브)에 데이터 파일 백업 본(cold file 백업 본)을 복사해 넣을 수가 없습니다.
cold backup을 통해 c:\backup 폴더에 기존 백업 파일들(datafile, control file, redo log file, parameter file은 c:\backup\parameter에 ……)이 있다고 가정하며 d:\oracle\oradata\wink에는 접근이 불가능하므로 e:\oracle\oradata\wink로 백업 받은 파일을 복사한 후 alter database rename file 명령으로 이름을 바꾸는 형태로 작업을 진행 합니다.
결국 c드라이브에는 오라클의 파라미터 파일들이 있고 데이터파일은 d드라이브에 관리했는데, d드라이브가 손상되었으므로 데이터 파일 및 컨트롤 파일을 e드라이브에 재배치 하면서 데이터베이스 복구를 진행 하는 것입니다.
Cold back 받는 방법에 대해서는 이전 강좌를 참고 하시기 바랍니다.
================================================================
1. 데이터베이스를 shutdown abort 합니다.
SQL> conn / as sysdba
Connected.
SQL> shutdown abort
ORACLE instance shut down.
2. cold backup 받은 파일을 지정한 폴더에 복사
SQL>host copy e:\backup\*.* e:\oracle\oradata\wink
3. initSID.ora File(c:\oracle\admin\wink\pfile)에서 Control File의 위치를 변경
control_file = (“e:\oracle\oradata\wink\control01.ctl”,
“e:\oracle\oradata\wink\control02.ctl”,
“e:\oracle\oradata\wink\control03.ctl”)
4. DB를 마운트 단계로 시작
SQL> startup mount
ORACLE instance started.
Total System Global Area 76618332 bytes
Fixed Size 453212 bytes
Variable Size 62914560 bytes
Database Buffers 12582912 bytes
Redo Buffers 667648 bytes
Database mounted.
5. 데이터 파일의 위치를 변경
SQL>alter database rename file
2 ‘d:\oracle\oradata\wink\users01.dbf’
3 to ‘e:\oracle\oradata\wink\users01.dbf’;
Database altered.
SQL>alter database rename file
2 ‘d:\oracle\oradata\wink\users01.dbf’
3 to ‘e:\oracle\oradata\wink\users01.dbf’;
Database altered.
……
……
중략
(v$database를 통해 확인 한 데이터 파일의 수만큼 위 과정을 반복하여
위치를 변경 합니다.
6. redo log file의 위치를 변경 합니다.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
----------------------------------------------------------------
3 ONLINE d:\ORACLE\ORADATA\WINK\REDO03.DBF
2 STALE ONLINE d:\ORACLE\ORADATA\WINK\REDO02.DBF
1 STALE ONLINE d:\ORACLE\ORADATA\WINK\REDO01.DBF
SQL>alter database rename file
2 ‘d:\ORACLE\ORADATA\WINK\REDO01.DBF’ to
3 ‘e:\ORACLE\ORADATA\WINK\REDO01.DBF’;
Database altered.
SQL>alter database rename file
4 ‘d:\ORACLE\ORADATA\WINK\REDO02.DBF’ to
5 ‘e:\ORACLE\ORADATA\WINK\REDO02.DBF’;
Database altered.
SQL>alter database rename file
6 ‘d:\ORACLE\ORADATA\WINK\REDO03.DBF’ to
7 ‘e:\ORACLE\ORADATA\WINK\REDO03.DBF’;
Database altered.
7. Database를 오픈 합니다.
SQL>alter database open;
8. v$datafile, v$logfile을 통해 변경 사항을 확인 합니다.
SQL>select name, status from v$datafile;
SQL>select * from v$logfile;