使用克隆现存PDB的方式创建新的PDB:这里有两种情况,一种为使用本地PDB,另外一种为使用远程PDB。二者并无太大差异。只是第二种需要使用DBLINK而已。

克隆本地方式:

SYS@ora12g> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 ORA12C_PDB1  READ WRITE YES4 ORACDB_PDB2  READ WRITE NOSYS@ora12g> alter pluggable database ORA12C_PDB1 close;Pluggable database altered.SYS@ora12g> alter pluggable database ORA12C_PDB1 open read only;Pluggable database altered.SYS@ora12g> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 ORA12C_PDB1  READ ONLY NO4 ORACDB_PDB2  READ WRITE NO

--我们这里克隆ORA12C_PDB1来创建新的PDB,需要先将其置于read only模式。

SYS@ora12c> alter session set container=ORA12C_PDB1;Session altered.SYS@ora12c> select file_name from dba_data_files;FILE_NAME--------------------------------------------------------------------------------/u01/oracle/oradata/ora12c/ora12c_pdb1/system01.dbf/u01/oracle/oradata/ora12c/ora12c_pdb1/sysaux01.dbf/u01/oracle/oradata/ora12c/ora12c_pdb1/SAMPLE_SCHEMA_users01.dbf/u01/oracle/oradata/ora12c/ora12c_pdb1/example01.dbfSYS@ora12c> create pluggable database ORA12C_PDB2from ORA12c_PDB1file_name_convert = ('/u01/oracle/oradata/ora12c/ora12c_pdb1','/u01/oracle/oradata/ora12c/ora12c_pdb2')storage (MAXSIZE 4G MAX_SHARED_TEMP_SIZE 100M); 2 3 4 5create pluggable database ORA12C_PDB2*ERROR at line 1:ORA-65040: operation not allowed from within a pluggable database

--不能在PDB中复制PDB。

SYS@ora12c> alter session set container=CDB$ROOT;Session altered.SYS@ora12c> create pluggable database ORA12C_PDB2from ORA12C_PDB1file_name_convert = ('/u01/oracle/oradata/ora12c/ora12c_pdb1','/u01/oracle/oradata/ora12c/ora12c_pdb2')storage (MAXSIZE 4G MAX_SHARED_TEMP_SIZE 100M);2 3 4 5Pluggable database created.

--目标PDB的数据文件存储目录也可以不用事先创建,oracle会自动创建。

--可以在创建PDB的同时指定该PDB的空间使用限额。

SYS@ora12c> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 ORA12C_PDB1  READ ONLY NO4 ORACDB_PDB2  READ WRITE NO5 ORA12C_PDB2  MOUNTED

使用远程PDB创建:

SYS@ora12c> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 ORA12C_PDB1  READ ONLY NO4 ORACDB_PDB2  READ WRITE NO5 ORA12C_PDB2  MOUNTEDSYS@ora12c> conn sys/oracle@ORACDB_PDB2 as sysdbaConnected.SYS@ORACDB_PDB2> shutdown immediate;Pluggable Database closed.SYS@ORACDB_PDB2> startup;Pluggable Database opened.SYS@ORACDB_PDB2> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------4 ORACDB_PDB2  READ WRITE NOSYS@ORACDB_PDB2> create user remote_pdb identified by remote;User created.SYS@ORACDB_PDB2> grant create pluggable database to remote_pdb;Grant succeeded.

--在源PDB中创建拥有create PDB权限的用户。

SYS@ORACDB_PDB2> conn / as sysdbaConnected.SYS@ora12g> create database link dbl_pdb connect to remote_pdb identified by remote using 'ORACDB_PDB2';Database link created.

--我们这里以ORACDB_PDB2作为远程数据库,也就是创建PDB的源PDB。

--利用前面创建的用户创建db link。

SYS@ora12c> alter pluggable database ORACDB_PDB2 open read only force;Pluggable database altered.SYS@ora12c> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 ORA12C_PDB1  READ ONLY NO4 ORACDB_PDB2  READ ONLY NO5 ORA12C_PDB2  MOUNTED

--同样将其置于read only状态。

SYS@ora12c> create pluggable database ORACDB_PDB_NEWfrom ORACDB_PDB2@dbl_pdbfile_name_convert = ('/u01/oracle/oradata/ora12c/cdb/pdb2','/u01/oracle/oradata/ora12c/cdb/pdb2_new'); 2 3 4Pluggable database created.SYS@ora12c> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 ORA12G_PDB1  READ ONLY NO4 ORACDB_PDB2  READ ONLY NO5 ORA12C_PDB2  MOUNTED6 ORACDB_PDB_NEW  MOUNTED

克隆非CDB的数据库来创建PDB。

这里有三种方法:

1,使用DBMS_PDB包生成源数据库的元数据,然后再利用create pluggable database语句创建;

2,使用数据泵(可传输表空间);

3,使用OGG。

使用数据泵方式,请参考官方文档Oracle® Database Utilities 12c Release 1 (12.1)

使用OGG方式,请参阅OGG相关文档。

