Oracle 12c 基于PDB种子数据库创建PDB

在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_CONVERT
  PDB_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_id
  8  FROM   v$database;

NAME                           Multitenant Option         OPEN_MODE                CON_ID
------------------------------ -------------------------- -------------------- ----------
CDB1                           Multitenant Option enabled READ WRITE                    0

SQL> 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 ONLY
         3 CDB1PDB1                       READ WRITE

--创建pdb数据库
SQL> create pluggable database cdb1pdb2
  2  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 -B1
  Instance "cdb1", status READY, has 1 handler(s) for this service...
Service "cdb1pdb2" has 1 instance(s).

时间: 2024-10-30 00:00:16

Oracle 12c 基于PDB种子数据库创建PDB的相关文章

ORACLE 12C PDB 维护基础知识介绍_oracle

先说基本用法: 先按11G之前进行 conn / as sysdba; create user test identifed by test; ORA-65096: 公用用户名或角色名无效. 查官方文档得知"试图创建一个通用用户,必需要用C##或者c##开头",这时候心里会有疑问,什么是common user?不管先建成功了再说 create C##user test identifed by test; 创建成功 SQL>show con_name; CON_NAME ----

Oracle 12c手工建库(非CDB及CDB创建)

对于Oracle数据库的创建,Oracle除了支持dbca(GUI界面),同时也支持手工方式创建数据库,即使用CREATE DATABASE语句创建数据库.使用此语句对使用DBCA的一个优点是可以从脚本内创建数据库.在Oracle 12c版本中支持12c之前的非CDB数据库以及CDB容器数据库.因此创建方式略有不同.本文同时描述2种不同数据库的手工创建方法. 一.12c手工创建非CDB数据库 步骤1:指定实例标识符(SID) ORACLE_SID的环境变量用于该实例从稍后可能创建并同时在同一主机

Oracle二三事之 12c 可插拔数据库PDB

针对Oracle 12c数据库测试用户的一份调查显示,新版本中他们认为最强大的功能就是PDB.就如同服务器虚拟化技术从底层硬件层面将操作系统抽象出来一样,Oracle 12c中的PDB就是从管理系统中将数据库抽象出来.可以说PDB的意义有如虚拟化对服务器所产生的影响. Oracle Database 12c有两个主要的组件:Container Database(CDB)和Pluggable Database(PDB).CDB主要用来作为数据库实例,它包含数据库操作.元数据和函数.PDB是用户数据

Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权) 编辑手记:Oracle 12c的多租户特性是Oracle Database历史上最重要的革新之一,在云时代这一特性展现出强大的整合威力,这篇文章来自<深入解析Oracle>一书的摘录. 在Oracle Database 12c版本中,一个重要的新特性:插接式数据库(Pluggable Database)被引入进来.在12c之前的版本中,Oracle数据库中的多用户管理通过Schema – 模式管理方式来实现,而

ORACLE 12C新特性——CDB与PDB

Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库.在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载.而实例与数据库不可

Oracle 12c多租户特性详解:PDB 的备份与恢复

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权) 编辑手记:这一节我们将介绍多租户中的备份与恢复,这篇文章来自<深入解析Oracle>一书的摘录. 由于 PDB 的引入,Oracle 数据库的备份和恢复也发生了很多变化,基于 PDB 级别的表空间.库备份同时被支持.以下通过实际测试介绍一下12c中关于 PDB 的备份恢复过程. ⑴ 启动归档模式   首先启动数据库的归档模式(需要以IMMEDIATE方式关闭数据库,执行模式更改): 根据数据库的实际情况,设置闪

Oracle 12c PDB浅析

不管怎么样,12c出来这么久,总是因为各种各样的原因没有开始学习,现在似乎还是有些晚了.总是耳闻PDB在12c是一种全新的架构模式,在各种技术聊天也大概知道是一种可插拨的新型架构模式,但是似乎SQLServer中也有类似的架构,不管怎么样Oracle圈内还是很火,而且听说12c r2可以支持4096个pdb,这个也太大了,docker装一下试试:) 自己也在本地尝试了一下,其实中间了花了些时间,中途总是被各种事情打断,所以留下的都是一些零碎的知识片段,自己索引把环境重新删了再做几次. 在这种尝试

Oracle 12c多租户特性详解:PDB 的出与入 InAndOut

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权) 编辑手记:这一节我们将介绍多租户中PDB的Plug-Out 与 Plug-In与备份恢复,这篇文章来自<深入解析Oracle>一书的摘录. 将 Non-PDB 插入 CDB   在12c中,可以将一个非 CDB(也即NON-CDB)插入到 CDB 中,这个过程需要在只读模式下进行.   以下测试首先启动一个常规的 Non-CDB 数据库: 这个数据库中已经预先建立了一个数据库用户,并且有一个测试表: 在12c中

Oracle 12c PDB浅析(二)

之前写了第一篇Oracle 12c PDB浅析 http://blog.itpub.net/23718752/viewspace-1823792/?          在上次的基础上继续来学习学习.     首先关于多租户的架构设计来说,就好比在一座已经几十年的老房子上动地基一般,这个变化着实够大,如此重大的变化Oracle不遗余力的想引入进来,肯定有更深层次的原因,当然关于这种设计在SQLServer中确实已经早有实现,在Oracle中却被大家相传为一种略带神奇的架构设计.不过话说回来,这个和