數(shù)據(jù)庫管理141期 2024-01-29
數(shù)據(jù)庫管理-第141期 DG PDB - Oracle DB 23c(20240129)
作者:胖頭魚的魚缸(尹海文)
Oracle ACE Associate: Database(Oracle與MySQL)
網(wǎng)思科技 DBA總監(jiān)
10年數(shù)據(jù)庫行業(yè)經(jīng)驗(yàn),現(xiàn)主要從事數(shù)據(jù)庫服務(wù)工作
擁有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等認(rèn)證
墨天輪MVP、認(rèn)證技術(shù)專家,ITPUB認(rèn)證專家,OCM講師
圈內(nèi)擁有“總監(jiān)”、“保安”、“國產(chǎn)數(shù)據(jù)庫最大敵人”等稱號,非著名社恐(社交恐怖分子)
公眾號:胖頭魚的魚缸;CSDN:胖頭魚的魚缸(尹海文);墨天輪:胖頭魚的魚缸;ITPUB:yhw1809。
除授權(quán)轉(zhuǎn)載并標(biāo)明出處外,均為“非法”抄襲。
首先,這應(yīng)該是我一月份最后一片文章了(不保證),本期回歸一下技術(shù),重新轉(zhuǎn)頭把去年Oracle 23c系列文章中高可用這部分的坑給填了,深入捯飭一下DG PDB。
1 概念
從Oracle DB 23c開始,引入了DG PDB,即在原來CDB級別DG的基礎(chǔ)上,增加了PDB級別的DG,這種配置下CDB徹底淪為PDB的底座,PDB可以在任意CDB之間構(gòu)建DG架構(gòu)而不用考慮CDB的角色問題;相較于21c的功能,現(xiàn)在PDB備庫可以為只讀狀態(tài)了。
DG PDB的好處可以充分利用主備端的硬件資源,讓每個(gè)CDB都能承載生產(chǎn)PDB和災(zāi)備PDB。
2 環(huán)境說明
這里選擇了最新版本的Oracle Linux9.3作為操作系統(tǒng),倆CDB均已開啟歸檔模式:

本次操作會(huì)根據(jù)實(shí)際情況進(jìn)行,其中pdbprod1將在對端做DG PDB。
3 操作
3.1 數(shù)據(jù)庫配置
倆CDB均執(zhí)行:
alter system set dg_broker_start=true;
alter system set standby_file_management=auto;
alter database flashback on;
prodcdb:
alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=prodcdb' scope=both;
proddg:
alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=proddg' scope=both;
倆CDB需要使用同樣的密碼文件。
3.2 配置tnsname
/u01/app/oracle/product/23.0.0/dbhome_1/network/admin/tnsnames.ora
PRODCDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.101)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = prodcdb) ) ) PRODDG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.201)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = proddg) ) )

3.3 配置強(qiáng)制日志
alter database force logging;
3.4 DG配置

dgmgrl sys/oracle@prodcdb
dgmgrl>
CREATE CONFIGURATION 'dgconf_1' AS PRIMARY DATABASE IS 'prodcdb' CONNECT IDENTIFIER IS prodcdb;
dgmgrl sys/oracle@proddg
dgmgrl>
CREATE CONFIGURATION 'dgconf_2' AS PRIMARY DATABASE IS 'proddg' CONNECT IDENTIFIER IS proddg;


3.5 DG配置建立聯(lián)系
dgmgrl sys/oracle@prodcdb
dgmgrl>
ADD CONFIGURATION 'dgconf_2' CONNECT IDENTIFIER IS proddg;
show configuration;
dgmgrl sys/oracle@proddg
dgmgrl>
show configuration;


3.6 啟用所有DG配置
dgmgrl sys/oracle@prodcdb
dgmgrl>
enable configuration all;
show configuration;
dgmgrl sys/oracle@proddg
dgmgrl>
show configuration;


3.7 啟用DG PDB
dgmgrl sys/oracle@prodcdb
dgmgrl>
EDIT CONFIGURATION PREPARE DGPDB;

3.8 創(chuàng)建源PDB的DG配置
dgmgrl sys/oracle@proddg dgmgrl> add pluggable database pdbdg1 at proddg source is pdbprod1 at prodcdb PDBFileNameConvert is "'/u01/app/oracle/oradata/PRODCDB','/u01/app/oracle/oradata/PRODDG'";

3.9 拷貝pdbprod1文件至proddg
prodcdb:
alter session set container=pdbprod1;
alter database begin backup;
scp -r /u01/app/oracle/oradata/PRODCDB/100D0E78F6B3C90AE063650A0A0ACA90/ db23cdg:/u01/app/oracle/oradata/PRODDG/

prodcdb:
alter session set container=pdbprod1;
alter database end backup;
這里同樣可以使用rman duplicate pluggable database來復(fù)制文件,這里不做演示。
3.10 目標(biāo)PDB添加standby log
alter session set container=pdbdg1;
alter database add standby logfile size 200m;
alter database add standby logfile size 200m;
alter database add standby logfile size 200m;
alter database add standby logfile size 200m;
3.11 驗(yàn)證并啟動(dòng)DG PDB
dgmgrl sys/oracle@proddg dgmgrl> VALIDATE PLUGGABLE DATABASE pdbdg1 at proddg;

dgmgrl sys/oracle@proddg
dgmgrl>
edit PLUGGABLE DATABASE pdbdg1 at proddg set state='APPLY-ON';
show configuration;
show pluggable database pdbdg1 at proddg;
show pluggable database pdbprod1 at prodcdb;

3.12 切換PDB角色
dgmgrl sys/oracle@proddg dgmgrl> VALIDATE PLUGGABLE DATABASE pdbdg1 at proddg; switchover to pluggable database pdbdg1 at proddg;




這時(shí)候新的備庫會(huì)出現(xiàn)異常,因?yàn)闆]有添加standby log,需要處理。
3.13 源庫PDB添加standby log
dgmgrl sys/oracle@proddg
dgmgrl>
edit PLUGGABLE DATABASE pdbprod1 at prodcdb set state='APPLY-OFF';
alter session set container=pdbprod1;
alter database add standby logfile size 200m;
alter database add standby logfile size 200m;
alter database add standby logfile size 200m;
alter database add standby logfile size 200m;
dgmgrl sys/oracle@proddg
dgmgrl>
edit PLUGGABLE DATABASE pdbprod1 at prodcdb set state='APPLY-ON';
show pluggable database pdbprod1 at prodcdb;

3.14 開啟備庫查詢
alter session set container=pdbprod1;
alter pluggable database open;
dgmgrl>
show pluggable database pdbprod1 at prodcdb;


3.15 回切測試
dgmgrl>
switchover to pluggable database pdbprod1 at prodcdb;
show pluggable database pdbprod1 at prodcdb;
show pluggable database pdbdg1 at proddg;
show configuration;

至此DG PDB搭建完成。
總結(jié)
使用DG PDB初始化搭建還是比較繁瑣的,但是不需要全量CDB級別同步數(shù)據(jù),還是比較方便,切換也很方便。
老規(guī)矩,知道寫了些啥。
參考文檔:Scenarios for Using DGMGRL with a DG PDB Configuration (23c)(ttps://docs.oracle.com/en/database/oracle/oracle-database/23/dgbkr/scenarios-using-dgmgrl-dg-pdb-configuration-23c.html)




