Oracle 19c 可插拔数据库PDB的创建方式

多租户容器数据库架构图总览

多租户容器数据库组成部分

1.有且仅有一个CDB Root(CDB$ROOT),它包含了Root和所有PDB数据库的元数据和数据字典信息。

2.有且仅有一个Seed PDB(PDB$SEED),它的作用是创建其他PDB的模板,它是只读库,不能做任何修改。

3.0个或多个应用程序容器Application Container,每个Application Container包含一个Application Root,以及插在这个root上的Application PDBs,Application Root属于CDB Root。

4.0个或多个用户创建的PDB,每个PDB和12c之前的普通数据功能基本一样,在CDB创建之初,是没有PDB的,PDB根据用户业务需求后创建。

5.0个或1个Application Seed,它是应用程序容器里面用来创建Application PDBs的模板,是可选的,如果没有,则Application PDBs可以以第2条的PDB$SEED为模板创建。

创建PDB的几种方式总览

技术方式描述
Create a PDB from scratch通过pdb seed或者application seed作为模版创建

Clone an existing PDB or non-CDB

通过源pdb或者源non-cdb克隆。

源数据库可以是本地/远程cdb里面的普通pdb

或者本地/远程cdb里application container里面的application pdb

或者是non-cdb

Relocate a PDB to a different

CDB

从一个cdb里面搬迁pdb到另外一个cdb

Plug an unplugged PDB into a

CDB

通过源pdb的元数据xml文件来把pdb插入现有cdb

Reference a PDB as a proxy PDB

通过本地/远程cdb里面的普通pdb

或者本地/远程cdb里application container里面的application pdb来创建一个代理pdb

一、 通过种子PDB创建标准PDB(Create a PDB from scratch)

或者

需注意的几点:

1.注意当前是在cdb root还是application root,如果是cdb root,创建的就是标准pdb,如果在application root下,创建的是application pdb。

2.通过命令CREATE PLUGGABLE DATABASE创建,并指定本地pdb管理员账户,如果还需要其他子句可以添加,pdb刚创建完成后是mount模式,要打开到read write模式,默认会创建一个和pdb同名的服务,注意在网络配置文件中配置好以供客户端正常访问。

操作命令:

CREATE PLUGGABLE DATABASE salespdb 
ADMIN USER salesadm
IDENTIFIED BY password  
STORAGE (MAXSIZE 2G)  
DEFAULT TABLESPACE sales
DATAFILE '/disk1/oracle/dbs/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON 
PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'    
FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/','/disk1/oracle/dbs/salespdb/');

 需注意pdbseed的大小写。

二、通过本地PDB复制新的PDB

或者:

需满足的前提条件:

  1. 用户得在根容器数据库和源PDB数据库中有CREATE PLUGGABLE DATABASE的系统权限。
  2. 源PDB不能关闭。
  3. 如果CDB不是local undo 模式,源PDB得处于open read only模式。如果CDB是local undo,源PDB没有这个限制,如下查询是否是local undo 模式:
    SYS@PRODCDB>SELECT PROPERTY_NAME, PROPERTY_VALUE FROM   DATABASE_PROPERTIES WHERE  PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';PROPERTY_NAME	     PROPERTY_VALUE
    -------------------- --------------------
    LOCAL_UNDO_ENABLED   TRUE
  4. 如果CDB不是归档模式,源PDB得处于open read only模式。如果CDB是归档模式,源PDB没有这个限制,如下查询是否是归档模式:

        SYS@PRODCDB>archive log list;
        Database log mode           No Archive Mode
        Automatic archival           Disabled

      5.如果创建的是application pdb,需要和application container保持一样的字符集

操作命令: 

以通过PDBPROD1复制一个PDBPROD3为例,因为实验库没开归档,需要源pdb read only,创建完后确保两个库都是打开状态

