在Oracle中基于PDB种子复制数据库的方式,这个与SQLServert中直接创建数据库比较类似。在SQLServer中有一个model数据库,这个库的功能就和PDB种子数据库一样,就是一个模板数据库。从某种程度上来说,Oracle的多租户数据库几乎借鉴了80%的SQLserver的一些设计架构和理念。也即是通过从pdb数据库复制数据文件来达到快速建库的目的。下文是基于PDB种子建库的步骤及演示。

一、基于PDB$SEED创建PDB示意图及步骤

示意图

主要完成以下步骤(create pluggable database方式)
1、从PDB种子数据库复制数据文件
2、创建系统表空间system,sysaux
3、创建指向Oracle系统提供对象的元数据链接目录
4、创建公共用户,如sys,system等
5、创建本地系统管理员,并授予PDB_DBA角色
6、创建一个新的缺省服务

二、创建语法及简单示例

CREATE PLUGGABLE DATABASE{ { pdb_name [ AS APPLICATION CONTAINER ] } | { AS SEED } }{ create_pdb_from_seed | create_pdb_clone | create_pdb_from_xml } ;

语法参考详细链接:http://docs.oracle.com/database/122/SQLRF/CREATE-PLUGGABLE-DATABASE.htm#SQLRF55686

简单创建示例

CREATE PLUGGABLE DATABASE PDB_NAME
ADMIN USER PDBA IDENTIFIED BY PASS ROLES=(CONNECT)
FILE_NAME_CONVERT=('/path/pdbseed','/path/pdb_name');说明:
FILE_NAME_CONVERT:主要用于种子数据库文件与目标数据库文件位置转换
如上示例,FILE_NAME_CONVERT=('/path/pdbseed','/path/pdb_name') 表示新创建的PDB数据库数据文件位于/path/pdb_name
对于以下两种情形,可以不需要FILE_NAME_CONVERT子句
1、启用OMF功能(参数DB_CREATE_FILE_DEST)DB_CREATE_FILE_DEST='/u01/app/oradata/cdb1/pdb1'
2、设定初始化参数PDB_FILE_NAME_CONVERTPDB_FILE_NAME_CONVERT='/u01/app/oradata/cdb1/seed','/u01/app/oradata/cdb1/pdb'对于不需要FILE_NAME_CONVERT子句,使用如下方式创建:
CREATE PLUGGABLE DATABASE PDB_NAME
ADMIN USER PDBA IDENTIFIED BY PASS ROLES=(CONNECT);

三、基于PDB$SEED演示创建PDB

--当前的数据库版本及环境
SQL> SELECT name,2         DECODE (cdb,3                 'YES', 'Multitenant Option enabled',4                 'Regular 12c Database: ')5            "Multitenant Option",6         open_mode,7         con_id8  FROM   v$database;NAME                           Multitenant Option         OPEN_MODE                CON_ID
------------------------------ -------------------------- -------------------- ----------
CDB1                           Multitenant Option enabled READ WRITE                    0SQL> select 'Leshami' Author,'http://blog.csdn.net/leshami' Blog,2  '645746311' QQ from dual;
AUTHOR  BLOG                         QQ
------- ---------------------------- ---------
Leshami http://blog.csdn.net/leshami 645746311                   --查看当前数据库pdb容器,如下一个种子数据库,一个cdb1pdb1数据库
SQL> select con_id,name,open_mode from v$pdbs;CON_ID NAME                           OPEN_MODE
---------- ------------------------------ ----------2 PDB$SEED                       READ ONLY3 CDB1PDB1                       READ WRITE--创建pdb数据库
SQL> create pluggable database cdb1pdb22  admin user pdb2admin identified by pass roles=(connect)3  file_name_convert=('/app/oracle/ora12c/oradata/cdb1/pdbseed',4  '/app/oracle/ora12c/oradata/cdb1/cdb1pdb2');Pluggable database created.--查看创建后的状态,刚刚创建的pdb status列为NEW
SQL> select pdb_id,pdb_name,status,creation_time from cdb_pdbs where pdb_name='CDB1PDB2';PDB_ID PDB_NAME                       STATUS     CREATION_
---------- ------------------------------ ---------- ---------4 CDB1PDB2                       NEW        13-JUN-17--如下查询,当前的数据库处于mount状态
SQL> select con_id,name,open_mode from v$pdbs where name='CDB1PDB2';CON_ID NAME                           OPEN_MODE
---------- ------------------------------ ----------4 CDB1PDB2                       MOUNTED--将pdb数据库切换到open状态
SQL> alter pluggable database cdb1pdb2 open;Pluggable database altered.--使用公共用户sys连接到刚刚创建的pdb数据库
SQL> conn sys/pass@192.168.1.244:1521/cdb1pdb2 as sysdba
Connected.--使用pdb本地管理员账户连接到pdb数据库
SQL> conn pdb2admin/pass@192.168.1.244:1521/cdb1pdb2
Connected.SQL> show user;
USER is "PDB2ADMIN"--查看当前用户的角色
SQL> select * from user_role_privs;USERNAME         GRANTED_ROLE       ADM DEL DEF OS_ COM INH
---------------- ------------------ --- --- --- --- --- ---
PDB2ADMIN        PDB_DBA            YES NO  YES NO  NO  NO--查看当前用户的权限
SQL> select * from session_privs;PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE PLUGGABLE DATABASE
SET CONTAINER--查看自动添加的服务名
SQL> ho lsnrctl status |grep cdb1pdb2 -B1Instance "cdb1", status READY, has 1 handler(s) for this service...
Service "cdb1pdb2" has 1 instance(s).

