数据库管理-第141期 DG PDB - Oracle DB 23c(20240129)

数据库管理141期 2024-01-29

  • 第141期 DG PDB - Oracle DB 23c(20240129)
    • 1 概念
    • 2 环境说明
    • 3 操作
      • 3.1 数据库配置
      • 3.2 配置tnsname
      • 3.3 配置强制日志
      • 3.4 DG配置
      • 3.5 DG配置建立联系
      • 3.6 启用所有DG配置
      • 3.7 启用DG PDB
      • 3.8 创建源PDB的DG配置
      • 3.9 拷贝pdbprod1文件至proddg
      • 3.10 目标PDB添加standby log
      • 3.11 验证并启动DG PDB
      • 3.12 切换PDB角色
      • 3.13 源库PDB添加standby log
      • 3.14 开启备库查询
      • 3.15 回切测试
    • 总结

第141期 DG PDB - Oracle DB 23c(20240129)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
网思科技 DBA总监
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家,ITPUB认证专家,OCM讲师
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭。

首先,这应该是我一月份最后一片文章了(不保证),本期回归一下技术,重新转头把去年Oracle 23c系列文章中高可用这部分的坑给填了,深入捯饬一下DG PDB。

1 概念

从Oracle DB 23c开始,引入了DG PDB,即在原来CDB级别DG的基础上,增加了PDB级别的DG,这种配置下CDB彻底沦为PDB的底座,PDB可以在任意CDB之间构建DG架构而不用考虑CDB的角色问题;相较于21c的功能,现在PDB备库可以为只读状态了。
DG PDB的好处可以充分利用主备端的硬件资源,让每个CDB都能承载生产PDB和灾备PDB。

2 环境说明

这里选择了最新版本的Oracle Linux9.3作为操作系统,俩CDB均已开启归档模式:
在这里插入图片描述

本次操作会根据实际情况进行,其中pdbprod1将在对端做DG PDB。

3 操作

3.1 数据库配置

俩CDB均执行:

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)))

image.png

3.3 配置强制日志

alter database force logging;

3.4 DG配置

image.png

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;

image.png
image.png

3.5 DG配置建立联系

dgmgrl sys/oracle@prodcdb
dgmgrl>
ADD CONFIGURATION 'dgconf_2' CONNECT IDENTIFIER IS proddg;
show configuration;dgmgrl sys/oracle@proddg
dgmgrl>
show configuration;

image.png
image.png

3.6 启用所有DG配置

dgmgrl sys/oracle@prodcdb
dgmgrl>
enable configuration all;
show configuration;dgmgrl sys/oracle@proddg
dgmgrl>
show configuration;

image.png
image.png

3.7 启用DG PDB

dgmgrl sys/oracle@prodcdb
dgmgrl>
EDIT CONFIGURATION PREPARE DGPDB;

image.png

3.8 创建源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'";

image.png

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/

image.png

prodcdb:
alter session set container=pdbprod1;
alter database end backup;

这里同样可以使用rman duplicate pluggable database来复制文件,这里不做演示。

3.10 目标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 验证并启动DG PDB

dgmgrl sys/oracle@proddg
dgmgrl>
VALIDATE PLUGGABLE DATABASE pdbdg1 at proddg;

image.png

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;

image.png

3.12 切换PDB角色

dgmgrl sys/oracle@proddg
dgmgrl>
VALIDATE PLUGGABLE DATABASE pdbdg1 at proddg;
switchover to pluggable database pdbdg1 at proddg;

image.png
image.png
image.png
image.png
这时候新的备库会出现异常,因为没有添加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;

image.png

3.14 开启备库查询

alter session set container=pdbprod1;
alter pluggable database open;dgmgrl>
show pluggable database pdbprod1 at prodcdb;

image.png
image.png

3.15 回切测试

dgmgrl>
switchover to pluggable database pdbprod1 at prodcdb;show pluggable database pdbprod1 at prodcdb;
show pluggable database pdbdg1 at proddg;
show configuration;

image.png
至此DG PDB搭建完成。

总结

使用DG PDB初始化搭建还是比较繁琐的,但是不需要全量CDB级别同步数据,还是比较方便,切换也很方便。
老规矩,知道写了些啥。
参考文档: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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/438663.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UDP通信以及本地套接字

