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.rhkb.cn/news/179204.html

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

相关文章

饥荒联机版 Don‘t Starve Together(WinMac)最新中文学习版

《饥荒联机版》是由Klei自主开发的开放世界冒险游戏。在这个游戏中,玩家将扮演各种各样的人物,这些人物不幸来到了一个神秘的异世界。在旅行中,玩家会邂逅性格各异、能力独特的同伴们,并和他们一起生存下去并征服异世界。游戏中的…

从零开始的目标检测和关键点检测(一):用labelme标注数据集

从零开始的目标检测和关键点检测(一):用labelme标注数据集 1、可视化标注结果2、划分数据集3、Lableme2COCO,将json文件转换为MS COCO格式 前言:前段时间用到了mmlab的mmdetction和mmpose,因此以一个小的数…

ruoyi系统改造

前端启动报错:Error: error:0308010C:digital envelope routines::unsupported 修改ruoyi-ui/package.json,添加export NODE_OPTIONS–openssl-legacy-provider && "scripts": {"dev": "export NODE_OPTIONS--openssl…

【Python_GraphicsView 学习笔记(一)】Graphics View框架的基本介绍

【Python_GraphicsView 学习笔记(一)】Graphics View框架的基本介绍 前言正文1、Graphics View框架简介2、Graphics View框架与QPainter类的区别3、Graphics View框架的三个组成部分4、场景QGraphicsScene类5、视图QGraphicsView类6、图形项QGraphicsIte…

利用GEE对季节性地物进行分类的代码实现

采样点的选取 如果你采用监督学习的话,那就手动打标签 或者可以了解一下非监督学习 合成多季节多波段影像 首先,制作一个包含多波段的影像,每个波段作为随机森林分类器的一个feature输入,提升feature的丰富度以保证分类精度。…

MySQL用户管理和授权

目录 一.用户管理 1.1.新建用户 1.2.查看用户 1.3.重命名用户rename 1.4.删除用户 1.5.修改当前登录用户密码 1.6.修改其他用户密码 1.7.忘记root 密码并找回 二.数据库用户授权 2.1.all privilege包含的权限 2.2.授予权限 ①允许指定用户查询指定数据库表 ②允许…

FlexmonsterPivotTable-2.9.63 LICENSE

FlexmonsterPivotTable-v2.9.63用于网络报告的数据透视表组件,用于可视化业务数据的最强大的 JavaScript 工具 与任何技术堆栈集成 该组件可与任何技术堆栈无缝协作: 与Angular、React、jQuery、Vue等 完美集成 没有服务器端依赖项 只需几行代码 即可开始…

Python接口自动化测试实战,一篇足矣

接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广泛应用。下面详细介绍Python接口自动化测试实战。 1、接口自动化测试框架 在Python接口自动化测试中,我们…

社区论坛在线交流网站系统源码+SEO优化 带前后端完整搭建教程

大家好,今天罗峰来给大家分享一款社区论坛在线交流网站系统源码。社区论坛在线交流在当下时时代还是很火的。现在人们对于在线交流和互动的需求不断增加。社区论坛作为一种传统的在线交流方式,仍然有着广泛的市场需求和用户群体。然而,现有的…

MySQL - Zero date value prohibited

问题: timestamp字段报Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited 原因: timestamp字段存入了0值, 超出了最小值1900-01-01 00:00:00, 转Java对象的时候报错 解决: 1.修复或删除原数据 2. mysqlurl 中添加zeroDateTimeBehaviorconve…

【Linux】 shutdown 命令使用

shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。使用权限:系统管理者。 语法 shutdown [选项] 时间 [警告信息] 命令选项及作用 执行令 man shutdown 执行命令结果 参…

替代知网!中国科学院发布公益学术平台,可免费获取8000万篇论文专著!

可检索1.7亿篇科技文献的 公益平台来了! 11月1日由中国科学院等单位联合建设的 PubScholar公益学术平台 正式对社会公众开放 该平台首期整合集成了 中国科学院的科技成果资源 科技出版资源和学术交流资源 内容包含期刊论文、学位论文 预发布论文、专利文献、…

时间复杂度的计算技巧-算法模型中的时间复杂度如何计算,有哪些技巧呢

大家好,我是微学AI,今天给大家介绍一下时间复杂度的计算技巧-算法模型中的时间复杂度如何计算,有哪些技巧呢,算法的时间复杂度是评估算法性能和效率的一种方式,它表示算法需要执行多少次基本操作才能完成其任务&#x…

LuaHttp库写的一个简单的爬虫

LuaHttp库是一个基于Lua语言的HTTP客户端库,可以用于爬取网站数据。与Python的Scrapy框架类似,LuaHttp库也可以实现网站数据的抓取,并且可以将抓取到的数据保存到数据库中。不过需要注意的是,LuaHttp库并不像Scrapy框架那样具有完…

【C++ 系列文章 -- 程序员考试 201811 下午场 C++ 专题 】

1.1 C 题目六 阅读下列说明和C代码,填写程序中的空(1) ~(5),将解答写入答题纸的对应栏内。 【说明】 以下C代码实现一个简单乐器系统,音乐类(Music)可以使用…

VMware——VMware17设置WindowServer2012R2环境静态IP及关闭防火墙

目录 一、VMware17设置WindowServer2012R2环境静态IP1.1、工具栏虚拟机的设置步骤1.2、工具栏编辑的设置步骤1.3、静态IP的设置步骤 二、VMware17关闭WindowServer2012R2环境防火墙 一、VMware17设置WindowServer2012R2环境静态IP 1.1、工具栏虚拟机的设置步骤 打开VMware虚拟…

【工具】【IDE】Qt Creator社区版

Qt Creator社区版下载地址:https://download.qt.io/archive/qt/ 参考:https://cloud.tencent.com/developer/article/2084698?areaSource102001.8&traceIduMchNghqp8gWPdFHvSOGg MAC安装并配置Qt(超级简单版) 1.安装brew&…

el-table 列分页

<template><div><el-table:data"tableData":key"tampTime"style"width: 100%"><el-table-columnprop"name"label"姓名"width"180"></el-table-column><el-table-columnprop&quo…

上传LaTeX版本的NeurIPS文章到arXiv总是Failed的解决方案

往arXiv上传NeurIPS模版文章时&#xff0c;一直出现两处报错&#xff0c;一处是下图中的图片错误&#xff1a; 但是&#xff0c;我怀疑是不是图片并排放置的minipage不可用&#xff0c;于是改成了正常的图片形式来测试&#xff1a; 仍然是相同的错误&#xff0c;于是我又尝试去…

人工智能基础_机器学习014_BGD批量梯度下降公式更新_进一步推导_SGD随机梯度下降和MBGD小批量梯度下降公式进一步推导---人工智能工作笔记0054

然后我们先来看BGD批量梯度下降,可以看到这里,其实这个公式来源于 梯度下降的公式对吧,其实就是对原始梯度下降公式求偏导以后的梯度下降公式,然后 使用所有样本进行梯度下降得来的,可以看到* 1/n 其实就是求了一个平均数对吧.所有样本的平均数. 然后我们看,我们这里* 1/n那么…