内容简介: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).
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- qBittorrent - 优秀的种子下载工具
- 基于Anglar-cli的种子工程
- 基于Anglar-cli的种子工程
- SpringBoot2.1脚手架(种子)项目
- 基于python的种子搜索网站--开发过程
- 视频 | BT 种子和磁力链接是如何工作的?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。