SYS@PRODCDB>show pdbs;CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED			  READ ONLY  NO3 PDBPROD1			  READ WRITE NOSYS@PRODCDB>alter pluggable database PDBPROD1 close;Pluggable database altered.SYS@PRODCDB>alter pluggable database PDBPROD1 open read only;Pluggable database altered.SYS@PRODCDB>create pluggable database PDBPROD3 FROM PDBPROD1 FILE_NAME_CONVERT=('PDBPROD1','PDBPROD3');Pluggable database created.SYS@PRODCDB>alter pluggable database PDBPROD1 close;Pluggable database altered.SYS@PRODCDB>show pdbs;CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED			  READ ONLY  NO3 PDBPROD1			  MOUNTED6 PDBPROD3			  MOUNTEDSYS@PRODCDB>alter pluggable database all open;Pluggable database altered.SYS@PRODCDB>show pdbs;CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED			  READ ONLY  NO3 PDBPROD1			  READ WRITE NO6 PDBPROD3			  READ WRITE NO

可根据业务情况选择是否加其他子句: PATH_PREFIX 、STORAGE、 NO DATA等。

三、通过远程PDB复制新的PDB

需满足的前提条件:

  1. 用户得在根容器数据库和源PDB数据库中有CREATE PLUGGABLE DATABASE的系统权限。
  2. 源数据库安装平台和目标数据库安装平台须具有同样的字节序endianness,源库安装选项必须和目标库安装选项相同或者是目标库的子集。
  3. 如果创建的是application pdb,源pdb的应用程序名称和版本须和目标application container的程序名称和版本保持一致。
  4. 如果目标CDB字符集不是AL32UTF8,则需要和源CDB兼容,且目标CDB所有application pdb需要和application container保持一样的字符集,如果CDB字符集是AL32UTF8,则没有要求。
  5. 源库不能关闭。
  6. 如果目标CDB不是local undo 模式,源PDB得处于open read only模式。
  7. 如果目标CDB不是归档模式,源PDB得处于open read only模式。
  8. 如果创建的是refreshable pdb,则源pdb得处于归档和local undo模式。
  9. 创建的database link连接用户须具有CREATE PLUGGABLE DATABASE和sysoper权限。

操作命令: 

CREATE PLUGGABLE DATABASE pdb2 FROM pdb1@pdb1_link;

四、通过19c非容器数据库复制新的PDB

需满足的前提条件:

  1. 用户得在根容器数据库和源PDB数据库中有CREATE PLUGGABLE DATABASE的系统权限。
  2. 源数据库安装平台和目标数据库安装平台须具有同样的字节序endianness,源库安装选项必须和目标库安装选项相同或者是目标库的子集。
  3. 两边版本要在12.1.0.2及以上,且版本要一致。
  4. 新建的PDB数据块大小要和cdb保持一致。
  5. 如果non-cdb不是归档模式,要打开为read only。
  6. 字符集和dblink要求同上。

操作命令: 

CREATE PLUGGABLE DATABASE pdb2 FROM mydb@mydb_link; --mydb是non-cdb的名字同CREATE PLUGGABLE DATABASE pdb2 FROM NON$CDB@mydb_link;--用NON$CDB代替。执行后在打开新建的pdb之前需要执行转换脚本 :ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

五、通过relocate迁移PDB

从一个CDB Root到另一个CDB Root

或从一个Application Root 到另一个Application Root

通过dblink复制源pdb的数据块,undo块,redo块到新的位置,是一种几乎没有downtime的数据库迁移方式,不需要更改网络连接串等,新库打开后,源库就会自动删除。

需满足的前提条件:

1.源库处于local undo模式。

2.目标CDB如果不是归档模式,需要处于read only状态。

3.用户,dblink,字符集的前提条件同上。

操作命令: 

CREATE PLUGGABLE DATABASE ... FROM src_pdb_name@link2src... RELOCATE AVAILABILITY [MAX | NORMAL]

使用AVAILABILITY NORMAL(默认),源和目标共享同一个LISTENER。


六、通过XML元数据文件或者.pdb压缩归档文件导入非插入PDB

在CDB Root创建PDB

在application root创建pdb:

源库不能比新库版本更高,当用.pdb的归档文件创建时,不必指定源数据库的文件地址,当用XML的文件创建时,需指定SOURCE_FILE_NAME_CONVERT或 SOURCE_FILE_DIRECTORY

操作命令:

CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/salespdb.xml'   SOURCE_FILE_NAME_CONVERT = ('/disk1/oracle/sales/', '/disk2/oracle/sales/')  NOCOPY  STORAGE (MAXSIZE 2G)  TEMPFILE REUSE;
用.pdb文件:
CREATE PLUGGABLE DATABASE salespdb USING '/disk1/usr/sales.pdb'   STORAGE (MAXSIZE 2G);

七、代理PDB

在CDB Root创建代理PDB

在Application Container创建代理PDB

代理PDB实现的是像访问本地CDB中的PDB一样访问远程的PDB,只复制源PDB的 SYSTEM 和 SYSAUX 表空间。

需满足的前提条件:

1.用户得在根容器数据库和源PDB数据库中有CREATE PLUGGABLE DATABASE的系统权限。
2.本地CDB必须为归档模式和LOCAL UNDO模式。
3.创建Proxy PDB时,远程PDB必须为OPEN READ/WRITE 模式。

操作命令:

CREATE PLUGGABLE DATABASE pdb1 AS PROXY FROM pdb1@pdb1_link;

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

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

相关文章

应用开发平台集成表单设计器系列之1——技术预研与技术选型

背景 表单的可视化配置,是低代码开发平台的重要组成部分。平台已实现的低代码配置部分,可以配置生成前端vue页面,对于属性较少的实体,如系统基础数据的管理、配置数据的维护,采用标准化的模板模式来生成,配…

使用JMeter进行接口压力测试

1.我首先创建一个线程组 2.创建好之后如图所示 3. 进行配置 4. 然后添加一个https请求 5.创建好之后设置请求方法和对应参数 6.设置表格监听器 7.创建好之后如图所示 8.保存jmx文件后点击运行进行测试,结果反馈如下图

【数智化人物展】觉非科技CEO李东旻:数据闭环,智能驾驶数智时代发展的新引擎...

李东旻 本文由觉非科技CEO李东旻投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数智化的主要作用是帮助决策。它的核心是大数据,以大数据为基础,匹配合适的AI技术,促使数…

leetcode刷题 - SQL - 简单

目录 1. 175组合两个表 左外连接 2. 181. 超过经理收入的员工 3. 182. 查找重复的电子邮箱 4. 196. 删除重复的电子邮箱 5. 197. 上升的温度 日期作差 6. 511. 游戏玩法分析 I 7. 577. 员工奖金 null条件运算 8. 584. 寻找用户推荐人 9. 586. 订单最多的客户 10. 595. 大的国家…

AD9371 官方例程裸机SW 和 HDL配置概述(二)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…

第四届辽宁省大学生程序设计竞赛(正式赛)(12/13)

AC情况 赛中通过赛后通过暂未通过A√B√C√D○E○F√G√H√I○J√K—L√M√ 整体体验 easy:ABFHL mid:MJGC hard:IDKE 心得 感觉出了一堆典题,少数题还有些意思,E题确实神仙 题解 A. 欢迎来到辽宁省赛&#x…

图解系列--查漏补缺

1. L2转发,L3转发 网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表。在这一点上 MAC 寻 址与IP 寻址是一样的。只不过MAC 寻址中所参考的这张表叫做地址…

【双指针+简化去重操作】Leetcode 15 三数之和

【双指针简化操作】Leetcode 15 三数之和 解法1 解法1 新建一个嵌套列表&#xff1a;List<List<Integer>> result new List<>(); 初始化一个ArrayList并直接赋值&#xff1a;ArrayList<Integer> result new ArrayList<>(Arrays.asList(1, 2…

又来安利了,这个Itbuilder在线数据库设计工具用起来太顺手了

对于测试、开发、DBA、运维来说&#xff0c;数据库是再熟悉不过了。 我们都知道如今的数据是多么复杂和难以管理&#xff0c;但幸运的是有数据库设计工具可以帮助我们&#xff0c;可以在市场上找到很多的数据库设计工具&#xff0c;包括itbuilder。这些数据库设计工具可以帮助我…

【Python语言】集合的使用方法总结

目录 1、集合基本知识&#xff1a; 2、定义 2.1 定义集合变量 2.2 定义空集合 3、集合的常用操作 3.1 定义集合 3.2 添加新元素 3.3 移除元素 3.4 从集合中随机取出元素 3.5 清空集合 3.6 取两个集合的差集 3.7 消除两个集合的差集 3.8 两个集合合并 3.9 统计集合…

