织梦CMS - 轻松建站从此开始!

欧博ABG官网-欧博官方网址-会员登入

DATAGUARD之五:CDB/PDB环境下的dataguard的不同之处

时间:2025-01-28 05:19来源: 作者:admin 点击: 8 次
一,CDB环境创建物理备库 多租户架构的CDB的DG的创建过程跟普通的数据库是一样的,只不过有些地方需要注意一下: 1,当你执行SWITCHOVER或者FAILOVER操作的时候,会对整个CDB进行转换。如果你在备库使用了ENABLED_PDBS_ON_STANDBY,那么需要注意的是,可能不是每一

一,CDB环境创建物理备库

多租户架构的CDB的DG的创建过程跟普通的数据库是一样的,只不过有些地方需要注意一下:

1,当你执行SWITCHOVER或者FAILOVER操作的时候,会对整个CDB进行转换。如果你在备库使用了ENABLED_PDBS_ON_STANDBY,那么需要注意的是,可能不是每一个PDB都同时存在于主库和备库。

ENABLED_PDBS_ON_STANDBY 这个参数指定了哪些PDB会同步到备库中,该参数只在备库生效 如果没有指定的话,默认值为*,也就是每一个主库的PDB都会同步到备库 注意,不同备库该参数都可以独立设置,也就是说,可能某个PDB会在备库A中,但不在备库B中
RAC中所有实例应该使用同样的值

2,数据库的角色(DATABASE_ROLE)是在CDB级别定义的,而不是每一个单独的容器

3,任何跟角色转换相关的DDL语句都应该在root容器执行,因为这些操作需要影响整个CDB。

4,CDB的物理备库的大多数SQL的语法跟非CDB的数据库是一样的,除了以下的这些语句可能有些不同:

--ALTER DATABASE RECOVER MANAGED STANDBY只能在ROOT执行 --ROLE是关于整个CDB的,不是单个PDB的,因此,以下的角色转换语句是对整个CDB生效的 ALTER DATABASE SWITCHOVER TO target_db_name; ALTER DATABASE ACTIVE PHYSICAL STANDBY;

5,如果在备库你已经打开了root容器,ALTER PLUGGABLE DATABASE [open|close]也是支持的

6,备库不支持ALTER PLUGGABLE DATABASE RECOVER,STANDBY的RECOVER总是CDB LEVEL的

7,要管理整个多租户环境,你必须拥有CDB_DBA角色

8,ORACLE建议备库使用自己的keystore

9,   在一个多租户环境,重做日志必须传递到备库的root容器

--如何判断重做日志是被传递到root容器 --假设以下是你主库传递到备库的归档路径的配置 LOG_ARCHIVE_DEST_2='SERVICE=boston ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=boston' --它会传递到备库的boston服务 --root容器的CON_ID一直都是1,所以你必须要确定boston服务的CON_ID是1 --检查tnsnames.ora里面的配置 boston = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=boston-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=boston.us.example.com)) --根据上面的service_name,到备库里面查询v$cdb_services SELECT NAME, CON_ID FROM CDB_SERVICES;

二,在主库创建PDB

1,在12.1的时候,你创建PDB的时候只能够指定这个PDB在所有的备库创建和同步(ALL),或者不在任何一个备库创建(NONE)。到了12.2的时候,你可以指定某些PDB被复制到某一个物理备库,不需要指定所有的PDBs都被复制。可以使用ENABLED_PDBS_ON_STANDBY初始化参数,或者在使用CREATE PLUGGABLE DATABASE的时候添加STANDBYS条件。那些没有在备库ENABLED的PDB,可以保持disable状态,或者等到所有要求的文件在备库CDB可用的时候再ENABLE。

2,ENABLED_PDBS_ON_STANDBY只在备库起作用,主库也可以设置,不过会被忽略,但可以在切换后生效。如果该参数没有设置,则表示所有。

3,在创建新的PDB的时候,如果你想指定它在哪些备库生效,可以使用STANDBYS子句:

create pluggable database … STANDBYS={('cdb_name', 'cdb_name', ...) | NONE | ALL [EXCEPT ('cdb_name', 'cdb_name', ...)]} --第一个选项的cdb_name是物理备库的DB_UNIQUE_NAME,表示哪些备库要启用 --NONE表示把正在创建的PDB从所有备库中排除,PDB的数据文件会处于OFFLINE状态,并且在所有备库标记为unnamed。在这之后新创建的备库CDB必须禁止该PDB的恢复,将其从PDB中显式排除。在这之后仍然可以把它从新启用 --默认为ALL,包含在所有备库CDB中 --EXCEPT,表示在排除之外的所有备库中启用 小括号和单引号是必须的。

4,通过从其他PDB或者种子PDB进行本地clone的方式创建PDB,要把属于源PDB的数据文件拷贝到备库中。(对于ORACLE ADG来说这一步不是必须的,当PDB在备库被创建的时候,会自动拷贝数据文件)。通过远程复制的方式,从其他CDB拷贝PDB到主库,根据MOS 2049127.1进行操作

5,从XML文件来创建PDB,要把XML相关的数据文件拷贝到备库。如果你的备库是以ADG的方式open read-only,那么把插入到主库的同样的PDBs的数据文件拷贝到备库。为了最小化备库管理恢复以及会话的中断,你应该在主库插入之前,把数据文件拷贝到备库。确保拷贝到正确的路径,以防managed standby recover发现不了。

--如果数据文件放在标准的操作系统的文件系统中,那么在备库的路径则依托于DB_FILE_NAME_CONVERT参数 --如果数据文件放在ASM中,那么使用ASMCMD命令把文件拷贝到以下路径: <db_create_file_dest>/<db_unique_name>/<GUID>/datafile --GUID参数是PDB的全局唯一识别码,一旦被授予了就不会再改变。可以在主库查询v$containers来获取这一值: SELECT GUID FROM V$CONTAINERS WHERE CON_ID=3--GUID --D98C12257A951FC4E043B623F00A7AF5 --假设ASM group是+DATAFILE,db_unique_name是BOSTON,则路径是: +DATAFILE/BOSTON/D98C12257A951FC4E043B623F00A7AF5/datafile

路径名字必须和主库创建的PDB一致,除非备库中配置了DB_FILE_NAME_CONVERT参数

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2025-02-05 14:02 最后登录:2025-02-05 14:02
栏目列表
推荐内容