Oracle 12c 基于PDB种子数据库创建PDB相关推荐

  1. oracle中pdb,Oracle12c数据库创建pdb的3种方法

    Oracle12c数据库创建pdb的3种方法 1.根据seed创建pdb CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFI ...

  2. oracle 12c tns,oracle 12c 怎样配置TNS来访问PDB

    oracle 12c 怎样配置TNS来访问PDB 淆癏宙 | 浏览 147 次 我有更好的答案 发布于2016-06-27 16:18 最佳答案 1.配置监听 首先要明确,所有的PDB都使用1个监听, ...

  3. oracle 12c 客户端如何使用,客户端如何访问访问oracle 12c 64位的数据库

    服务器A安装的oracle 12c 64位的数据库,机器B如何访问oracle数据库. 准备: 1.下载instantclient-basic-nt-12.1.0.2.0.zip,下载地址:http: ...

  4. oracle如何建pdb,教你创建PDB的三种方法

    12C官方文档提到6种创建PDB的技术,如下:Create a PDB by using the seed Create a PDB by cloning an existing PDB or non ...

  5. 如何连接oracle 12c可插拔数据库

    启动根容器:[oracle@eric ~]$ export ORACLE_SID=cup[oracle@eric ~]$ sqlplus / as sysdbaSQL*Plus: Release 12 ...

  6. oracle adg 人工干预,ORACLE 12C ADG 之十四 (ADG PDB级闪回(Flashback PDB))

    #PDB级闪回(Flashback PDB) #PDB闪回有几个基本的前提条件: 1,enable local undo 2,enable archivelog mode 3,enable flash ...

  7. oracle的种子文件,Oracle用RMAN还原种子数据库

    起一个新实例名newdata 1.准备pfile cp ...../dbs/init.ora ..../dbs/initnewdata.ora vim initnewdata.ora 改变contro ...

  8. linux给oracle导入sql语句,Linux数据库创建与数据导入

    之前没搞过linux,这次客户的系统装的linux,项目发布环境及数据库已经安装好了.由于要急着上线,所以就边摸索边处理了.简单记 之前没搞过linux,这次客户的系统装的linux,项目发布环境及数 ...

  9. Oracle 12C -- 基于sequence的列的默认值

    12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式. 和"identity column"具有以下不同点: ·对列的个数没有限制 ·seq ...

最新文章

  1. 自定义对话框JDialog的使用实例
  2. 遍历Repeater与ItemDataBound事件发现的几个问题。
  3. python拼音怎么写-Python 获取中文字拼音首个字母的方法
  4. java求导数_OO_JAVA_表达式求导
  5. LeetCode题组:第206题-反转链表
  6. Linux / argv、environ 和 env 的联系
  7. 【架构一】高可用之冗余备份
  8. Squid-4.1(最新)安装及构建代理服务器
  9. oracle rownum 特别慢,select * from table where rownum=1怎么会特别慢??表的数据在千万左右...
  10. Mysql - 安装与配置
  11. pythonstdin_如何写入Python子进程'stdin?
  12. 数学与计算机教学设计,数学和信息技术整合的思考 教案教学设计
  13. css 中引入第三方字体
  14. centos rpm安装mysql5.6_CentOS 7下使用RPM安装MySQL 5.6
  15. python源码学习(七)——String对象
  16. 阿兹卡塔防 Azgard Defense 详细攻略
  17. HTML5 小组 北京站 沙龙
  18. mysql8安装成功后忘记密码,密码重置
  19. ddr走线教程_DDR走线规则
  20. 苹果7计算机有什么功能是什么,iPhone7有哪些新功能 iPhone7新功能汇总【详细介绍】...

热门文章

  1. 提取一张图像内红框标注的区域-python
  2. ucos OS_ENTER_CRITICAL
  3. 《1024 程序员节》—我喂自己袋盐
  4. 深度学习和机器博弈如何结合_对抗机器学习的博弈论方法
  5. 安装nvm,配置nvm源,配置npm源
  6. android 广播失败,android - 发送广播Intent SIM_STATE_CHANGED失败 - 堆栈内存溢出
  7. B2C电子商务能否通吃线上线下?
  8. servlet生命周期:
  9. 宁德时代揭晓调研纪要:一定要进美国市场,友商扩产不会增加竞争
  10. *《Qt5+安装包制作(Qt Installer Framework)》二