DBCA를 사용하여 RAC 대기 데이터베이스 생성 [19c 버전]

DBCA는 대부분의 Oracle 구성 요소와 동일한 방식으로 발전하며 12.2 버전부터 DBCA를 사용하여 대기 데이터베이스를 직접 생성할 수 있습니다.

시작하기 전에 버전 제한을 확인하는 것이 중요합니다. 예를 들어 12.2에서는 단일 인스턴스 데이터베이스만 생성할 수 있습니다(Frank Pachot[ https://blog.dbi-services.com/12cr2-dbca-can-create-a-standby-database/]의 이 기사 참조). 19c의 이 게시물에서 볼 수 있습니다.

간단하게 하기 위해 이미 Archivelog 모드에 있는 기본 데이터베이스를 사용하고 있으며 대기 데이터베이스를 가질 준비가 되어 있습니다.

INSTANCE HOST_NAME               DATABASE_ROLE
-------- ----------------------- ---------------
db192    rac1-node2.raclab.local PRIMARY      
db191    rac1-node1.raclab.local PRIMARY      

기본 사이트에서 가장 먼저 해야 할 일은 tnsnames 파일에 새 대기 이름을 추가하는 것입니다.

[oracle@rac1-node1 ~]$ nano /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
[...]

DBCADG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbcadg)
    )
  )

이제 Standby에서는 항상 대기를 생성하려는 환경 변수를 설정하려고 시도합니다.

[oracle@rac2-node1 ~]$ . oraenv
ORACLE_SID = [oracle] ? dbcadg1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19.3.0/dbhome_1

이것은 대기를 생성하는 데 사용할 수 있는 명령의 예입니다.
"primaryDBConnectionString"매개변수에 "tnsnames"이름을 사용할 수 있어야 하지만 몇 가지 문제가 있어 기본 노드를 직접 가리키기로 결정했습니다.

dbca -silent    \
-createDuplicateDB  \
-gdbName db19    \
-sid dbcadg    \
-initParams db_create_file_dest=+DATA,db_recovery_file_dest=+RECO \
-primaryDBConnectionString rac1-node1:1521/db19    \
-sysPassword "Welcome1" \
-createAsStandby    \
-adminManaged    \
-databaseConfigType RAC    \
-nodelist rac2-node1,rac2-node2 -dbUniqueName dbcadg

대기를 생성하자

[oracle@rac2-node1 ~]$ dbca -silent    \
> -createDuplicateDB    \
> -gdbName db19    \
> -sid dbcadg    \
> -initParams db_create_file_dest=+DATA,db_recovery_file_dest=+RECO \
> -primaryDBConnectionString rac1-node1:1521/db19    \
> -sysPassword "Welcome1" \
> -createAsStandby    \
> -adminManaged    \
> -databaseConfigType RAC    \
> -nodelist rac2-node1,rac2-node2 -dbUniqueName dbcadg
Prepare for db operation
22% complete
Listener config step
44% complete
Auxiliary instance creation
67% complete
RMAN duplicate
89% complete
Post duplicate database operations
100% complete

Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/dbcadg/dbcadg.log" for further details.
[oracle@rac2-node1 ~]$  

더 자세한 진행 상황을 원하면(시스템이 실제로 수행하는 작업을 확인하는 것이 좋습니다) dbca cfgtoollogs 디렉토리를 확인하십시오.
(일반적으로 "/u01/app/oracle/cfgtoollogs/dbca/DB_NAME/")

[oracle@rac2-node1 ~]$ tail -f /u01/app/oracle/cfgtoollogs/dbca/dbcadg/trace.log_2020-08-14_01-23-33PM
[Thread-611] [ 2020-08-14 13:28:10.974 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=
[Thread-611] [ 2020-08-14 13:28:10.975 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=executing command: SET NEWNAME
[Thread-611] [ 2020-08-14 13:28:10.996 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=
[Thread-611] [ 2020-08-14 13:28:11.032 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=Starting restore at 14-AUG-20
[Thread-611] [ 2020-08-14 13:28:11.042 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=using channel ORA_AUX_DISK_1
[Thread-611] [ 2020-08-14 13:28:11.290 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=
[Thread-611] [ 2020-08-14 13:28:11.753 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: starting datafile backup set restore
[Thread-611] [ 2020-08-14 13:28:11.754 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: using network backup set from service rac1-node1:1521/db19

[....]

[Thread-611] [ 2020-08-14 13:31:46.126 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=contents of Memory Script:
[Thread-611] [ 2020-08-14 13:31:46.127 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output={
[Thread-611] [ 2020-08-14 13:31:46.128 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=   sql clone "create spfile from memory";
[Thread-611] [ 2020-08-14 13:31:46.130 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=   shutdown clone immediate;
[Thread-611] [ 2020-08-14 13:31:46.131 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=   startup clone nomount;
[Thread-611] [ 2020-08-14 13:31:46.132 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=   restore clone from service  'rac1-node1:1521/db19' standby controlfile;
[Thread-611] [ 2020-08-14 13:31:46.134 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=}
[Thread-611] [ 2020-08-14 13:31:46.135 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=executing Memory Script
[Thread-611] [ 2020-08-14 13:31:46.136 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=

[....]

[Thread-611] [ 2020-08-14 13:33:19.226 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: restoring datafile 00001 to +DATA
[Thread-611] [ 2020-08-14 13:34:34.359 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:16
[Thread-611] [ 2020-08-14 13:34:34.428 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: starting datafile backup set restore
[Thread-611] [ 2020-08-14 13:34:34.429 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: using network backup set from service rac1-node1:1521/db19
[Thread-611] [ 2020-08-14 13:34:34.677 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
[Thread-611] [ 2020-08-14 13:34:34.678 BST ] [RMANEngine.readSqlOutput:997]  Log RMAN Output=channel ORA_AUX_DISK_1: restoring datafile 00003 to +DATA

그리고 짜잔!, 새로운 대기 데이터베이스가 생성되었습니다.

oracle@rac2-node1 ~$  srvctl status database -d dbcadg -v
Instance dbcadg1 is running on node rac2-node1. Instance status: Open,Readonly.
Instance dbcadg2 is running on node rac2-node2. Instance status: Open,Readonly.
oracle@rac2-node1 ~$ 

이제 고려해야 할 몇 가지 사항이 있습니다(마지막에 출력을 남김).
  • 대기가 기본 역할로 CRS에 등록됩니다(옵션을 놓쳤는지 확실하지 않음).
  • 대기에 대해 tnsnames.ora 항목이 추가되지 않음
  • 같은 이름으로 Standby를 생성하지 않으면 DG 브로커 구성이 잘못된 디렉토리에 생성됩니다(추가 옵션이 있을 수 있지만..)
  • Data Guard Broker가 기본에서 사전에 true로 설정된 경우를 제외하고 시작되지 않음
  • 기본에 아직 없는 경우 대기 Redo가 생성되지 않습니다(그러나 RMAN Ducplicate의 경우에도 마찬가지임).

  • 다른 모든 것과 마찬가지로 어떤 사람들은 RMAN Duplicate 또는 다른 스크립트/메소드를 선호하지만 대기를 생성하는 좋은 방법이라고 생각했으며 중요하다고 생각하는 것은 사용할 수 있는 모든 옵션이 있다는 것입니다. 상황에 따라 올바른 결정

    시스템이 충분히 단순하다면 Ansible과 같이 시스템이 자동으로 생성되도록 추가 옵션이나 스크립트를 추가할 수 있습니다. :)

    좋은 웹페이지 즐겨찾기