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;
[oracle@orcl ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 13 14:14:20 2024
Version 19.11.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0

SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcl_stby)';

System altered.

SQL> show parameter LOG_ARCHIVE_CONFIG

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
log_archive_config                   string                            DG_CONFIG=(orcl,orcl_stby)


Data Guard 운영에 필요한 아카이브 관련 파라미터를 설정합니다.

  • LOG_ARCHIVE_CONFIG : 리두 로그를 원격 대상으로 보내고 원격 리두 로그를 수신하며, Data Guard 구성에서 각 데이터베이스의 DB_UNIQUE_NAME을 지정합니다.
  • LOG_ARCHIVE_FORMAT : 아카이브 로그 파일명의 포맷을 지정합니다.

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     10
Next log sequence to archive   12
Current log sequence           12

SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------------------------------
ARCHIVELOG


Data Guard  구축하기 위해서는 반드시 archive log 모드로 운영이 되어야 합니다.

로그 모드를 조회한 후 noarchive 모드이면 반드시 archive 모드로 변경합니다.

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> ALTER SYSTEM SWITCH LOGFILE;

System altered.

SQL> SELECT FORCE_LOGGING FROM V$DATABASE;

FORCE_LOGGING
--------------------------------------------------------------------------------
YES


추가적으로 force logging 모드로 전환하여, 모든 작업이 강제적으로 로그로 기록될 수 있도록 합니다.

2. 파라미터 설정

A) DB명 관련 파라미터 조회

DB name 파라미터 값 조회
show parameter db_name
show parameter db_unique_name
SELECT db_unique_name FROM v$database;
SQL> show parameter db_name

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_name                              string                            orcl
SQL> show parameter db_unique_name

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
db_unique_name                       string                            orcl

SQL> SELECT db_unique_name FROM v$database;

DB_UNIQUE_NAME
------------------------------------------------------------------------------------------
orcl


db_unique_name은 Primary와 Standby가 달라야 합니다.

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=orcl;

System altered.

SQL> ALTER SYSTEM SET FAL_SERVER=orcl_stby;

System altered.

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

System altered.

SQL> show parameter fal_client

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
fal_client                           string                            ORCL

SQL> show parameter fal_server

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
fal_server                           string                            ORCL_STBY

SQL> show parameter standby_file_management

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
standby_file_management              string                            AUTO


Data Guard 환경 구성을 위한 파라미터를 설정합니다.

  • FAL_CLIENT : FAL(fetch archive log) 클라이언트를 참조하기 위해 FAL_SERVER 초기화 매개 변수를 통해 구성된 FAL 클라이언트 이름을 지정합니다.
  • FAL_SERVER : Standby 데이터베이스에 대한 FAL(fetch archive log) 서버를 지정합니다.
  • STANDBY_FILE_MANAGEMENT : Physical Standby에 automatic standby file management를 활성화 또는 비활성화합니다. 자동 대기 파일 관리를 사용하면 primary 데이터베이스의 파일 추가 및 삭제 작업이 standby 데이터베이스에도 적용됩니다.


C) Standby Redo 로그 추가

Standby Redo 그룹 생성 (primary와 동일한 갯수와 사이즈로 생성)
ALTER DATABASE ADD STANDBY LOGFILE GROUP [그룹 번호] ('[로그 파일 경로 및 파일 이름]') SIZE [로그 파일 크기];
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 101 ('/oradata/ORCL/standby_redo01.log') SIZE 200M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 102 ('/oradata/ORCL/standby_redo02.log') SIZE 200M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 103 ('/oradata/ORCL/standby_redo03.log') SIZE 200M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 104 ('/oradata/ORCL/standby_redo04.log') SIZE 200M;

Database altered.

SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 /oradata/ORCL/redo01.log 
         2 /oradata/ORCL/redo02.log
         3 /oradata/ORCL/redo03.log
       101 /oradata/ORCL/standby_redo01.log
       102 /oradata/ORCL/standby_redo02.log
       103 /oradata/ORCL/standby_redo03.log
       104 /oradata/ORCL/standby_redo04.log
 
7 rows selected.


Standby Redo Log를 생성합니다. 기존의 그룹 수와 같거나 많게 추가합니다. (그룹 1개 추가 권장)

3. Standby 환경 설정

A) 디렉토리 생성

oracle 유저로 standby 서버에서 수행
mkdir -p [데이터 파일 저장 경로]
mkdir -p [FRA 할당 경로]
mkdir -p [adump 파라미터 경로]
[root@busan ~]# mkdir -p /oradata/ORCL
[root@busan ~]# mkdir -p /oradata/fast_recovery_area/ORCL
[root@busan ~]# mkdir -p /u01/app/oracle/admin/orcl/adump
[root@busan ~]# chown -R oracle:dba /oradata
[root@busan ~]# chown -R oracle:dba /u01/app/oracle/admin


Standby 노드에 필요한 디렉토리를 생성합니다.

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
[oracle@orcl ~]$ scp $ORACLE_HOME/dbs/orapworcl oracle@busan_dg:/u01/app/oracle/product/19c/db_1/dbs
The authenticity of host 'busan_dg (10.0.5.72)' can't be established.
ECDSA key fingerprint is SHA256:OlbI4iHerMUO4ApsJ9mAUg/47+LTgX8fEVdJlAOctF0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'busan_dg,10.0.5.72' (ECDSA) to the list of known hosts.
oracle@busan_dg's password:
orapworcl                                          100% 2048   827.0KB/s   00:00


Primary 와 동일한 암호로 설정되어야 하며, 가급적 새로 생성하는 것보다 primary로부터 복제해와서 사용하는 것을 권장합니다.

C) 임시 파라미터 파일 생성

standby 서버에서 oracle 계정으로 홈 경로(또는 적절한 경로)에 생성
cat > ~oracle/[standby 글로벌 DB명].ora
*.db_name='[DB명]'
[oracle@orcl ~]$ cat > ~oracle/orcl_stby.ora
*.db_name='orcl'
^C


Standby 데이터베이스에서 임시로 사용할 파라미터 파일을 생성합니다.

간단하게 db_name만 지정해도 충분합니다.

  • 레이블 없음