버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

아카이브 로그 환경 설정

Data Guard를 위한 아카이브 로그 파라미터 설정

코드 블럭
titlesys 유저로 primary에서 수행
linenumberstrue
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 : 아카이브 로그 파일명의 포맷을 지정합니다.

아카이브 로그 모드 활성화

코드 블럭
titlesys 유저로 primary에서 수행
linenumberstrue
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 모드로 변경합니다.

강제 로그 강제 로그 적용 모드 활성

코드 블럭
titlesys 유저로 primary에서 수행
linenumberstrue
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 모드로 전환하여, 모든 작업이 강제적으로 로그로 기록될 수 있도록 합니다.

파라미터 설정

DB명 관련 파라미터 조회

코드 블럭
titleDB name 파라미터 값 조회
linenumberstrue
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가 달라야 합니다.

Data Guard 관련 파라미터 (Fetch Archive Log, Standby File Management) 설정

코드 블럭
titlesys 유저로 primary에서 수행
linenumberstrue
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 데이터베이스에도 적용됩니다.


Standby Redo 로그 추가

코드 블럭
titleStandby Redo 그룹 생성 (primary와 동일한 갯수와 사이즈로 생성)
linenumbers

Standby Redo 로그 추가

코드 블럭
titleStandby Redo 그룹 생성 (primary와 동일한 갯수와 사이즈로 생성)
linenumberstrue
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> select member from v$logfile;

MEMBER
 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
/oradata/ORCL/standby_redo01.log
/oradata/ORCL/standby_redo02.log
/oradata/ORCL/standby_redo03.log

6 rows selected.

Standby 환경 설정

디렉토리 생성

코드 블럭
titleoracle 유저로 standby 서버에서 수행
linenumberstrue
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

       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개 추가 권장)

Standby 환경 설정

디렉토리 생성

코드 블럭
titleoracle 유저로 standby 서버에서 수행
linenumberstrue
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 노드에 필요한 디렉토리를 생성합니다.

패스워드 파일 복제

코드 블럭
titleoracle 유저로 primary에서 standby로 전송 (또는 standby에서 생성)
linenumberstrue
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

패스워드 파일 생성

코드 블럭
titleoracle 유저로 standby 서버에서 수행
linenumberstrue
orapwd file=$ORACLE_HOME/dbs/orapw[DB명] password=[sys 계정 암호] entries=10 format=12
펼치기
서식 미적용
[oracle@orcl ~]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle entries=10 format=12

[oracle@orcl ~]$ ls $ORACLE_HOME/dbs
init.ora  orapworcl


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

임시 파라미터 파일 생성

코드 블럭
titlestandby 서버에서 oracle 계정으로 홈 경로(또는 적절한 경로)에 생성
linenumberstrue
cat > ~oracle/[standby 글로벌 DB명].ora
*.db_name='[DB명]'
펼치기
서식 미적용
[oracle@orcl ~]$ cat > ~oracle/orcl_stby.ora
*.db_name='orcl'
^C


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

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