오라클 백업 및 복구(무중단 복구)

1. 무정지 상태에서의 복구
가. 개요 : 현재 운영중인 DB의 복사본 DB(Clone DB)를 생성 후 불완전 복구 수행하여 데이터를 복원하는 방법
나. 서버환경
< 운영DB>
sid : testdb
version :10g
parameter 경로: /home/oracle/product/10g/dbs
datafile 경로 : /home/oracle/oradata/testdb
control 경로 : /home/oracle/oradata/testdb

< 복사DB>
sid : clonedb
version :10g
parameter 경로: /home/oracle/product/10g/dbs
datafile 경로 : /data/clone
control 경로 : /data/clone

다. 작업과정
– 현재 운영중인 파라미터 파일 다른이름으로 복사(initclonedb.ora)
– initclonedb.ora 파일을 vi 편집기로 열어 DB명, controlfile 위치 수정
– 복사DB 데이터파일 위치에 백업된 data file 복사
– 운영DB에서 control file 생성 스크립트 준비 (alter database backup controlfile to trace as ‘파일명’)
– controlfile 내용 수정 : DB명 수정, datafile 위치, redolog file위치 등, 반드시 resetlogs 선택
– 복사DB로 접속 후 control 파일 재생성 스크립트 수행
– 복구 명령어로 필요한 시점까지 복원(recover database until time ‘시간’ using backup controlfile)
– 데이터베이스 오픈(alter database open resetlogs)
– 복구된 데이터 export
– 운영DB에 복구된 데이터 import

2. DB Link
가. 개요 : 원격지의 DB를 로컬에서처럼 사용할 수 있도록 DB를 연결해 주는 기법
나. 방법

-- DB Link 생성
create database link 링크이름
connect to 원격지아이디
identified by 원격지패스워드
using 'tnsnames.ora에 등록된 서버명';

-- 모든 사용자가 사용가능한 DB Link 생성
create public database link 링크이름
connect to 원격지아이디
identified by 원격지패스워드
using 'tnsnames.ora에 등록된 서버명';

-- DB Link 삭제
drop database link 링크이름;

-- 공용 DB Link 삭제
drop public database link 링크이름;

-- Link 된 DB연결
select * from 원격지테이블이름@링크명칭;
select * from scott.emp@mylink;

-- 연결된 DB Link 조회
select * from dba_db_links;

-- 사용자에게 DB Link 생성 및 삭제 권한 부여
grant create database link, drop database link to 유저명;
grant create public database link to 유저명;

3. tnsnames.ora 및 listener.ora
가. tnsnames.ora : 클라이언트가 서버에 접속하기 위해 필요한 서버쪽 IP, 프로토콜, 포트 등의 정보를 담고 있는 파일
나. listener.ora : 클라이언트의 접속을 허용하기 위해 서버쪽의 정보를 담고 있는 파일

tnsname.ora 샘플

clone =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = clonedb)
)
)

listener.ora 샘플1

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = clonedb)
(ORACLE_HOME = /home/oracle/product/10g)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
)
)

listener.ora 샘플2(한개의 리스너에 2개의 DB 연결)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = db1)
(ORACLE_HOME = /home/oracle/product/10g)
)
(SID_DESC =
(SID_NAME = db2)
(ORACLE_HOME = /home/oracle/product/11g)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1522))
)
)
)

listener.ora 샘플3(2개의 리스너에 각각 DB 연결)

SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(SID_NAME = db1)
(ORACLE_HOME = /home/oracle/product/10g)
)
)

LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
)
)

SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = db2)
(ORACLE_HOME = /home/oracle/product/11g)
)
)

LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1522))
)
)

참고 : tnsnames.ora, listener.ora의 위치 및 생성방법
위 파일들은 $ORACLE_HOME/network/admin 디렉토리에 있으며, 없을 경우 netca를 실행시켜 만들 수 있다. vi 편집기로 수동생성도 가능

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다