任正非说:我们要在整体上形成海军陆战队和主力作战团队相配合的作战方案。

你好&#xff01;这是华研荟【任正非说】系列的第30篇文章&#xff0c;让我们聆听任正非先生的真知灼见&#xff0c;学习华为的管理思想和管理理念。 一、我们的业务量在增长&#xff0c;因此带来表面上人的效益是增长的。但是我们要看到&#xff0c;我们现在利润不是来自于管理…

改进YOLO系列:12.Repulsion损失函数【遮挡】

1. RepLoss论文 物体遮挡问题可以分为类内遮挡和类间遮挡两种情况。类间遮挡产生于扎堆的同类物体,也被称为密集遮挡(crowd occlusion)。Repulsion损失函数由三个部分构成,yolov5样本匹配,得到的目标框和预测框-一对应第一部分主要作用:预测目标框吸引IOU最大的真实目标框,…

2023辽宁省数学建模A题铁路车站的安全标线完整原创论文详细讲解(含matlab代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了辽宁省数学建模A题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 B预计下午两点前更新完毕&#xff0c;A全…

Go类型嵌入介绍和使用类型嵌入模拟实现“继承”

Go类型嵌入介绍和使用类型嵌入模拟实现“继承” 文章目录 Go类型嵌入介绍和使用类型嵌入模拟实现“继承”一、独立的自定义类型二、继承三、类型嵌入3.1 什么是类型嵌入 四、接口类型的类型嵌入4.1 接口类型的类型嵌入介绍4.2 一个小案例 五、结构体类型的类型嵌入5.1 结构体类…

ElasticSearch 实现 全文检索 支持(PDF、TXT、Word、HTML等文件)通过 ingest-attachment 插件实现 文档的检索

一、Attachment 介绍 Attachment 插件是 Elasticsearch 中的一种插件&#xff0c;允许将各种二进制文件&#xff08;如PDF、Word文档等&#xff09;以及它们的内容索引到 Elasticsearch 中。插件使用 Apache Tika 库来解析和提取二进制文件的内容。通过使用 Attachment 插件&a…

vector模拟实现

vector的模拟实现 一. vector的模拟实现1.0 与string的区别1.1 实现内容实现方法 二. vector模拟中重点讲解内容&#xff08;坑&#xff09;2.1 erase的使用问题2.2 resize的特殊写法2.3 operator 2.4 reserve 三. 整体代码 一. vector的模拟实现 我们知道&#xff1a; 在STL中…

iPhoto照片垃圾清理工具CleanMyMacX2024

CleanMyMacX的照片垃圾清理功能会浏览您的iPhoto图片库&#xff0c;找到那些经过裁剪、调整大小、旋转或者其他编辑之后不再需要的但仍被iPhoto保存的原始图片副本。这些副本是隐藏的&#xff0c;但是它们却极大的增加了图片库的大小。 CleanMyMac X全新版下载如下: https://…

揭秘ChatGPT的智慧密码:向量数据库的神奇作用解析

2023年8月&#xff0c;亚马逊云科技推出了自己的向量引擎Amazon OpenSearch Serverless向量引擎&#xff0c;这被认为是其旗下大语言模型Amazon Titan超越ChatGPT的一个重要契机。 那么&#xff0c;这个Amazon OpenSearch Serverless向量引擎有何厉害之处&#xff1f;为什么能…

好用的MybatisX插件~

MybatisX插件&#xff1a; MyBatis-Plus为我们提供了强大的mapper和service模板&#xff0c;能够大大的提高开发效率。但是在真正开发过程中&#xff0c;MyBatis-Plus并不能为我们解决所有问题&#xff0c;例如一些复杂的SQL&#xff0c;多表联查&#xff0c;我们就需要自己去…

二十、泛型(1)

本章概要 基本概念 与 C 的比较 简单泛型 一个元组类库一个堆栈类RandomList 基本概念 普通的类和方法只能使用特定的类型&#xff1a;基本数据类型或类类型。如果编写的代码需要应用于多种类型&#xff0c;这种严苛的限制对代码的束缚就会很大。 多态是一种面向对象思想的泛…