首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >23ai:DG PDB

23ai:DG PDB

作者头像
胖头鱼的鱼缸
发布2026-07-02 14:24:48
发布2026-07-02 14:24:48
1350
举报

数据库管理-第358期 23ai:DG PDB(20250818)

胖头鱼的鱼缸.png
胖头鱼的鱼缸.png

在DG PDB - Oracle DB 23c中,在Oracle 23c(内测版23.4)上部署过一次DG PDB,趁着内测版本更新到了23.9,且相较于之前官方文档已经完善,因此也在23ai上也再次部署一下DG PDB。

1 环境

image.png
image.png

DBCA建库过程中已按照默认方式完成以下配置:

  • 创建空CDB(无PDB)
  • 开启OMF
  • 开启指定FRA
  • 开启归档日志

后续在dbaas1中创建对应PDB。

2 配置DG PDB

2.1 配置tnsnames

代码语言:javascript
复制
vim /u01/app/oracle/product/23.0.0/dbhome_1/network/admin/tnsnames.ora
DBAAS1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.151)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbaas1)
    )
  )

DBAAS2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.152)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbaas2)
    )
  )

2.2 复制密码文件

两个CDB需要使用相同的密码文件,在oracle239-01节点执行:

代码语言:javascript
复制
scp /u01/app/oracle/product/23.0.0/dbhome_1/dbs/orapwdbaas1 oracle239-02:/u01/app/oracle/product/23.0.0/dbhome_1/dbs/orapwdbaas2

2.3 数据库配置

两个CDB均需要执行:

代码语言:javascript
复制
alter system set dg_broker_start=true;
alter system set standby_file_management=auto;
alter database flashback on;
alter database force logging;

不同CDB执行:

代码语言:javascript
复制
dbaas1:
alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbaas1' scope=both;

dbaas2:
alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dbaas2' scope=both;
image.png
image.png
image.png
image.png

2.4 创建DG配置

代码语言:javascript
复制
dgmgrl sys@dbaas1
代码语言:javascript
复制
DGMGRL> CREATE CONFIGURATION 'dgconf_1' AS PRIMARY DATABASE IS 'dbaas1' CONNECT IDENTIFIER IS dbaas1;
image.png
image.png
代码语言:javascript
复制
dgmgrl sys@dbaas2
代码语言:javascript
复制
DGMGRL> CREATE CONFIGURATION 'dgconf_2' AS PRIMARY DATABASEIS 'dbaas2' CONNECT IDENTIFIER IS dbaas2;
image.png
image.png

2.5 添加(关联)DG配置

代码语言:javascript
复制
dgmgrl sys@dbaas1
代码语言:javascript
复制
DGMGRL> ADD CONFIGURATION 'dgconf_2' CONNECT IDENTIFIER IS dbaas2;
image.png
image.png

2.6 启用DG配置并检查

代码语言:javascript
复制
DGMGRL> ENABLE CONFIGURATION ALL; 
image.png
image.png
image.png
image.png

2.7 启用DG PDB

代码语言:javascript
复制
DGMGRL> EDIT CONFIGURATION PREPARE DGPDB;
image.png
image.png

2.8 创建源PDB的DG配置

代码语言:javascript
复制
DGMGRL> ADD PLUGGABLE DATABASE 'proddg' AT dbaas2 SOURCE is 'proddb' AT dbaas1;
image.png
image.png

2.8 复制数据文件

检查dbaas1中proddg的文件编号:

代码语言:javascript
复制
select file# from v$datafile;
image.png
image.png
代码语言:javascript
复制
rman target sys@dbaas1 auxiliary sys@dbaas2
代码语言:javascript
复制
run {
allocate channel ch1 type disk;
backup as copy reuse datafile 12,13,14 auxiliary format NEW;
}
image.png
image.png

这里需要明确恢复文件的路径与文件名。

2.9 修改proddg数据文件路径与文件名

检查数据文件:

代码语言:javascript
复制
alter session set container=proddg;
select name from v$datafile;
image.png
image.png

修改数据文件至正确路径与文件名:

代码语言:javascript
复制
alter database rename file '/u01/app/oracle/oradata/DBAAS1/3C8E6114F10BDF09E063970A0A0AA6F6/datafile/o1_mf_system_nb3dy189_.dbf' to '/u01/app/oracle/oradata/DBAAS2/3C8E6114F10BDF09E063970A0A0AA6F6/datafile/o1_mf_system_0a0te910_.dbf';
alter database rename file '/u01/app/oracle/oradata/DBAAS1/3C8E6114F10BDF09E063970A0A0AA6F6/datafile/o1_mf_sysaux_nb3dy18j_.dbf' to '/u01/app/oracle/oradata/DBAAS2/3C8E6114F10BDF09E063970A0A0AA6F6/datafile/o1_mf_sysaux_09pse90p_.dbf';
alter database rename file'/u01/app/oracle/oradata/DBAAS1/3C8E6114F10BDF09E063970A0A0AA6F6/datafile/o1_mf_undotbs1_nb3dy18j_.dbf' to '/u01/app/oracle/oradata/DBAAS2/3C8E6114F10BDF09E063970A0A0AA6F6/datafile/o1_mf_undotbs1_0b1te911_.dbf';
image.png
image.png

2.10 proddg添加standby logfile

