Making User Managed Backups_Part II
Making User-Managed Backups of the Controlfile
Archivelog Mode에서 데이터베이스의 구조적 변경이 있었다면 콘트롤 파일을 백업합니다. 콘트롤 파일을 백업하기 위해서는 ALTER DATABASE 시스템 권한이 필요합니다.
콘트롤 파일을 백업하기 위해서 두가지 방법중 하나를 사용할 수 있습니다.
- 이진 파일(Binary file)로 콘트롤 파일 백업하기
- 추적 파일(Trace file)로 콘트롤 파일 백업하기
Backing Up the Control File to a Binary File
콘트롤 파일을 백업하는 가장 일반적인 방법은 SQL 구문을 이용하여 이진 파일로 만들어 백업하는 방법입니다. 이진파일은 추적파일보다 일반적으로 더 선호하게 되는데 이는 아카이브로그 이력, 읽기 전용과 오프라인 테이블 스페이스에 대한 오프라인 기간, 백업셋과 카피(RMAN을 사용시)에 대한 추가적인 정보를 포함하고 있기 때문입니다.
데이터베이스 구조적 변화 이후 콘트롤 파일 백업하기
1. 데이터베이스를 변경한다고 가정합니다. 예를 들어 테이블 스페이스를 추가한다고 가정하면
SQL>ALTER TABLESPACE tbs_1 DATAFILE 'file1.dbf' SIZE 10M;
2. 이진 파일로 추출될 파일 이름을 정하고 콘트롤 파일을 백업합니다. 다음 SQL문을 참고하십시요.
SQL>ALTER DATABASE BACKUP CONTROLFILE TO '/backup/contfile.bak' REUSE;
REUSE 옵션을 사용하면 기존에 백업한 콘트롤 파일이 존재하면 덮어 씌우게 합니다.
Backing Up the Control File to a trace File
ALTER DATABASE BACKUP CONTROLFILE 구문의 TRACE 옵션은 콘트롤파일을 관리하고 복구하는데 도움을 줄 것 입니다. TRACE 옵션은 바이너리 파일로 생성하는 대신 SQL 구문을 데이터베이스의 추적 파일에 기록하게 함을 나타냅니다. 추적 파일(trace file) 의 구문은 데이터베이스를 시작하고, 콘트롤 파일을 재 생성하며, 복구하고 데이터베이스를 오픈하는 것으로 이루어져 있습니다.
추적 파일로 콘트롤 파일을 백업하기 위해 마운트나 오픈상태의 데이터베이스에서 다음 SQL구문을 수행합니다.
SQL>ALTER DATABASE BACKUP CONTROL FILE TO TRACE;
RESETLOGS나 NORESETLOGS 를 SQL 구문에 지정하지 않았다면, 생성된 추적파일에는 CREATE CONTROLFILE ... NORESETLOGS 구문이 포함되게 됩니다. 이진 파일로의 백업과 마찬가지로 임시파일 (temp file)의 엔트리는 기록되지 않습니다.
Backing Up the Control File to a Trace File : Example
sales 데이터베이스의 콘트롤 파일을 재생성 하는 스크립트를 하나 만든다고 가정합니다. 데이터베이스는 다음과 같은 특징을 가지고 있습니다.
- 세개의 스레드, 스레드 2는 공용(Public) 스레드 3은 개인용(Private)
- 리두 로그는 2개의 멤버를 가진 3개의 그룹으로 멀티플렉싱
- 데이터베이스는 다음 데이터 파일을 소유.
/diska/prod/sales/db/filea.dbf (온라인 테이블스페이스에서 오프라인 데이터파일)
/diska/prod/sales/db/database1.dbf (온라인 상태의 시스템 테이블 스페이스)
/diska/prod/sales/db/fileb.dbf (읽기 전용 테이블 스페이스)
CREATE CONTROLFILE ... NORESETLOGS 구문을 포함한 추적 파일을 만들기 위해 다음을 입력합니다.
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS;
그리고 추적파일을 만든 시점의 현재 콘트롤 파일에 기반한 SALES 데이터베이스의 새로운 콘트롤 파일을 만드는 스크립트를 만들기 위해 추적 파일을 수정합니다. 보통 상태의 오프라인 혹은 읽기 전용 테이블 스페이스를 복구하는 절차를 피하기 위해, CREATE CONTROLFILE 구문에서 이들을 제외합니다. 재생성된 콘트롤 파일로 데이터베이스를 오픈하면 이 무시된 파일들은 딕셔너리의 체크코드에 'MISSING'으로 기록됩니다. 이제 ALTER DATABASE RENAME FILE 구문을 이용하여 원래의 파일 이름으로 연결해 주면 됩니다.
예를 들어 CREATE CONTROLFILE ... NORESETLOGS 스크립트를 MISSING 으로 라벨된 파일을 변경하면서 다음과 같이 수정할 수 있습니다.
# 다음 구문은 새로운 콘트롤 파일을 만들고 이를 이용해서 데이터 베이스를 오픈합니다.
# 로그이력과 RMAN의 메타데이터는 손실될 것 입니다. 추가적인 로그가 오프라인 데이터파일의 복구를 위해
# 요구될 수 있습니다. 온라인 로그가 사용가능할때만 이 방법을 사용하도록 하십시요.
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE SALES NORESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 32
MAXINSTANCES 16
MAXLOGHISTORY 1600
LOGFILE
GROUP 1
'/diska/prod/sales/db/log1t1.dbf',
'/diskb/prod/sales/db/log1t2.dbf'
) SIZE 100K
GROUP 2
'/diska/prod/sales/db/log2t1.dbf',
'/diskb/prod/sales/db/log2t2.dbf'
) SIZE 100K,
GROUP 3
'/diska/prod/sales/db/log3t1.dbf',
'/diskb/prod/sales/db/log3t2.dbf'
) SIZE 100K
DATAFILE
'/diska/prod/sales/db/database1.dbf',
'/diskb/prod/sales/db/filea.dbf'
;
# 이 데이터파일은 오프라인이지만 테이블스페이스는 온라인입니다. 데이터파일을 수동으로 오프라인 합니다.
ALTER DATABASE DATAFILE '/diska/prod/sales/db/filea.dbf' OFFLINE;
# 데이터파일이 백업본으로부터 복원되었거나 최근 SHUTDOWN 이 NORMAL 이나 IMMEDIATE가 아니면
# 복구작업이 필요합니다.
RECOVER DATABASE;
# 모든 리두 로그를 아카이빙 하고 로그를 스위치 합니다.
ALTER SYSTEM ARCHIVE LOG ALL;
# 이제 데이터베이스를 정상적으로 오픈할 수 있습니다.
ALTER DATABASE OPEN;
# 백업 콘트롤 파일은 읽기 전용과 노말 오프라인 테이블스페이스의 목록을 가지고 있지 않기때문에
# 그들의 복구수행을 하지않게 할 수 잇습니다. 데이터 딕셔너리(Data Dictionary)를 체크하고 존재하지 않는 파
# 일들의 정보를 찾아 'MISSINGxxxx'로 마킹합니다. 그러면 이름을 다시 설정하여 미싱 파일들을 복구작업 없이
# 살려낼 수 있습니다.
ALTER DATABASE RENAME FILE 'MISSING0002'
TO '/diska/prod/sales/db/fileb.dbf';
Making User-Managed backups of Archive Redo Logs
아카이빙 로그를 쌓아두는 디스크의 공간을 절약하기 위해서 백업된 아카이브 로그를 테입이나 다른 디스크에 백업하기를 원할 것 입니다. 만약 아카이브를 여러 위치에 저장한다면, 각각의 로그 스퀀스 번호의 한 카피만 백업하도록 하십시요.
아카이브 로그 모드에서의 백업
1. 데이터베이스가 어떤 아카이브 로그 파일을 생성하는지 확인하기 위해 V$ARCHIVED_LOG 를 조회합니다.
SQL>SELECT THREAD#, SEQUENCE#, NAME
FROM V$ARCHIVED_LOG;
2. 각각의 로그 시퀀스 번호당 하나의 카피만 OS 명령어를 이용하여 백업합니다.
% cp /oracle/dbs/arc_dest/* /disk7/log_backups
CONTINUE...
댓글 없음:
댓글 쓰기