시나리오 13
ARCHIVE LOG MODE, OFFLINE BACKUP
원인 :INACTIVE한 REDO LOG GROUP 유실
--1.정상 운영중
SQL> SELECT * FROM SCOTT.DEPT1;
DEPTNO DNAME LOC
---------- -------------------- --------------------
1 S1 S1
3 S3 S3
4 S4 S4
5 S5 S5
6 S6 S6
7 S7 S7
9 B9 B9
10 S10 S10
11 S11 S11
12 S12 S12
10 개의 행이 선택되었습니다.
SQL> INSERT INTO SCOTT.DEPT1 VALUES (13,'S13','S13');
1 개의 행이 만들어졌습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS
2 FROM V$LOG;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 32 YES INACTIVE
2 33 NO CURRENT
3 31 YES INACTIVE
--CURRENT는 언제나 NO ARC
SQL> ALTER SYSTEM SWITCH LOGFILE;
시스템이 변경되었습니다.
SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS
2 FROM V$LOG;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 32 YES INACTIVE
2 33 YES ACTIVE
3 34 NO CURRENT
3 개의 행이 선택되었습니다.
--CURRENT 3 , 2번이 액티브되었다
--INSERT 명령은 LSN 33에 저장
SQL> SELECT GROUP#,MEMBER FROM V$LOGFILE;
GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
3
C:\ORACLE\ORADATA\ORCL\REDO03.LOG
2
C:\ORACLE\ORADATA\ORCL\REDO02.LOG
1
C:\ORACLE\ORADATA\ORCL\REDO01.LOG
--INACTIVE 1
SQL> HOST DEL C:\ORACLE\ORADATA\ORCL\REDO01.LOG
SQL> @LOGSWITCH
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03113: 통신 채널에 EOF 가 있습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다
SQL> --INACTIVE 는 신경쓰지않는파일
SQL> EXIT
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production에서 분리되었습니다.
C:\Documents and Settings\easy>STARTUP
'STARTUP'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.
C:\Documents and Settings\easy>SYS
C:\Documents and Settings\easy>SQLPLUS "SYS/ORACLE AS SYSDBA"
SQL*Plus: Release 9.2.0.1.0 - Production on 월 Jun 16 14:50:29 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
휴지 인스턴스에 접속되었습니다.
SQL> STARTUP
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
데이터베이스가 마운트되었습니다.
ORA-00313: 로그 그룹 1 (스레드 1의)의 멤버를 여는데 실패했습니다
ORA-00312: 온라인 로그 1 스레드 1: 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'
SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 0 YES UNUSED //한번도 쓴적이 없다는뜻
2 33 YES INACTIVE
3 34 NO INVALIDATED
--장애의 원인 1그룹
ALERT,TRACE파일 읽어보면 오류나온다
--3.복구
ARCHIVE LOG FILE은 존재함으로 사용자의 명령어는 잘보관
--삭제후 재생성
--GROUP삭제
SQL> ALTER DATABASE
2 DROP LOGFILE GROUP 1;
데이타베이스가 변경되었습니다.
--재생성
SQL> ALTER DATABASE
2 ADD LOGFILE GROUP 1 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'
3 SIZE 100M;
데이타베이스가 변경되었습니다.
SQL> ALTER DATABASE OPEN;
데이타베이스가 변경되었습니다.
--4.확인
SQL> SELECT * FROM SCOTT.DEPT1;
DEPTNO DNAME LOC
---------- -------------------- --------------------
1 S1 S1
3 S3 S3
4 S4 S4
5 S5 S5
6 S6 S6
7 S7 S7
9 B9 B9
10 S10 S10
11 S11 S11
12 S12 S12
13 S13 S13
11 개의 행이 선택되었습니다.
--백업
SQL> @OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL01.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL02.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL03.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CWMLITE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\DRSYS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\INDX01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\ODM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\TOOLS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\USERS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\XDB01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\TEMP01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO03.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO02.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO01.LOG C:\OFFBACKUP
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
시나리오 14
ARCHIVE LOG MODE, OFFLINE BACKUP
원인 : CURRENT REDO LOG GROUP 유실
--1.정상 운영중
SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 35 NO CURRENT
2 33 YES INACTIVE
3 34 YES INACTIVE
3 개의 행이 선택되었습니다.
SQL> SAVE REDO
file REDO.sql(이)가 생성되었습니다
--CURRENT:1
SQL> INSERT INTO SCOTT.DEPT1 VALUES(14,'S14','S14');
1 개의 행이 만들어졌습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
SQL> ALTER SYSTEM SWITCH LOGFILE;
시스템이 변경되었습니다.
SQL> @REDO
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 35 YES ACTIVE
2 36 NO CURRENT
3 34 YES INACTIVE
3 개의 행이 선택되었습니다.
SQL> ALTER SYSTEM SWITCH LOGFILE;
시스템이 변경되었습니다.
SQL> @REDO
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 35 YES ACTIVE
2 36 YES ACTIVE
3 37 NO CURRENT
3 개의 행이 선택되었습니다.
--CURRENT 3
SQL> INSERT INTO SCOTT.DEPT1 VALUES(14,'A14','A14');
1 개의 행이 만들어졌습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
--2. 장애 유도
SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 35 YES INACTIVE
2 36 YES INACTIVE
3 37 NO CURRENT
3 개의 행이 선택되었습니다.
SQL> SELECT GROUP#,MEMBER FROM V$LOGFILE;
GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
3
C:\ORACLE\ORADATA\ORCL\REDO03.LOG
2
C:\ORACLE\ORADATA\ORCL\REDO02.LOG
1
C:\ORACLE\ORADATA\ORCL\REDO01.LOG
3 개의 행이 선택되었습니다.
--CURRENT 3:
SQL> SHUTDOWN ABORT
ORACLE 인스턴스가 종료되었습니다.
SQL> EXIT
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production에서 분리되었습니다.
C:\Documents and Settings\easy>DEL C:\ORACLE\ORADATA\ORCL\REDO03.LOG
C:\Documents and Settings\easy>SQLPLUS "SYS/ORACLE AS SYSDBA"
SQL*Plus: Release 9.2.0.1.0 - Production on 월 Jun 16 15:17:36 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
휴지 인스턴스에 접속되었습니다.
SQL> STARTUP
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
데이터베이스가 마운트되었습니다.
ORA-00313: 로그 그룹 3 (스레드 1의)의 멤버를 여는데 실패했습니다
ORA-00312: 온라인 로그 3 스레드 1: 'C:\ORACLE\ORADATA\ORCL\REDO03.LOG'
ORA-27041: 파일을 열 수 없습니다
OSD-04002: 파일을 열 수 없음
O/S-Error: (OS 2) 지정된 파일을 찾을 수 없습니다.
//로그 그룹3 CURRENT가 이상하다
SQL> @REDO
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 35 YES INACTIVE
2 36 YES INACTIVE
3 37 NO CURRENT
//불완전복구를해야한다
--3.복구
불완전 복구
SQL> HOST COPY C:\OFFBACKUP\*.DBF C:\oracle\oradata\ORCL
C:\OFFBACKUP\CWMLITE01.DBF
C:\OFFBACKUP\DRSYS01.DBF
C:\OFFBACKUP\EXAMPLE01.DBF
C:\OFFBACKUP\INDX01.DBF
C:\OFFBACKUP\ODM01.DBF
C:\OFFBACKUP\SYSTEM01.DBF
C:\OFFBACKUP\TEMP01.DBF
C:\OFFBACKUP\TOOLS01.DBF
C:\OFFBACKUP\UNDOTBS01.DBF
C:\OFFBACKUP\USERS01.DBF
C:\OFFBACKUP\XDB01.DBF
11개 파일이 복사되었습니다.
--아카이브있는곳까지 복구
SQL> RECOVER DATABASE UNTIL CANCEL
ORA-00279: 변환 291681가 (06/16/2008 14:55:40에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00035.ARC
ORA-00280: 변환 291681(스레드 1를 위한)가 시퀀스번호 35에 있습니다
로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: 변환 293975가 (06/16/2008 15:12:39에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00036.ARC
ORA-00280: 변환 293975(스레드 1를 위한)가 시퀀스번호 36에 있습니다
ORA-00278: 이 복구를 위해 로그 'C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00035.ARC'
파일은 더이상 필요하지 않습니다
로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: 변환 294145가 (06/16/2008 15:13:47에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00037.ARC
ORA-00280: 변환 294145(스레드 1를 위한)가 시퀀스번호 37에 있습니다
ORA-00278: 이 복구를 위해 로그 'C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00036.ARC'
파일은 더이상 필요하지 않습니다. //더이상 복구하면 파일이없어 에러날것이다.
로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00308: 아카이브된 로그 'C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00037.ARC'를 열
수 없습니다
ORA-27041: 파일을 열 수 없습니다
OSD-04002: 파일을 열 수 없음
O/S-Error: (OS 2) 지정된 파일을 찾을 수 없습니다.
//다시 실행해서 CANCEL 해준다.
SQL> RECOVER DATABASE UNTIL CANCEL
ORA-00279: 변환 294145가 (06/16/2008 15:13:47에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00037.ARC
ORA-00280: 변환 294145(스레드 1를 위한)가 시퀀스번호 37에 있습니다
로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
매체 복구가 취소되었습니다.
SQL> ALTER DATABASE OPEN RESETLOGS;
데이타베이스가 변경되었습니다.
--4.확인
//REDO03.LOG가 복구되어있다.
SQL> SELECT * FROM SCOTT.DEPT1;
DEPTNO DNAME LOC
---------- -------------------- --------------------
1 S1 S1
3 S3 S3
4 S4 S4
5 S5 S5
6 S6 S6
7 S7 S7
9 B9 B9
10 S10 S10
11 S11 S11
12 S12 S12
13 S13 S13
DEPTNO DNAME LOC
---------- -------------------- --------------------
14 S14 S14 //불완전 복구 'A14'는 복구되지않았다.
12 개의 행이 선택되었습니다.
--5.백업 !!(불완전복구이므로 반드시)
SQL> @LOGSWITCH
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
시스템이 변경되었습니다.
SQL> @OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL01.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL02.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL03.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CWMLITE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\DRSYS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\INDX01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\ODM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\TOOLS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\USERS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\XDB01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\TEMP01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO03.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO02.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO01.LOG C:\OFFBACKUP
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
1개 파일이 복사되었습니다.
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.