1. 아카이브 로그 환경 설정
A) Data Guard를 위한 아카이브 로그 파라미터 설정
sys 유저로 primary에서 수행
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=([primary 글로벌 DB명],[standby 글로벌 DB명])'; -- ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(TESTDB,TESTDB_STBY)'; System altered.
B) 아카이브 로그 모드 활성화
sys 유저로 primary에서 수행
ARCHIVE LOG LIST SHUTDOWN IMMEDIATE STARTUP MOUNT ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; SELECT log_mode FROM v$database;
SQL> ARCHIVE LOG LIST Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 14 Next log sequence to archive 16 Current log sequence 16
C) 강제 로그 적용 모드 활성
sys 유저로 primary에서 수행
ALTER DATABASE FORCE LOGGING; ALTER SYSTEM SWITCH LOGFILE; SELECT FORCE_LOGGING FROM V$DATABASE;
SQL> ALTER DATABASE FORCE LOGGING; Database altered. SQL> SELECT FORCE_LOGGING FROM V$DATABASE; FORCE_LOGGING -------------------------------------------------------------------------------- YES
2. 파라미터 설정
A) DB명 관련 파라미터 조회
DB name 파라미터 값 조회
SELECT name, db_unique_name FROM v$database;
SQL> SELECT name, db_unique_name FROM v$database; NAME DB_UNIQUE_NAME --------------------------- -------------------- TESTDB TESTDB
B) Data Guard 관련 파라미터 (Fetch Archive Log, Standby File Management) 설정
sys 유저로 primary에서 수행
ALTER SYSTEM SET FAL_CLIENT=[primary 글로벌 DB명]; ALTER SYSTEM SET FAL_SERVER=[standby 글로벌 DB명]; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> ALTER SYSTEM SET FAL_CLIENT=TESTDB; System altered. SQL> ALTER SYSTEM SET FAL_SERVER=TESTDB_STBY; System altered. SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO; System altered.
C) Standby Redo 로그 추가
Standby Redo 그룹 생성 (primary와 동일한 갯수와 사이즈로 생성)
ALTER DATABASE ADD STANDBY LOGFILE THREAD [THREAD 번호] GROUP [그룹 번호] ('[로그 파일 경로 및 파일 이름]') SIZE [로그 파일 크기];
SQL> select THREAD#, f.GROUP#, TYPE, BYTES/1024/1024 mb, MEMBER from v$logfile f, v$log l where l.GROUP#(+) = f.GROUP# order by 1, 2; THREAD# GROUP# TYPE MB MEMBER ---------- ---------- --------------------- ---------- -------------------------------------------------------------------------------- 1 1 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_1.262.1165255269 1 1 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_1.257.1165255269 1 2 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_2.263.1165255269 1 2 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_2.259.1165255269 1 3 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_3.264.1165255269 1 3 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_3.258.1165255269 2 4 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_4.267.1165255725 2 4 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_4.260.1165255725 2 5 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_5.268.1165255725 2 5 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_5.261.1165255725 2 6 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_6.269.1165255725 2 6 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_6.262.1165255727 12 rows selected. SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 2 GROUP 11 ('+FRA','+DATA') size 200M, 3 GROUP 12 ('+FRA','+DATA') size 200M, 4 GROUP 13 ('+FRA','+DATA') size 200M, 5 GROUP 14 ('+FRA','+DATA') size 200M; Database altered. SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 2 GROUP 15 ('+FRA','+DATA') size 200M, 3 GROUP 16 ('+FRA','+DATA') size 200M, 4 GROUP 17 ('+FRA','+DATA') size 200M, 5 GROUP 18 ('+FRA','+DATA') size 200M; SQL> select THREAD#, f.GROUP#, TYPE, BYTES/1024/1024 mb, MEMBER from v$logfile f, v$log l where l.GROUP#(+) = f.GROUP# order by 1, 2; THREAD# GROUP# TYPE MB MEMBER ---------- ---------- --------------------- ---------- -------------------------------------------------------------------------------- 1 1 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_1.262.1165255269 1 1 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_1.257.1165255269 1 2 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_2.263.1165255269 1 2 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_2.259.1165255269 1 3 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_3.264.1165255269 1 3 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_3.258.1165255269 2 4 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_4.267.1165255725 2 4 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_4.260.1165255725 2 5 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_5.268.1165255725 2 5 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_5.261.1165255725 2 6 ONLINE 200 +DATA/TESTDB/ONLINELOG/group_6.269.1165255725 2 6 ONLINE 200 +FRA/TESTDB/ONLINELOG/group_6.262.1165255727 11 STANDBY +FRA/TESTDB/ONLINELOG/group_11.276.1165414987 11 STANDBY +DATA/TESTDB/ONLINELOG/group_11.271.1165414987 12 STANDBY +FRA/TESTDB/ONLINELOG/group_12.277.1165414987 12 STANDBY +DATA/TESTDB/ONLINELOG/group_12.272.1165414987 13 STANDBY +DATA/TESTDB/ONLINELOG/group_13.273.1165414989 13 STANDBY +FRA/TESTDB/ONLINELOG/group_13.278.1165414987 14 STANDBY +FRA/TESTDB/ONLINELOG/group_14.279.1165414989 14 STANDBY +DATA/TESTDB/ONLINELOG/group_14.274.1165414989 15 STANDBY +FRA/TESTDB/ONLINELOG/group_15.280.1165415003 15 STANDBY +DATA/TESTDB/ONLINELOG/group_15.275.1165415003 16 STANDBY +DATA/TESTDB/ONLINELOG/group_16.276.1165415005 16 STANDBY +FRA/TESTDB/ONLINELOG/group_16.281.1165415003 17 STANDBY +FRA/TESTDB/ONLINELOG/group_17.282.1165415005 17 STANDBY +DATA/TESTDB/ONLINELOG/group_17.277.1165415005 18 STANDBY +FRA/TESTDB/ONLINELOG/group_18.283.1165415005 18 STANDBY +DATA/TESTDB/ONLINELOG/group_18.278.1165415005 28 rows selected.
3. Standby 환경 설정
A) 디렉토리 생성
oracle 유저로 standby 서버에서 수행
mkdir -p [데이터 파일 저장 경로] mkdir -p [FRA 할당 경로] mkdir -p [adump 파라미터 경로]
[TESTDB@busan:~] $ mkdir -p $ORACLE_BASE/admin/TESTDB/adump
B) 패스워드 파일 복제
oracle 유저로 primary에서 standby로 전송 (또는 standby에서 생성)
scp $ORACLE_HOME/dbs/[패스워드 파일] [oracle 유저]@[standby 호스트명]:[$ORACLE_HOME/dbs 경로] --orapwd file=$ORACLE_HOME/dbs/orapw[DB명] password=[sys 계정 암호] entries=10 format=12
[+ASM1@seoul1:~] $ srvctl config database -d TESTDB 데이터베이스 고유 이름: TESTDB 데이터베이스 이름: TESTDB Oracle 홈: /u01/app/oracle/db/19c Oracle 사용자: oracle Spfile: +DATA/TESTDB/PARAMETERFILE/spfile.270.1165255727 비밀번호 파일: +DATA/TESTDB/PASSWORD/pwdtestdb.256.1165255157 도메인: 시작 옵션: open 정지 옵션: immediate 데이터베이스 롤: PRIMARY 관리 정책: AUTOMATIC 서버 풀: 디스크 그룹: FRA,DATA 마운트 위치 경로: 서비스: 유형: RAC 시작 동시성: 정지 동시성: OSDBA 그룹: dba OSOPER 그룹: dba 데이터베이스 인스턴스: TESTDB1,TESTDB2 구성된 노드: seoul1,seoul2 CSS 중요: no CPU 개수: 0 메모리 대상: 0 최대 메모리: 0 데이터베이스 서비스에 대한 기본 네트워크 번호: 관리자 관리 데이터베이스입니다. [+ASM1@seoul1:~] $ asmcmd ASMCMD> pwcopy +DATA/TESTDB/PASSWORD/pwdtestdb.256.1165255157 /home/oracle/orapwTESTDB ASMCMD> exit The authenticity of host 'busan-dg (100.10.16.185)' can't be established. ED25519 key fingerprint is SHA256:vlcfe27dSJBhwko+AgNB9+1GBneaMYImhftmv4axGIg. This host key is known by the following other names/addresses: ~/.ssh/known_hosts:9: 192.168.12.185 Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'busan-dg' (ED25519) to the list of known hosts. oracle@busan-dg's password: orapwTESTDB 100% 2048 4.8MB/s 00:00
C) 임시 파라미터 파일 생성
standby 서버에서 oracle 계정으로 홈 경로(또는 적절한 경로)에 생성
cat > ~oracle/[standby 글로벌 DB명].ora *.db_name='[DB명]'
[TESTDB@busan:~] $ cat > ~oracle/TESTDB_STBY.ora *.db_name='TESTDB' ^C
{}