1. UDP 1.1 UDP 通信&#xff1a; UDP服务端创建出来的套接字不是监听套接字&#xff0c;直接就是通信套接字。 #include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *de…

源码安装nginx并提供服务脚本

一、下载nginx ①官网复制下载链接 ②在Linux中下载 [rootopenEuler2 ~]# wget -c https://nginx.org/download/nginx-1.24.0.tar.gz 二、解压并指定路径 [rootopenEuler2 ~]# tar xf nginx-1.24.0.tar.gz -C /usr/local/src/ 三、安装依赖 dnf install -y gcc gcc-c mak…

备战蓝桥杯----贪心算法(二进制)

已经差不多掌握了贪心的基本思想&#xff0c;让我们看几道比较趣的题吧&#xff01; 先来个比较有意思的题热热身&#xff1a; 法1.我们可以先把l,r化成二进制的形式。 然后分俩种情况&#xff1a; &#xff08;1&#xff09;若他们位数不一样并且位数高的全为1&#xff0c;…

第九节HarmonyOS 常用基础组件15-DatePickerl

1、描述 日期选择组件&#xff0c;用于根据指定日期范围创建日期滑动选择器。 2、接口 DatePicker(options:{start?: Date, end?: Date, selected?: Date}) 3、参数 参数名 参数类型 必填 描述 start Date 否 指定选择器的开始日期。默认值&#xff1a;Date(‘19…

如何使用docker compose安装APITable并远程访问登录界面

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 …

神经调节的Hebbian学习用于完全测试时自适应

摘要 完全测试时自适应&#xff08;Fully test-time adaptation&#xff09;是指在推理阶段对输入样本进行序列分析&#xff0c;从而对网络模型进行自适应&#xff0c;以解决深度神经网络的跨域性能退化问题。我们从生物学合理性学习中获得灵感&#xff0c;其中神经元反应是基…

TBTOOLS标记染色体上的gene

最近碰到个问题&#xff0c;如何在染色体上标记gene, 查了下发现了个windows工具&#xff1a;TBTOOLs &#xff0c; 有点意思&#xff0c;真是简洁高效。 话不多说&#xff0c;直接干。。 工具下载 直接在github 下载即可 https://github.com/CJ-Chen/TBtools-II&#xff0c;…

防御保护常用知识

防火墙的主要职责在于&#xff1a;控制和防护 --- 安全策略 --- 防火墙可以根据安全策略来抓取流量之 后做出对应的动作 防火墙分类主要有四类&#xff1a; 防火墙吞吐量 --- 防火墙同一时间能处理的数据量多少 防火墙的发展主要经过以下阶段&#xff1b; 传统防火墙&#xf…

1002. HarmonyOS 开发问题:鸿蒙 OS 技术特性是什么?

1002. HarmonyOS 开发问题&#xff1a;鸿蒙 OS 技术特性是什么? 硬件互助&#xff0c;资源共享 分布式软总线 分布式软总线是多种终端设备的统一基座&#xff0c;为设备之间的互联互通提供了统一的分布式通信能力&#xff0c;能够快速发现并连接设备&#xff0c;高效地分发…

海外游戏平台系统和国内的有什么不同?

随着互联网的普及和游戏产业的迅猛发展&#xff0c;游戏平台系统成为了玩家们获取游戏内容、交流心得的重要渠道。然而&#xff0c;海外游戏平台系统和国内的游戏平台系统存在着许多不同之处。本文将就以下几个方面进行探讨。 一、游戏内容与版本 在游戏内容方面&#xff0c;海…

C/C++ - 内存管理(C++)

堆栈 C中的栈和堆是用于存储变量和对象​​的两个主要内存区域。栈是一种自动分配和释放内存的区域&#xff0c;用于存储局部变量和函数调用的上下文。栈上的内存分配和释放是自动进行的&#xff0c;无需手动管理。堆是动态分配内存的区域&#xff0c;用于存储动态创建的对象和…

MySQL-基础

1.DQL语句完整语法和执行顺序 select … from … where … group by … having … order by … limit … 顺序&#xff1a;5123467 2.添加外键 alter table emp add constraint f_key foreign key (dept_id) references dept(id) on update cascade on delete cascade; dept为…