我们这里测试下第一种方式。

1,先创建一个新的非CDB数据库。我们这里用DBCA创建。这步我就不多写了。各位一路next下去就好。记得别勾选create as a container database即可。

另外需要注意的是,数据库版本必须得是12c或者更高版本。

2,将该数据库以read only模式打开

[oracle@ora12 ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Fri Dec 18 09:56:43 2015Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsSYS@noncdb> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SYS@noncdb> startup mount;ORACLE instance started.Total System Global Area 838860800 bytesFixed Size  2929936 bytesVariable Size  599788272 bytesDatabase Buffers  230686720 bytesRedo Buffers  5455872 bytesDatabase mounted.SYS@noncdb> alter database open read only;Database altered.

--这里,数据库需要开归档才能以read only模式打开,至于原因嘛,恩,各位小伙伴应该都能想的出来吧

3,利用DBMS_PDB包生成该数据库的pdb描述文件并关闭数据库。

SYS@noncdb> begindbms_pdb.describe(pdb_descr_file => '/home/oracle/noncdb.xml');end;/PL/SQL procedure successfully completed.SYS@noncdb>SYS@noncdb> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.

--这里生成的pdb描述文件为xml格式的,各位可以进去看一下它的内容。

--该文件中包含了数据库的版本信息,非默认值的初始化参数信息,表空间及数据文件信息,其他可选组件的版本信息,service信息,以及AWR中loadprofile的内容。

4,登陆CDB,检测要插入的pdb是否存在兼容性问题

SYS@ora12c> set serveroutput ondeclaretest_via boolean;begintest_via := dbms_pdb.check_plug_compatibility(pdb_descr_file => '/home/oracle/noncdb.xml');if test_via thendbms_output.put_line('Yes');elsedbms_output.put_line('No');end if;end;/YesPL/SQL procedure successfully completed.

--输出结果为yes,表示没有兼容性问题。

--如果为no,则需要去检查pdb_plug_in_violations视图。

5,创建PDB

SYS@ora12c> create pluggable database PDB_NEWusing '/home/oracle/noncdb.xml'copyfile_name_convert = ('/u01/oracle/oradata/noncdb','/u01/oracle/oradata/cdb/pdb_new');Pluggable database created.SYS@ora12c> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 PDB_NEW  MOUNTED

6,执行脚本

SYS@ora12c> conn sys/oracle@ora12:1521/PDB_NEW as sysdba;Connected.SYS@ora12:1521/PDB_NEW> @?/rdbms/admin/noncdb_to_pdb.sql;

--该脚本的用处是:更新非CDB的数据库中的数据字典表,将其调整为PDB。

执行完成之后,该PDB就可以使用了。

需要注意的是:

在执行该脚本的时候,建议同时查看alert 日志,因为我的虚拟机只有2G内存,然后新创建的这个数据库noncdb我将其内存设置为了800M。所以在将该数据库创建为PDB时,oracle需要调整其参数设置。alert 日志中就看到如下类似的内容:

Active Session History (ASH) performed an emergency flush. This may mean that ASH is undersized. If emergency flushes are a recurring issue, you may consider increasing ASH size by setting the value of _ASH_SIZE to a sufficiently large value. Currently, ASH size is 2097152 bytes. Both ASH size and the total number of emergency flushes since instance startup can be monitored by running the following query:select total_size,awr_flush_emergency_count from v$ash_info;

以及:

Default pga_aggregate_limit value is too high for theamount of physical memory in the systempga_aggregate_limit is 2048 MBlimit based on physical memory and SGA usage is 1285 MB

因此,在虚拟机上创建新的PDB时,需要考虑内存以及其他比如说磁盘容量等方面的限制。

从CDB中拔出和插入PDB:

SYS@ora12c> create pluggable database PDB12 admin user test_admin identified by test3 file_name_convert = ('/u01/oracle/oradata/ora12c/pdbseed','/u01/oracle/oradata/ora12c/cdb/pdb1');Pluggable database created.SYS@ora12c> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 PDB1   MOUNTEDSYS@ora12c> alter pluggable database PDB1 open;Pluggable database altered.SYS@ora12c> show pdbs;CON_ID CON_NAME  OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------2 PDB$SEED  READ ONLY NO3 PDB1   READ WRITE NOSYS@ora12c> alter pluggable database PDB1 close;Pluggable database altered.

--需要先关闭可插拔数据库,然后再unplug。

SYS@ora12c> alter pluggable database PDB1unplug into '/home/oracle/pdb1.xml';Pluggable database altered.

--需要注意的是,这里只是unplug了,实际上该PDB还存在。如果想重新插入该PDB,则需要先删除。

SYS@ora12c> drop pluggable database PDB1;Pluggable database dropped.

插入PDB的时候,首先需要做兼容性检查。也就是上篇文章中提到的DBMS_PDB.check_plug_compatibility函数。

如果没有问题,再插入。

插入语句跟创建新的PDB一样

SYS@ora12c> create pluggable database PDB1using '/home/oracle/pdb1.xml'copyfile_name_convert = ('/u01/oracle/oradata/pdb1','/u01/oracle/oradata/cdb/pdb_new');

使用DBCA创建PDB的方式,这里不再多说

本文来自云栖社区合作伙伴“DBGEEK”

Oracle Database 12C 学习之多租户(连载四)相关推荐

  1. oracle 认证指南 pdf,OCP论证考试指南 1Z0-063 Oracle Database 12c高级管理.pdf

    作 者 :(美)BOB BRYLA著:郭俊凤译 出版发行 : 北京:清华大学出版社 , 2016.05 ISBN号 :7-302-43518-9 页 数 : 420 原书定价 : 68.00 主题词 ...

  2. oracle数据库12cocp培训教程,OCA/OCP认证考试指南全册(第3版) Oracle Database 12c 中文pdf扫描版[164MB]...

    完备的OCA(1Z0-061.1Z0-062)和OCP(1Z0-063)考试指南<OCA/OCP认证考试指南全册(第3版)>是为OCA和OCP考试准备的指南.<OCAOCP认证考试指 ...

  3. Oracle Database 12c Security - 13. An Applied Approach to Multitenancy and Cloud Security

    有时,不必要的安全措施会导向更不安全.例如,增加口令强度导致用户不得不将口令记录,并存放在不安全的地方. 安全象洋葱,一层又一层. SYSTEM BASELINE AND CONFIGURATION ...

  4. Oracle fan ons 12c,Oracle WebLogic Server 与 Oracle Database 12c 的集成 (2)

    数据库驻留连接池 中间层数据源会创建许多闲置的连接来应对高用户需求.创建和销毁这些连接的成本非常高昂.数据库驻留连接池 (DRCP) 允许多个 web 层和中间层数据源共享 Oracle 数据库服务器 ...

  5. 【OH】Deprecated and Desupported Features for Oracle Database 12c

    连接地址:http://docs.oracle.com/database/121/UPGRD/deprecated.htm#UPGRD60000 8Deprecated and Desupported ...

  6. WebLogic 12c与Oracle Database 12c的集成

    Oracle database 12c增加了很多新的特性,如果能够让WebLogic 12c的JDBC发挥出这些特性,无疑会使系统更强大. 关于WebLogic 12c与Oracle Database ...

  7. oracle12c如何存档图片,Oracle Database 12c实用教程

    第1章 数据库技术基础 1 1.1 数据库基本概念 1 1.2 数据模型 3 1.2.1概念模型 3 1.2.2结构模型 5 1.3 数据库的设计步骤 9 1.4 习题 10 第2章 Oracle D ...

  8. Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node

    Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node 在 Oracle Database 12c 的 Cluster 中引入了很多新特性和新 ...

  9. oracle12.2 redo 进程,【Oracle Database 12c新特性】TTnn TMON新的redo传输后台进程

    在Oracle 11g中 Data Guard的redo传输工作主要由以下3组后台进程实现: ARCi (FAL – archived redo shipping, ping, local only ...

最新文章

  1. Git的工作区与暂存区
  2. AutoFac使用方法总结:Part III
  3. 【杂谈】一个五岁孩子妈妈在有三AI学习并且赚钱的故事
  4. python 装饰器的妙用,实现类属性的懒加载
  5. html 点击文本框则选中,JS事件 内容选中事件(onselect)选中事件,当文本框或者文本域中的文字被选中时,触发onselect事件,同时调用的程序就会被执行。...
  6. 下面( )对象表示标准输入对象流。_7000字带你死磕Java I/O流知识
  7. IntellijIDEA配置Maven
  8. [导入]用事件和异常返回多种结果
  9. python 列表定义 初始化为0_Python为列表添加一个foreach方法
  10. php yyuc框架,求一份YYUC框架文件和帮助文档
  11. 如何在计算机界面打字,电脑怎么设置打字
  12. “均线金叉和均线死叉”的经典战法
  13. 【跨境电商】EDM邮件营销完整指南(二):如何开展EDM营销活动
  14. 【6GHz矩形贴片天线设计与分析】
  15. Chrome浏览器通过EasyPlayer播放多路flv视频流后浏览器崩溃是什么原因?
  16. Linux命令:ln -s
  17. 融云发送图片消息_融云开发者文档
  18. 为什么使用使用transform来代替top_MYSQL 使用基础 - 这么用就对了
  19. 网络安全与渗透:信息收集——google浏览器插件,代理服务(五)此生无悔入华夏,男儿何不带吴钩
  20. 湾区食堂battle,哪家大厂才是吃货的天堂?(下)

热门文章

  1. Linux 查看 占用内存最多 占用cpu最多 程序(类似top,监视)
  2. Nmap源码分析(整体架构)
  3. Ubuntu搭建安装svn
  4. Python3回调函数
  5. python 中的 del 使用方法
  6. Identity Server4学习系列四之用户名密码获得访问令牌
  7. Linux实战教学笔记13:定时任务补充
  8. Data intensive Application (1)
  9. CentOS7下搭建yum仓库
  10. 支付宝用大数据憋死伪基站骗子