cold backup을 이용한 복구(2)
No Archive Mode로 운영중인 oracle 9i datafile중 하나가 손상되었으며 디스크는 정상으로 액세스 가능하며 백업 본은 cold backup본이 있다고 가정 하겠습니다.
이러한 경우는 No Archive Mode로 DB가 운용 중이기 때문에 Cold backup(close backup)을 이용한 복구만 가능 합니다.
윈도우 환경이나 리눅스/유닉스 환경은 문법적인 사항만 다르며 기본 개념은 같다고 생각하시길 바라며 실습은 윈도우 환경에서 해보겠습니다.
[예]
=====================================================
실습을 위해 DB전체를 Cold Backup 받습니다.
=====================================================
C:\Documents and Settings\이종철>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Sun Mar 20 11:46:15 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> -- 우선 데이터 파일을 확인 합니다.
SQL> select name, status from v$datafile;
NAME STATUS
--------------------------------------- -----------------------
C:\ORACLE\ORADATA\WINK\SYSTEM01.DBF SYSTEM
C:\ORACLE\ORADATA\WINK\UNDOTBS01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\CWMLITE01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\DRSYS01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\EXAMPLE01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\INDX01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\ODM01.DBF ONLINE
……
……
……
중략
SQL> -- 컨트롤 파일의 위치 및 이름을 확인 합니다.
SQL> select name from v$controlfile;
NAME
-----------------------------------------------------
C:\ORACLE\ORADATA\WINK\CONTROL01.CTL
C:\ORACLE\ORADATA\WINK\CONTROL02.CTL
C:\ORACLE\ORADATA\WINK\CONTROL03.CTL
SQL> -- 리두로그 파일의 위치 및 이름 확인
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------------------------------------------------------------
3 ONLINE C:\ORACLE\ORADATA\WINK\REDO03.DBF
2 ONLINE C:\ORACLE\ORADATA\WINK\REDO02.DBF
1 STALE ONLINE C:\ORACLE\ORADATA\WINK\REDO01.DBF
SQL> host copy c:\oracle\oradata\wink\*.* c:\backup
c:\oracle\oradata\wink\AUTO01.DBF
c:\oracle\oradata\wink\control001.ctl
c:\oracle\oradata\wink\control002.ctl
c:\oracle\oradata\wink\control003.ctl
c:\oracle\oradata\wink\CONTROL01.CTL
c:\oracle\oradata\wink\CONTROL02.CTL
c:\oracle\oradata\wink\CONTROL03.CTL
c:\oracle\oradata\wink\CWMLITE01.DBF
c:\oracle\oradata\wink\DRSYS01.DBF
c:\oracle\oradata\wink\EXAMPLE01.DBF
c:\oracle\oradata\wink\INDX01.DBF
c:\oracle\oradata\wink\LOB_DATA1.DBF
c:\oracle\oradata\wink\ODM01.DBF
c:\oracle\oradata\wink\REDO01.DBF
c:\oracle\oradata\wink\REDO02.DBF
c:\oracle\oradata\wink\REDO03.DBF
c:\oracle\oradata\wink\SYSTEM01.DBF
c:\oracle\oradata\wink\TEMP01.DBF
c:\oracle\oradata\wink\TEST01.DBF
c:\oracle\oradata\wink\TOOLS01.DBF
c:\oracle\oradata\wink\UNDOTBS01.DBF
c:\oracle\oradata\wink\users01.dbf
c:\oracle\oradata\wink\XDB01.DBF
23개 파일이 복사되었습니다.
SQL>-- 현재 TEST DB인 경우 DB SID가 ‘WINK’ 이며 파라미터 파일들은 C:\oracle\ora92\database에 있습니다. initSID.ora 파일은 C:\oracle\admin\wink\pfile에 있을 수 있는데 initSID.ora 파일을 사용하신 다면 별도로 복사해 두어야 합니다.
SQL> host copy C:\oracle\ora92\database\*.* c:\backup
C:\oracle\ora92\database\INITwink.ORA
C:\oracle\ora92\database\oradba.exe
C:\oracle\ora92\database\OraDim.Log
C:\oracle\ora92\database\PWDwink.ora
C:\oracle\ora92\database\SPFILEWINK.ORA
C:\oracle\ora92\database\sqlnet.log
C:\oracle\ora92\database\winkCORE.LOG
7개 파일이 복사되었습니다.
SQL> -- 혹시 DB를 아카이브 로그 모드로 운영 중이라면 아카이브 로그를 삭제 합니다.
SQL> host del C:\oracle\ora92\database\archive\*.*
C:\oracle\ora92\database\archive\*.*, 계속하시겠습니까(Y/N)? y
SQL>-- DB를 오픈 합니다.
SQL> startup
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.
Database opened.
==================================================
데이터 파일 하나를 지워서 손상되었다고 가정을 합니다.
===================================================
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> host del C:\oracle\oradata\wink\users01.dbf 파일 하나를 삭제
=======================================================
복구를 합니다.
=======================================================
SQL> -- DB를 시작하면 다음과 같은 오류를 확인할 수 있습니다.
SQL> startup
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.
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: 'C:\ORACLE\ORADATA\WINK\USERS01.DBF'
SQL> -- DB를 shutdown 후 복구를 하도록 합니다.
SQL> shutdown abort
ORACLE instance shut down.
SQL> host copy c:\backup\users01.dbf c:\oracle\oradata\WINK
SQL> startup
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.
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: 'C:\ORACLE\ORADATA\WINK\USERS01.DBF'
SQL> -- 혹시 미디어 recovery가 필요하다고 하면 다음과 같이 alter database 명령을 사용 합니다.
SQL>alter database recover datafile 'C:\ORACLE\ORADATA\WINK\USERS01.DBF'
2 /
Database altered.
SQL> alter database open;
Database altered.
SQL> -- 다시 한번 DB를 내였다 올려 정상인 것을 확인 합니다.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
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.
Database opened.
No Archive Mode로 운영중인 oracle 9i datafile중 하나가 손상되었으며 디스크는 정상으로 액세스 가능하며 백업 본은 cold backup본이 있다고 가정 하겠습니다.
이러한 경우는 No Archive Mode로 DB가 운용 중이기 때문에 Cold backup(close backup)을 이용한 복구만 가능 합니다.
윈도우 환경이나 리눅스/유닉스 환경은 문법적인 사항만 다르며 기본 개념은 같다고 생각하시길 바라며 실습은 윈도우 환경에서 해보겠습니다.
[예]
=====================================================
실습을 위해 DB전체를 Cold Backup 받습니다.
=====================================================
C:\Documents and Settings\이종철>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Sun Mar 20 11:46:15 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> -- 우선 데이터 파일을 확인 합니다.
SQL> select name, status from v$datafile;
NAME STATUS
--------------------------------------- -----------------------
C:\ORACLE\ORADATA\WINK\SYSTEM01.DBF SYSTEM
C:\ORACLE\ORADATA\WINK\UNDOTBS01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\CWMLITE01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\DRSYS01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\EXAMPLE01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\INDX01.DBF ONLINE
C:\ORACLE\ORADATA\WINK\ODM01.DBF ONLINE
……
……
……
중략
SQL> -- 컨트롤 파일의 위치 및 이름을 확인 합니다.
SQL> select name from v$controlfile;
NAME
-----------------------------------------------------
C:\ORACLE\ORADATA\WINK\CONTROL01.CTL
C:\ORACLE\ORADATA\WINK\CONTROL02.CTL
C:\ORACLE\ORADATA\WINK\CONTROL03.CTL
SQL> -- 리두로그 파일의 위치 및 이름 확인
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------------------------------------------------------------
3 ONLINE C:\ORACLE\ORADATA\WINK\REDO03.DBF
2 ONLINE C:\ORACLE\ORADATA\WINK\REDO02.DBF
1 STALE ONLINE C:\ORACLE\ORADATA\WINK\REDO01.DBF
SQL> host copy c:\oracle\oradata\wink\*.* c:\backup
c:\oracle\oradata\wink\AUTO01.DBF
c:\oracle\oradata\wink\control001.ctl
c:\oracle\oradata\wink\control002.ctl
c:\oracle\oradata\wink\control003.ctl
c:\oracle\oradata\wink\CONTROL01.CTL
c:\oracle\oradata\wink\CONTROL02.CTL
c:\oracle\oradata\wink\CONTROL03.CTL
c:\oracle\oradata\wink\CWMLITE01.DBF
c:\oracle\oradata\wink\DRSYS01.DBF
c:\oracle\oradata\wink\EXAMPLE01.DBF
c:\oracle\oradata\wink\INDX01.DBF
c:\oracle\oradata\wink\LOB_DATA1.DBF
c:\oracle\oradata\wink\ODM01.DBF
c:\oracle\oradata\wink\REDO01.DBF
c:\oracle\oradata\wink\REDO02.DBF
c:\oracle\oradata\wink\REDO03.DBF
c:\oracle\oradata\wink\SYSTEM01.DBF
c:\oracle\oradata\wink\TEMP01.DBF
c:\oracle\oradata\wink\TEST01.DBF
c:\oracle\oradata\wink\TOOLS01.DBF
c:\oracle\oradata\wink\UNDOTBS01.DBF
c:\oracle\oradata\wink\users01.dbf
c:\oracle\oradata\wink\XDB01.DBF
23개 파일이 복사되었습니다.
SQL>-- 현재 TEST DB인 경우 DB SID가 ‘WINK’ 이며 파라미터 파일들은 C:\oracle\ora92\database에 있습니다. initSID.ora 파일은 C:\oracle\admin\wink\pfile에 있을 수 있는데 initSID.ora 파일을 사용하신 다면 별도로 복사해 두어야 합니다.
SQL> host copy C:\oracle\ora92\database\*.* c:\backup
C:\oracle\ora92\database\INITwink.ORA
C:\oracle\ora92\database\oradba.exe
C:\oracle\ora92\database\OraDim.Log
C:\oracle\ora92\database\PWDwink.ora
C:\oracle\ora92\database\SPFILEWINK.ORA
C:\oracle\ora92\database\sqlnet.log
C:\oracle\ora92\database\winkCORE.LOG
7개 파일이 복사되었습니다.
SQL> -- 혹시 DB를 아카이브 로그 모드로 운영 중이라면 아카이브 로그를 삭제 합니다.
SQL> host del C:\oracle\ora92\database\archive\*.*
C:\oracle\ora92\database\archive\*.*, 계속하시겠습니까(Y/N)? y
SQL>-- DB를 오픈 합니다.
SQL> startup
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.
Database opened.
==================================================
데이터 파일 하나를 지워서 손상되었다고 가정을 합니다.
===================================================
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> host del C:\oracle\oradata\wink\users01.dbf 파일 하나를 삭제
=======================================================
복구를 합니다.
=======================================================
SQL> -- DB를 시작하면 다음과 같은 오류를 확인할 수 있습니다.
SQL> startup
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.
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: 'C:\ORACLE\ORADATA\WINK\USERS01.DBF'
SQL> -- DB를 shutdown 후 복구를 하도록 합니다.
SQL> shutdown abort
ORACLE instance shut down.
SQL> host copy c:\backup\users01.dbf c:\oracle\oradata\WINK
SQL> startup
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.
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: 'C:\ORACLE\ORADATA\WINK\USERS01.DBF'
SQL> -- 혹시 미디어 recovery가 필요하다고 하면 다음과 같이 alter database 명령을 사용 합니다.
SQL>alter database recover datafile 'C:\ORACLE\ORADATA\WINK\USERS01.DBF'
2 /
Database altered.
SQL> alter database open;
Database altered.
SQL> -- 다시 한번 DB를 내였다 올려 정상인 것을 확인 합니다.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
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.
Database opened.
기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… | 12-27 | 2285 | ||
[채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1638 | ||
53 | [평일주간100%환급]Spring,JAVA,JSP,안드로이드,C#닷넷,SQL,튜닝… | 03-15 | 1450 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 1562 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 1879 | |
50 | [기업100%환급]개발자를위한스프링,마이바티스,하이버네이트(스… | 01-31 | 1236 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 | 01-19 | 1538 | |
48 | [평일주간,평일야간,주말]안드로이드개발자과정 | 01-11 | 1366 | |
47 | [평일야간,주말주간,주말야간]JAVA,Network&JSP&Spring,MyBatis,… | 01-03 | 1903 | |
46 | 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… | 12-27 | 2285 | |
45 | [기업100%환급]자바웹개발기초과정(JAVA,JDBC,JSP,Servlet,Aajx,… | 12-19 | 1641 | |
44 | [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… | 12-14 | 1605 | |
43 | [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1638 | |
42 | [주말주간]자바&웹,jQUERY,스프링프레임워크 | 12-09 | 1310 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1538 | |
40 | [기업100%환급]자바기초&안드로이드개발자과정(Android전액환급… | 12-01 | 1723 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1183 |
댓글 없음:
댓글 쓰기