버전 비교
키
- 이 줄이 추가되었습니다.
- 이 줄이 삭제되었습니다.
- 서식이 변경되었습니다.
설치
사전 환경 구성
서버 정보 hosts 파일 저장
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
10.10.50.11 ora_act 10.10.50.21 ora_stb |
hosts 파일에 Primary 서버의 정보와 Standby 서버의 정보를 입력합니다.
IP를 입력하지 않고 등록된 서버 정보로 접속을 하기 위한 작업입니다.
db name 파라미터 조회
코드 블럭 | ||||
---|---|---|---|---|
| ||||
show parameter db_name show parameter db_unique_name |
펼치기 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
만약 db_unique_name을 변경해야 할 경우 다음과 같이 spfile에 적용하여 변경한 후에 데이터베이스를 재기동해줍니다. (온라인 변경 불가능)
|
db_name 파라미터 값은 모두 동일하지만, db_unique_name은 Primary와 Standby가 달라야 합니다.
구분 | db_name | db_unique_name |
---|---|---|
Primary | orcl | ORCL |
Standby | orcl | ORCL_STB |
Data Guard 사용을 위한 파라미터 설정
아카이브 환경 설정
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,ORCL_STB)'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORCL_STB NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL_STB'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30; |
펼치기 | ||
---|---|---|
|
패스워드 접속 방식 설정
코드 블럭 | ||
---|---|---|
| ||
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=shared SCOPE=SPFILE; |
펼치기 | ||
---|---|---|
|
Data Guard 관련 파라미터 설정
코드 블럭 |
---|
ALTER SYSTEM SET FAL_CLIENT=ORCL;
ALTER SYSTEM SET FAL_SERVER=ORCL_STB;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO; |
Data Guard 운영에 필수적인 아카이브 관련 파라미터를 설정합니다.
펼치기 |
---|
|
패스워드 접속 방식 설정
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=shared SCOPE=SPFILE; |
펼치기 | ||
---|---|---|
| ||
펼치기 | ||
|
오라클이 원격 접속 시에 패스워드 파일을 사용할지의 여부를 지정합니다.
Data Guard 관련 파라미터 설정
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER SYSTEM SET FAL_CLIENT=ORCL;SQL> ALTER SYSTEM SET FAL_SERVER=ORCL_STB; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO; |
펼치기 | ||
---|---|---|
|
Data Guard 환경 구성을 위한 파라미터를 설정합니다.
펼치기 |
---|
아카이브 관련 파라미터와 Data Guard 운영을 위한 파라미터를 설정합니다.
|
로그 모드 설정
아카이브 로그 모드 활성화
코드 블럭 | ||||
---|---|---|---|---|
| ||||
SELECT log_mode FROM v$database; |
펼치기 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
No archive 모드시 다음과 같이 변경합니다.
|
Data Guard를 사용하기 위해서는 반드시 Archive log 모드로 구성이 되어 있어야 합니다.
로그 모드를 조회한 후 noarchive 상태이면 반드시 archive 상태로 변경합니다.
강제 로그 적용 모드 활성화
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER DATABASE FORCE LOGGING;
ALTER SYSTEM SWITCH LOGFILE; |
펼치기 | ||
---|---|---|
|
추가적으로 force logging 모드로 전환하여, 모든 작업이 강제적으로 로그로 기록될 수 있도록 합니다.
Flashback Database 활성화 (옵션)
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER DATABASE FLASHBACK ON; |
펼치기 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Flashback Database의 적용 여부는 v$database 뷰에서 확인 가능합니다.
|
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER DATABASE FORCE LOGGING;
ALTER SYSTEM SWITCH LOGFILE; |
펼치기 |
---|
Flashback Database 활성화 (옵션)
코드 블럭 | |||||
---|---|---|---|---|---|
| |||||
ALTER DATABASE FLASHBACK ON;
|
Data Guard를 사용하기 위해서는 반드시 Archive log 모드로 구성이 되어 있어야 합니다.
로그 모드를 조회한 후 noarchive 상태이면 반드시 archive 상태로 변경합니다.
추가적으로 force logging 모드로 전환하여, 모든 작업이 강제적으로 로그로 기록될 수 있도록 합니다.
|
Failover가 발생할 경우, primary를 재사용할 수 있도록 하기 위해 설정합니다.
Standby Database 컨트롤, 파라미터 파일 작업
컨트롤, 파라미터 파일 생성
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/orcl_stb.ctl'; CREATE PFILE='/home/oracle/orcl_stb.ora' FROM SPFILE; |
펼치기 | ||
---|---|---|
|
Standby에서 사용할 데이터베이스 컨트롤 파일과 파라미터 파일을 Primary에서 생성합니다.
Standby 파라미터 파일 수정
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
*.db_unique_name='ORCL_STB' *.service_names='ORCL_STB' |
생성한 orcl_stb.ora 파일에서 Standby 환경에 맞게 파라미터 값들을 수정합니다.
db_unique_name은 반드시 primary와 다르게 지정합니다.
service_name도 primary와 구분하기 위해 다르게 지정합니다.
Standby로 파일 복제
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
scp oracle@ora_act:/home/oracle/orcl_stb.ctl <컨트롤 파일 1번 경로>/control01.ctl cp <컨트롤 파일 1번 경로>/control01.ctl <컨트롤 파일 2번 경로>/control02.ctl scp oracle@ora_act:/home/oracle/orcl_stb.ora /home/oracle/orcl_stb.ora scp oracle@ora_act:$ORACLE_HOME/dbs/orapworcl $ORACLE_HOME/dbs |
펼치기 | ||
---|---|---|
|
Primary에서 작업한 컨트롤 파일과 파라미터 파일을 Standby로 복제합니다.
컨트롤 파일의 경우 파라미터 파일 내에 경로에 맞는 위치로 복제해야 합니다.
Standby Log 파일 생성
코드 블럭 | ||||
---|---|---|---|---|
| ||||
ALTER DATABASE ADD STANDBY LOGFILE ('<기존 redo log 저장 경로>/standby_redo01.log') SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE ('<기존 redo log 저장 경로>/standby_redo02.log') SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE ('<기존 redo log 저장 경로>/standby_redo03.log') SIZE 50M; |
펼치기 | ||
---|---|---|
|
Standby Redo Log를 primary에 생성합니다. 가급적 primary와 동일한 갯수와 사이즈로 생성하도록 합니다.
네트워크 설정
Standby의 listener.ora 파일 생성
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ora_stb)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL_STB) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = orcl) ) ) ADR_BASE_LISTENER = /u01/app/oracle |
Standby 쪽의 listener.ora 파일은 아래와 같습니다.
tnsname.ora 설정
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ora_act)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) ORCL_STB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ora_stb)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL_STB) ) ) |
tnsnames.ora 파일의 내용을 설정합니다.
Primary와 Standby DB에 접속 정보가 저장되며, Primary와 Standby 노드 모두 같은 내용을 사용합니다.
저장 위치는 $ORACLE_HOME/network/admin/tnsnames.ora 입니다.
데이터베이스 복제
Standby Database 인스턴스 기동
코드 블럭 | ||||
---|---|---|---|---|
| ||||
sqlplus / as sysdba startup nomount pfile='/home/oracle/orcl_stb.ora'; |
펼치기 | ||
---|---|---|
|
데이터베이스 복제를 위해 Standby 인스턴스를 복제한 파라미터 파일로 기동합니다.
RMAN 접속
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
rman TARGET sys/oracle@ORCL AUXILIARY sys/oracle@ORCL_STB |
펼치기 | ||
---|---|---|
|
RMAM으로 primary 데이터베이스와 standby 인스턴스를 접속합니다.
Primary는 target으로, standby는 auxiliary로 접속합니다.
Primary나 standby 어느 곳에서 접속해도 됩니다.
Standby로 데이터베이스 복제
코드 블럭 | ||||
---|---|---|---|---|
| ||||
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER SPFILE SET db_unique_name='ORCL_STB' COMMENT 'Is standby' SET LOG_ARCHIVE_DEST_2='SERVICE=ORCL ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL' SET FAL_SERVER='ORCL' COMMENT 'Is primary' NOFILENAMECHECK; |
펼치기 | ||
---|---|---|
|
Duplicate target database 명령을 이용해 primary 데이터베이스를 standby로 복제합니다.