참고: https://docs.oracle.com/en-us/iaas/base-database/doc/virtual-machine-db-systems.html
위 내용처럼 만약 구세대(Standard2.x) Shape에서 19.17버전 이하를 사용하고 있다면, 바로 Shape 변경이 되지 않습니다. 따라서 Data Guard를 활용하여 다른 리전에 최신 Shape으로 마이그레이션을 하려면, 19.17버전 이상으로 업그레이를 한 후에 진행하여야 합니다.
여기서는 서울 리전을 Primary, 싱가폴 리전을 Standby로 설정하고 진행합니다. 우선 Primary Database를 다음과 같이 Extreme Performance RAC 2 노드로 준비합니다.
현재 19.17 이하 버전은 OCI에서 제공되고 있지 않은 관계로 가장 낮은 버전인 19.21에 Standard2.x Shape 기반으로 테스트를 진행하였습니다.
최신 버전으로 업그레이드 하기전에 우선 백업을 위한 용도로 Custom Image를 생성합니다.
현재 버전은 19.21.0.0.0 버전이며, 19.24.0.0.0 버전으로 업그레이드를 진행합니다. 업그레이드 가능 버전을 우선 확인합니다.
DB system Patch 원하는 버전 선택 후 Run Precheck 진행합니다. 성공하면 Apply를 합니다. (약 1시간 소요)
Database Patch 원하는 버전 선택 후 Run Precheck 진행합니다. 성공하면 Apply를 합니다. (약 1시간 30분 소요)
다른 리전에 Standby DB를 구성하기 위해서는 리전 간 네트워크 연결을 위한 Remote Peering을 구성하여야 합니다. Remote Peering 구성은 다음 포스팅을 참고합니다.
OCI Remote Peering - 서로 다른 리전간의 VCN 연결하기
Data Guard 구성 전에 우선 Primary Database내의 데이터를 확인합니다.
[oracle@srcdb1 ~]$ sqlplus / as sysdba
SQL*plus: Release 19.0.0.0.0 - Production on Wed Oct 2 10:53:33 2024
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
SQL> show pdb names;
SP2-0158: unknown SHOW option "pdb_names"
SOL> show pab
SP2-0158: unknown SHOW option "pdb"
SQL> show pabs;
CON ID CON NAME OPEN MODE RESTRICTED
------ ------------------------------------ --------- ----------
2 POB$SEED READ ONLY NO
3 SRCPDB READ WRITE NO
SQL> alter session set container = SRCPDB;
Session altered.
SOL> show con name;
CON NAME
SRCPDB
SOL> select count(*) from sample t;
COUNT (* )
----------
10000
Oracle Base Database → DB Systems → DB System Details → Database Details → Data Guard Associations로 이동 후 다음 옵션과 함께 Data Guard를 활성화 합니다.
Total node count: 2 (Primary와 동일하게 2 노드 RAC로 구성)
구성 완료
Switchover는 Primary 데이터베이스와 Standby 데이터베이스의 역할을 서로 바꾸는 과정입니다. 이 과정에서는 데이터 손실이 없으며, 주 데이터베이스에서 계획된 유지보수를 하기 전에 사용할 수 있습니다. 대기 데이터베이스를 주 데이터베이스로 바꾸고 유지보수를 수행한 후 다시 역할을 원래대로 되돌립니다.
Failover는 Primary 데이터베이스가 고장 나거나 접근할 수 없게 되었을 때, Standby 데이터베이스를 Primary 데이터베이스 역할로 전환하는 것입니다. 이 경우, 최대 성능 보호 모드를 사용할 때 약간의 데이터 손실이 발생할 수 있습니다.
Failover는 Primary DB에 장애가 발생했다는 가정하에 수행하는 절차이므로, Standby DB에서 수행합니다. Standby DB가 있는 Singapore 리전에서 Oracle Base Database → DB Systems → DB System Details → Database Details → Data Guard Associations 이동한 후 오른쪽 메뉴 아이큰 클릭하여 Failover를 클릭합니다.
Failover가 완료되면 기존 Primary DB는 Disabled Standy 상태로 Role이 변경되며, 기존 Standby DB가 Primary Role을 갖게 됩니다.
이제 Primary로 전환된 DB로 접속하여 데이터를 확인합니다.
[oracle@srcdg1 ~]$ sqlplus / as sysdba
SQL *plus: Release 19.0.0.0.0 - Production on Fri Oct 4 13:43:46 2024
Version 19.24.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.24.0.0.
SQL> show parameter db name
NAME TYPE VALUE
---------------------- ----------------- -----------
db _name string sredb
SQL> select instance_name, status from v$instance;
INSTANCE NAME STATUS
--------------------- ----------
srcdb1 OPEN
SQL> select database_role, open_ mode from v$database;
DATABASE_ ROLE OPEN MODE
---------------------- -----------
PRIMARY READ WRITE
CON ID CON NAME OPEN MODE RESTRICTED
------ ------------------------------------ --------- ----------
2 POB$SEED READ ONLY NO
3 SRCPDB READ WRITE NO
SQL> alter session set container = SRCPDB;
Session altered.
SOL> show con name;
CON NAME
SRCPDB
SOL> select count(*) from sample t;
COUNT (* )
----------
10000
여기까지 수행하면, 다른 리전으로 최신세대 Shape 기반의 DB를 마이그레이션하는 과정이 완료됩니다. 다음 Switchover 내용은 기존 Primary DB로 원복할 경우를 가정할 때 사용할 수 있습니다.
먼저 Primary Role로 변경된 Singapore 리전 Database에 10만건의 데이터를 추가하였습니다.
SOL> select count(*) from sample t;
COUNT (* )
----------
110000
Singpore 리전에서 Oracle Base Database → DB Systems → DB System Details → Database Details → Data Guard Associations 이동한 후 오른쪽 메뉴 아이큰 클릭하여 Reinstate를 클릭합니다. 이 과정은 기존 Primary DB와 끊어진 Data Guard를 다시 연결하고, Disabled Standby Role을 Standby Role로 변경하는 과정을 수행합니다. Reinstate가 완료되면 Switchover를 수행하여, 다시 Role Change를 합니다.
Reinstate
Switchover
마지막으로 다시 서울 리전에 Primary Role로 복구된 DB에 접속하여 확인합니다.
[oracle@srcdb1 ~]$ sqlplus / as sysdba
SQL *plus: Release 19.0.0.0.0 - Production on Fri Oct 4 13:43:46 2024
Version 19.24.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
Version 19.24.0.0.
SQL> show parameter db name
NAME TYPE VALUE
---------------------- ----------------- -----------
db _name string sredb
SQL> select instance_name, status from v$instance;
INSTANCE NAME STATUS
--------------------- ----------
srcdb1 OPEN
SQL> select database_role, open_ mode from v$database;
DATABASE_ ROLE OPEN MODE
---------------------- -----------
PRIMARY READ WRITE
CON ID CON NAME OPEN MODE RESTRICTED
------ ------------------------------------ --------- ----------
2 POB$SEED READ ONLY NO
3 SRCPDB READ WRITE NO
SQL> alter session set container = SRCPDB;
Session altered.
SOL> show con name;
CON NAME
SRCPDB
SOL> select count(*) from sample t;
COUNT (* )
----------
110000
이 글은 개인적으로 얻은 지식과 경험을 작성한 글로 내용에 오류가 있을 수 있습니다. 또한 글 속의 의견은 개인적인 의견으로 특정 회사를 대변하지 않습니다.
Donghu Kim DATAPLATFORM
oci database migration