본문 바로가기

카테고리 없음

ORACLE BACKUP CONTROL FILE v1.0

ORACLE 9i BACKUP CONTROL FILE

 

 

1.  CONTROL FILE

A.   DB 최신의 물리적 저장정보를 가지고 있다.

2.  CONTROL FILE 의 백업

A.   alter database backup controlfile to trace

B.   alter database backup controlfile to ‘FILE PATH/FILE_NAME’

C.   alter database backup controlfile to ‘NAME’

3.  alter database backup controlfile to trace

A.   user_dump_dest 에 생성된다. 사용자가 읽고 수정할 수 있다.

4.  alter database backup controlfile to ‘FILE PATH/FILE_NAME’

A.   사용자가 지정한 path binary 파일로 생성된다. 즉 사용자가 내용을 읽을 수가 없다.

5.  alter database backup controlfile to ‘NAME’

A.   $ORACLE_HOMD/dbs 에 저장된다.

B.   위의 경우와 동일하게 사용자가 파일 내용을 읽을 수가 없다.

6.  CONTROL FILE 의 복원 예제

SQL> alter database backup controlfile to '/home/oracle/backup_trace.trc';

 

Database altered.

 

SQL> alter database backup controlfile to trace;

 

Database altered.

(유저가 편집가능한 형태로 백업하였다.)

SQL> select * from v$controlfile;

 

STATUS

-------

NAME

--------------------------------------------------------------------------------

 

/opt/oracle/oradata/PROD/disk1/ctrl01.ctl

 

(위 경로의 컨트롤파일을 훼손 시키겠다.)

SQL> !mv /opt/oracle/oradata/PROD/disk1/ctrl01.ctl /opt/oracle/oradata/PROD/disk1/ctrl01.ctll

 

SQL> shutdown abort;

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

 

Total System Global Area  252777592 bytes

Fixed Size                   451704 bytes

Variable Size             234881024 bytes

Database Buffers           16777216 bytes

Redo Buffers                 667648 bytes

ORA-00205: error in identifying controlfile, check alert log for more info

(컨트롤파일 인식과정 중 에러가 났다. alert로그를 확인해 보라는 메시지이다.)

SQL> select status from v$instance;

 

STATUS

------------

STARTED

(현재 nomount 상태이다. mount 작업중에 에러가 났다는 걸 알 수 있다.)

 

<<alert log 내용>>

ALTER DATABASE   MOUNT

Mon Feb  9 16:19:33 2009

ORA-00202: controlfile: '/opt/oracle/oradata/PROD/disk1/ctrl01.ctl'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

Mon Feb  9 16:19:36 2009

ORA-205 signalled during: ALTER DATABASE   MOUNT...

(컨프롤파일의 존재를 확인 할 수 없다는 내용이 alert log에 기록되었다.)

 

SQL> !vi prod_ora_4808.trc

 

(파일 내용을 편집한다. 내용을 살펴보면 case#1 case#1 로 나뉘어지며 후자의 경우 log reset 한다. log reset 한다는 것은 redo log의 내용을 포기하겠다는 것을 의미하며 완전백업에 실패한 경우를 의미한다. 완전백업이 실패한 경우 후자의 경우를 사용한다.case#1 : 완전백업 내용은 아래와 같다.)

 

STARTUP NOMOUNT (DB ARCHIVE LOG 모드에 대해 나온다.)

CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS  NOARCHIVELOG

--  SET STANDBY TO MAXIMIZE PERFORMANCE

    MAXLOGFILES 16

    MAXLOGMEMBERS 2

    MAXDATAFILES 30

    MAXINSTANCES 1

    MAXLOGHISTORY 113

LOGFILE (LOG FILE에 대한 그룹과 멤버 정보)

  GROUP 1 '/opt/oracle/oradata/PROD/disk1/prod_log01a.log'  SIZE 100M,

  GROUP 2 '/opt/oracle/oradata/PROD/disk2/prod_log02a.log'  SIZE 100M

-- STANDBY LOGFILE

DATAFILE (테이블스페이스 내용, TEMPORARY TABLESPACE 가 없는 것을 볼 수 있다.)

  '/opt/oracle/oradata/PROD/disk1/system01.dbf',

  '/opt/oracle/oradata/PROD/disk2/undo01.dbf',

  '/opt/oracle/oradata/PROD/disk3/users01.dbf',

  '/opt/oracle/oradata/PROD/disk3/example01.dbf',

  '/opt/oracle/oradata/PROD/disk3/dic01.dbf',

  '/opt/oracle/oradata/PROD/disk1/tb1.dbf',

  '/opt/oracle/oradata/PROD/disk1/tb2.dbf',

  '/opt/oracle/oradata/PROD/disk1/tb3.dbf',

  '/opt/oracle/oradata/PROD/disk1/tb4.dbf',

  '/opt/oracle/oradata/PROD/disk3/many01.dbf',

  '/opt/oracle/oradata/PROD/disk3/many02.dbf'

CHARACTER SET US7ASCII (DB 캐릭터셋)

;

RECOVER DATABASE (REDO LOG를 사용해 최신의 상태로 복구)

ALTER DATABASE OPEN;

ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/PROD/disk2/temp01.dbf'

     SIZE 104857600  REUSE AUTOEXTEND OFF;

(TEMPORARY TABLESPACE 의 영역을 재할당한다.)

 

SQL> shutdown abort (스크립트를 SHUTDOWN 상태에서 실행)

ORACLE instance shut down.

SQL> @prod_ora_4808.trc

ORACLE instance started.

 

Total System Global Area  252777592 bytes

Fixed Size                   451704 bytes

Variable Size             234881024 bytes

Database Buffers           16777216 bytes

Redo Buffers                 667648 bytes

 

Control file created.

 

Media recovery complete.

 

Database altered.

 

 

Tablespace altered.

 

/*+ binary 형식으로 만든 백업컨트롤파일은 어떻게 사용? */