代码语言:javascript
复制
alter session set container=proddg;
ALTER DATABASE ADD STANDBY LOGFILE thread 1
group 4 size 200M, 
group 5 size 200M, 
group 6 size 200M, 
group 7 size 200M;
image.png
image.png

2.11 验证proddg

代码语言:javascript
复制
DGMGRL> VALIDATE PLUGGABLE DATABASE proddg AT dbaas2;
image.png
image.png

2.12 启动日志同步

代码语言:javascript
复制
DGMGRL> EDIT PLUGGABLE DATABASE proddg AT dbaas2 SET STATE='APPLY-ON'; 
image.png
image.png

在dbaas1中执行,可追平日志传输:

代码语言:javascript
复制
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM ARCHIVE LOG CURRENT;
image.png
image.png

2.13 开启proddg

代码语言:javascript
复制
alter pluggable database proddg open;
image.png
image.png
image.png
image.png

2.14 同步测试

proddb执行:

代码语言:javascript
复制
create tablespace users datafile size 50m;
create table test (id number,name varchar2(20)) tablespace users;
insert into test values(1,'sky');
commit;
image.png
image.png

proddg检查:

image.png
image.png

3 DG PDB切换

代码语言:javascript
复制
DGMGRL> SWITCHOVER TO PLUGGABLE DATABASE proddg AT dbaas2;
image.png
image.png

因为PRODDB中未添加standby logfile,无法正常同步,所以需要添加standby logfile:

代码语言:javascript
复制
DGMGRL> EDIT PLUGGABLE DATABASE proddb AT dbaas1 SET STATE='APPLY-OFF';
代码语言:javascript
复制
alter session set container=proddb;
ALTER DATABASE ADD STANDBY LOGFILE thread 1
group 4 size 200M, 
group 5 size 200M, 
group 6 size 200M, 
group 7 size 200M;
image.png
image.png
代码语言:javascript
复制
DGMGRL> EDIT PLUGGABLE DATABASE proddb AT dbaas1 SET STATE='APPLY-ON';

dbaas2执行:

代码语言:javascript
复制
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM ARCHIVE LOG CURRENT;

同步恢复正常:

image.png
image.png

4 Failover

代码语言:javascript
复制
DGMGRL> FAILOVER TO PLUGGABLE DATABASE proddb AT dbaas1;
image.png
image.png

重新开启同步即可恢复proddg:

代码语言:javascript
复制
DGMGRL> reinstate pluggable database proddg at dbaas2;
DGMGRL> EDIT PLUGGABLE DATABASE proddg AT dbaas2 SET STATE='APPLY-ON';
image.png
image.png

5 监控DG PDB

5.1 监控configuration

代码语言:javascript
复制
DGMGRL> show configuration
DGMGRL> show configuration verbose dgconf_1
DGMGRL> show configuration verbose dgconf_2
image.png
image.png
image.png
image.png
image.png
image.png

5.2 监控CDB

代码语言:javascript
复制
DGMGRL> show database dbaas1
DGMGRL> show database verbose dbaas2
image.png
image.png
image.png
image.png

5.3 监控PDB

代码语言:javascript
复制
DGMGRL> show pluggable database proddb at dbaas1;
DGMGRL> show pluggable database proddg at dbaas2;
DGMGRL> show all pluggable database at dbaas1;
image.png
image.png

5.4 验证DG PDB

代码语言:javascript
复制
DGMGRL> validate pluggable database proddb at dbaas1;
DGMGRL> validate pluggable database proddg at dbaas2;
DGMGRL> validate pluggable database pdb1 at dbaas1;
image.png
image.png

6 删除DG PDB

这里仅展示命令,不做演示。 dbaas1:

代码语言:javascript
复制
dgmgrl sys@dbaas1
代码语言:javascript
复制
DGMGRL> REMOVE PLUGGABLE DATABASE proddg AT dbaas2 REMOVE DATAFILES; 
DGMGRL> REMOVE CONFIGURATION dgconf_2;
DGMGRL> REMOVE CONFIGURATION;

dbaas2:

代码语言:javascript
复制
dgmgrl sys@dbaas1
代码语言:javascript
复制
DGMGRL> REMOVE CONFIGURATION;

总结

本期在Oracle 23ai最新内测版23.9上进行了完整的DG PDB展示。 老规矩,知道写了些啥

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 胖头鱼的鱼缸 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库管理-第358期 23ai:DG PDB(20250818)
    • 1 环境
    • 2 配置DG PDB
      • 2.1 配置tnsnames
      • 2.2 复制密码文件
      • 2.3 数据库配置
      • 2.4 创建DG配置
      • 2.5 添加(关联)DG配置
      • 2.6 启用DG配置并检查
      • 2.7 启用DG PDB
      • 2.8 创建源PDB的DG配置
      • 2.8 复制数据文件
      • 2.9 修改proddg数据文件路径与文件名
      • 2.10 proddg添加standby logfile
      • 2.11 验证proddg
      • 2.12 启动日志同步
      • 2.13 开启proddg
      • 2.14 同步测试
    • 3 DG PDB切换
    • 4 Failover
    • 5 监控DG PDB
      • 5.1 监控configuration
      • 5.2 监控CDB
      • 5.3 监控PDB
      • 5.4 验证DG PDB
    • 6 删除DG PDB
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档