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

简介: 在Oracle中基于PDB种子复制数据库的方式,这个与SQLServert中直接创建数据库比较类似。

在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).

DBA牛鹏社(SQL/NOSQL/LINUX)

这里写图片描述

目录
相关文章
|
3天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
32 11
|
16天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
22天前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
9天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
45 7
|
3天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
50 15
|
4天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
8天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
16天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
28天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
35 1

热门文章

最新文章

推荐镜像

更多