아카이브로그모드에서 복구방법좀 문의합니다. 0 4 2,233

by 리틀맹 [2009.01.16 10:49:40]


8i구요 일단 NT 테스트DB에서 테스트하고있고...적용이 잘 되면 unix 운영에다도 적용시킬 예정입니다.
다름이 아니라...제가 아카이브로그 모드는 설정했습니다. 근데 궁금한 사항이 많은지라..^^;;

==== init.ora =====
 log_archive_start = true
 log_archive_dest = D:\Oracle\ORADATA\99\archive
 log_archive_format = %S.ARC   ->  %s.log 랑은 몬차인가요? 이 log파일은 에디터에서 읽을수 없나요? 깨지던데;

SVRMGR> connect internal;
SVRMGR> shutdown immediate
SVRMGR> startup mount pfile=D:\Oracle\ADMIN\99\pfile\init.ora
SVRMGR> alter database archivelog;
SVRMGR> archive log list;
데이터베이스 로그 모드         아카이브 모드
자동 아카이벌                  사용 가능
아카이브 수신지                D:\Oracle\ORADATA\99\archive
가장 오래된 온라인 로그 순차   930   
다음 아카이브 로그 순차        933 
현재 로그 순차                 933  -> 아카이브모드는 첨 적용하는건데 왜 1번이 아니고 930이 나올까요?;;

SVRMGR> alter database open;
SVRMGR> alter system switch logfile;
SVRMGR> alter system archive log stop;
SVRMGR> alter system archive log start;

이렇게 수행을 했더니 00933.ARC  파일이 생성되었습니다. 근데 문젠..
제가 Delete명령어나 insert 명령어를 실행시켜서 commit 까지 했는데도 별 반응이 없더라구요
전 데이터변동이 되면 그게 파일로 남겨지는줄 알았는데..제가 잘못안건가요? ^^;;;

매주금요일마다 풀백업을 받고 매일 핫백업을 받는다 ..라고 백업정책을 정했었는데..
아카이브로그모드에 대해서 여기저기 좀 찾아보니..제가 잘못생각할수도 있단 생각이 들더라구요..
풀백업은...콜드백업을 말하는듯...디비 shutdown 해서 받는 백업인거죠? 
저희 서비스 성격상 shutdown 을 하면 안되기 때문에...매일매일 핫백업을 받고...
또 매일매일 exp 명령어로 로컬에 전체백업을 받을 생각입니다. (요건 제 로컬에다 배치파일로 만들어논상태^^)
물론 한달정도의 기간꺼만 남겨두고 나머지 백업본은 다 삭제할생각이구요..

그럼 복구로 들어가서...강좌에서도 보니깐 .dbf 파일이 필요한거 같던데..요건 대체 어찌해야 생성되나요?
글 읽으면서 아셨듯이 초짜라서 궁금한것도 많고 이해력도 떨어집니다..ㅠㅠ;;

제가 12일날 적용을 시켰고 13일날 그 계정에다가 import를 했거든요. 그랬더니 ARC 파일이 생성되더라구요..
이건 대체 어다가 쓰는건지;;;
datafile, redo log file, control file, parameter file 도 필요하다던데 테스트DB에서 조회해보니깐..

1. Datafile
SVRMGR> select name,status from v$datafile;
---------------------------------------------------
               NAME                       | STATUS
---------------------------------------------------
D:\ORACLE\ORADATA\99\SYSTEM01.DBF    | SYSTEM
D:\ORACLE\ORADATA\99\USERS01.DBF     | ONLINE
D:\ORACLE\ORADATA\99\RBS01.DBF       | ONLINE
D:\ORACLE\ORADATA\99\TEMP01.DBF      | ONLINE
D:\ORACLE\ORADATA\99\OEMREP01.DBF    | ONLINE
D:\ORACLE\ORADATA\99\INDX01.DBF      | ONLINE
D:\ORACLE\ORADATA\99\PSSRV9901.DBF   | ONLINE

2. Redo log file
SVRMGR> select member from v$logfile;
------------------------------------
               MEMBER
