02.Oracle/DataBase2009. 6. 27. 12:14
반응형

시나리오 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개 파일이 복사되었습니다.

--아카이브있는곳까지 복구

사용자 삽입 이미지
//아카이브로그파일은 36번까지있다

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
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

Posted by 1010