실전! 오라클 백업과 복구
국내도서>컴퓨터/인터넷
저자 : 서진수
출판 : 생능출판사 2010.09.06
상세보기

Clone DB && DB Link (drop table 복구)

- drop table 된 Data 를 clone DB 와 DB Link 를 이용하여 복구해 보겠습니다.

- 우선 archive mode 를 확인 합니다.

 

- 오픈 백업을 수행 합니다.

 

- 실습을 위해 다음과 같이 Table 을 생성하고 Data를 삽입 합니다.

SQL> create table scott.ctest01

2 (no number,

3 name varchar2(10),

4 address varchar2(20)) tablespace clone_test;

 

SQL> begin

2 for i in 1..100000 loop

3 insert into scott.ctest01 values(i,dbms_random.string('A;,10),dbms_random.string('A',20));

4 end loop;

5 commit;

6 end;

7 /

 

- 로그 마이어로 확인 하거나 다음과 같이 시간을 기록해 둡니다.

 

- 운영 DB 에서 PFile을 복사하여 CloneDB용 Pfile 을 생성합니다.

- 컨트롤 파일의 경로와 디비 명을 바꿔 주셔야 합니다.

$cp inittestdb.ora initclone1.ora

 

- 그리고 원본 testdb 즉 운영 DB 에서 컨트롤 파일 생성 스크립트를 만듭니다.

- Redo log file 을 이용하여 복구를 할 수 없고 Archive log 를 이요하여야 하기 때문에 Resetlogs 용으로 스크립트를 수정합니다.

$export ORACLE_SID=clone1

- 그리곤 생성한 스크립트를 이용하여 DB 를 Mount 단계까지 올려 줍니다.

- recover database 쿼리를 이용하여 아까 기록한 시간대로 복구를 해주어야 합니다. 물론 controlfile 의 SCN 이 다르기 때문에 using backup controlfile 구문도 추가해 주어야 합니다.

 

SQL>alter database open resetlogs;

- resetlogs 옵션으로 DB 를 Open 시킵니다.

- 그리고 Data 가 복구 되었는지 확인 합니다.

- 복구가 된 것을 확인 할 수 있습니다.

- 운영서버(testdb)에서 clone DB로 DB Link 생성하기

 

- 운영서버의 ORACLE_HOME/network/admin/tnsnames.ora 수정

- 만약 tnsnames.ora 파일이 존재하지 않는다면 netca 를 실행하여 리스너 구성을 해주시기 바랍니다.

- ORACLE_HOME/network/admin/listener.ora

- 운영DB 의 listener.ora 파일에서 Clone DB 의 리스너 정보를 등록 시켜줘야 합니다.

 

 

- 이제 운영서버에서 Clone DB 로 연결하는 DB Link 를 생성합니다.

SQL> create database link clink ß DB Link 명(임의로 지정)

2 connect to scott identified by tiger ß clone DB에 연결할 계정

3 using 'clonedb'; ß 이 이름은 tnsnames.ora 파일에 있는 이름을 사용하여야 합니다.

 

-리스너를 중지 시키고 다시 실행 시키면서 리스너를 테스트 해 봅시다.

- 다음은 리스너를 중지 시키고 연결 되는지 확인해 봅니다.

 

-다시 리스너를 실행 시킵니다. (listener2)

 

- listener2 의 상태를 확인 합니다.

- tnsping clonedb 명령어를 통해 리스너가 제대로 동작하고 통신이 되는지 확인 합니다.

 

- 운영 DB 에서 Clone DB 로 접속할 수 있는지 확인 합니다.

SQL> select count(*) from scott.ctest01@<DBLink명>

- 다음과 같은 방법으로 Clone DB 에서 복구한 Data 를 가져 옵니다.

 




 

'Oracle > Backup&Recover' 카테고리의 다른 글

SQL Loader  (0) 2011.10.04
DB Link 설정  (0) 2011.09.30
Clone DB (drop table 복구)  (0) 2011.09.29
Datapump Expdp (first)  (0) 2011.09.28
Export and Import (특정 Tablespace)  (0) 2011.09.28


Clone DB (drop table 복구)

- 기존 testdb 에서 테이블을 생성하고 실습을 위해 drop 시킵니다.

- 또한 운영중인 DB 의 Redo log file 을 복사할 수는 없기에 Redo log group 의 두배 정도의 횟수만큼 switch 를 일으켜 줍니다. 그래서 아카이브 파일에 정보가 기록되게 하는 것 입니다.

SQL>alter system switch logfile;

- Clone DB 용 파라미터 파일을 testdb 파라미터 파일에서 복사한 후 아래 내용을 수정해 줍니다.

Control_files= '/data/temp2/control01.ctl'

db_name='testdb2'

 

- 예전에 백업해 두었던 데이터 파일을 temp2 로 복사 합니다.

 

- testdb2 를 위한 컨트롤 파일을 생성하기 위해 testdb DB 에서 컨트롤 파일 생성을 위한 Trace 를 생성 합니다.

- Redo log file 이 존재 하지 않기에 resetlogs 모드로 편지을 해줍니다.

(resetctl.sql)

 

$export ORACLE_SID=testdb2

- SID 값을 변경하여 testdb2 DB로 접속할 수 있게 파라미터를 변경해 줍니다.

 

 

- TESTDB2 로 접속한 것을 볼 수 있습니다.

- 그리고 트레이스를 실행시켜 mount 단계까지 올려줍니다.

 

- recover 명령어를 통해 불완전 복구를 수행 시키고 resetlogs 옵션으로 DB 를 open 시킵니다.

- Data가 복구된 것을 확인 할 수 있습니다.

- 이제 운영 DB에 Data를 다시 넣기 위하여 Clone DB 에서 export 를 수행 합니다.

 

 

- 다음은 testdb 즉 운영DB에 다시 import 시키는 화면 입니다. 이 작업 전에

$export ORACLE_SID=testdb 명령어를 주어 운영DB 로 접속할 수 있게 환경을 맞춰줘야 합니다.

$imp scott/tiger file=tt100.dmp ignore=y

명령어만 주게되면 다음과 같은 오류를 볼 수가 있는데 이는 서로 다른 계정으로 imp 를 시킬 때 발생하는 오류입니다.

- 다음과 같이 fromuser=scott touser=scott 옵션을 주어 scott 계정으로 table을 import 시키게 만들어 주어야 합니다.

- 만약 system 계정으로 import 시키면 scott 계정의 table이 아닌 system.tt100 으로 입력되기 때문에 주의 하셔야 합니다.

- 다음과 같이 제대로 데이터가 입력된 것을 확인 할 수 있습니다.

+ Recent posts