------------------------------------
D:\ORACLE\ORADATA\99\REDO04.LOG
D:\ORACLE\ORADATA\99\REDO03.LOG
D:\ORACLE\ORADATA\99\REDO02.LOG
D:\ORACLE\ORADATA\99\REDO01.LOG

3. control file
SVRMGR> select name from v$controlfile;
---------------------------------------
                 NAME
---------------------------------------
D:\ORACLE\ORADATA\99\CONTROL01.CTL
D:\ORACLE\ORADATA\99\CONTROL02.CTL

요렇게 나왔습니다. 날짜를 보니 설치한 그날 날짜로만 되있고..이건 머 변동이 없는거 같더군요...
제가 설정을 덜 한게 있는건가요? 아카이브모드 설정하는건 쉬워도 복구는 초짜한텐 넘 어려워요..ㅠㅠ
긴글 읽어주셔서 감사합니다.. 조언한마디만 부탁드립니다~

 

by 장태길 [2009.01.16 11:11:31]
1.
LOG_ARCHIVE_FORMAT must be in the format: %s,%t,%r.

NOTE: %s log sequence number, %t thread number, %r resetlogs ID that ensures unique names are constructed for the archived log files across multiple incarnations of the database
2. 로그 번호는 archive / noarchive 모드에 상관없이 디비내의 변경 정보를
serial 하게 기록 하는 번호라고 생각하세요..
항상 내부적으로 기록 하는 것이고
sqlplus ' /as sysdba'
SQL> archive LOG LIST
하시면 확인 가능합니다.

3. 화일 하나에 무수히 많은 TRANSACTION 정보가 담겨져있습니다.
새로운 로그 화일을 떨구려면 DBA 권한을 가지 유저가
강제로 alter system switch logfile; 하셔야 합니다.

4. 콜드 백업 - 디비를 내리고 데이타 화일/리두 화일/콘트로 파일 /기타 파라미터 화일을 OS COPY 로 복사
HOT BACKUP - BEGIN BACKUP COMMAND 후 OS COPY 로 복사
!! 일반적으로 HOT BACKUP ( 운행중 백업이 가능하니..) 을 주말 혹은
트랜잭션이 없는 시간대에 하시구요.. 데일리로 ARCHIVE 백업을 하는게 보통입니다.



by 마그나루 [2009.01.16 11:17:21]
[ %s ] 자동으로 생성될 아카이브 파일의 일련번호를 결정해 줍니다.
(예) 1, 2, 3,,,
[ %S ] 자동으로 생성될 아카이브 파일의 일련번호를 0 값으로 채워서 결정해 줍니다.
(예) 00001, 00002, 00003 ……
[ %t ] 데이터베이스가 하나의 인스턴스인지 또는 여러 개의 인스턴스(OPS 환경)로 구성되어 있는지를 구분하여 표시해 줍니다.
(예) 1, 2, 3, ,,,
[ %T ] 데이터베이스가 하나의 인스턴스인지 또는 여러 개의 인스턴스(OPS 환경)로 구성되어 있는지를 0 값으로 채워서 결정해 줍니다.
(예) 001, 002, 003,,,

by 마그나루 [2009.01.16 11:24:25]
아카이브 모드라는 것을 설명드리자면
우선 Redo로그와 트랜잭션에 대해서 설명을 드려야 겠네요.

일반적으로 트랜잭션이 발생하면 Redo로그에 남게 됩니다.
Redo로그는 기본적으로 3개의 그룹으로 순환되면서 덮어쓰기를 하며
트랜잭션을 기록합니다.
이때 덮어쓰기전에 Redo로그를 백업한게 아카이브 로그가 되겠습니다.

그렇게 때문에 commit을 하신다고 해서 바로 아카이브 로그가 생기지 않은 것입니다.

by 리틀맹 [2009.01.16 13:27:17]
태길님 나루님 감사합니다..이론으론 대충 알겠는데 디비를 들여다봄..참 어렵네요..ㅋㅋ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입