PDB数据库的创建可以从现存的数据库中复制数据文件,包括种子容器、可插拔数据库、non-CDB数据库,创建时可以使用CREATE PLUGGABLE、RMAN、DBCA以及EM等。
在12.1版本中在创建PDB时,Source PDB必须处于read only状态,在12.2版本中,因为undo local mode新特性的推出,在创建PDB时,Source PDB在read write状态,依然可以创建。
另外在12.2版本中Oracle推出了refresh PDB特性,具有对Source PDB进行增量同步的功能。
使用CREATE PLUGGABLE命令可以使用以下资源创建PDB
CDB seed (PDB$SEED)
克隆已经存在的PDB
Local PDB
Remote PDBnon-CDB数据库
拔下的PDB
使用DBCA可以使用以下资源创建PDB
CDB seed (PDB$SEED)
RMAN备份
拔下的PDB
示例:(这里只演示使用create pluggable database命令方式创建PDB)
使用CDB seed创建PDB
1.在SQL*Plus
中输入CREATE PLUGGABLE DATABASE
语句
(这里创建未ypdb1的pdb,管理用户为ypdb1)
CREATE PLUGGABLE DATABASE ypdb1 ADMIN USER ypdb1 IDENTIFIED BY oracle
STORAGE (MAXSIZE 2G)
DEFAULT TABLESPACE ypdb1
DATAFILE '/u01/app/oracle/oradata/ora12c/ypdb1/ypdb01.dbf' SIZE 100M AUTOEXTEND ON
PATH_PREFIX = '/u01/app/oracle/oradata/ora12c/ypdb1/'
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/ora12c/pdbseed',
'/u01/app/oracle/oradata/ora12c/ypdb1');
ADMIN USER | 用于执行管理任务的本地用户 |
---|---|
STORAGE (MAXSIZE 2G) | 指定了PDB可用的最大空间 |
DEFAULT TABLESPACE | 为PDB指定默认的Tablespace |
PATH_PREFIX | 用来限制directory objects/Oracle XML/Create pfile/Oracle wallets所在的目录 |
FILE_NAME_CONVERT | 设置子容器和数据文件副本的位置 |
2.语句执行完毕之后查看创建完成的PDB:
sys. ora12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 YPDB1 MOUNTED
sys. ora12c>
克隆已经存在的PDB
这种方式可以通过使用当前CDB中的其他PDB,以及复制远端CDB中的PDB,还可以复制non-CDB数据库创建成PDB。
Clone a Local PDB
在Clone本地PDB时需要注意一下几点:
使用的用户必须拥有’CREATE PLUGGABLE DATABASE’的权限(测试里使用sys用户)
源PDB不可以是关闭状态
如果CDB为shared undo,PDB必须为READ-ONLY状态
如果CDB不是归档模式,那么PDB必须为READ-ONLY状态
说明:如果是Oracle Database 版本为12.1,那么PDB只能为READ-ONLY状态,因在12.1中undo模式,还只能选择shared undo。
sys. ora12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 YPDB1 READ WRITE NO
sys. ora12c>
这里使用YPDB1做为源PDB,创建的PDB为YPDB2。
(1) 检查是否为shared undo模式
COL PROPERTY_NAME FOR A30
COL PROPERTY_VALUE FOR A30
SELECT property_name, property_value
FROM database_properties
WHERE property_name='LOCAL_UNDO_ENABLED';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED TRUE
(2) 检查是否未archivelog模式
sys. ora12c>ARCHIVE LOG LIST
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/recovery/ora12c/arch
Oldest online log sequence 21
Next log sequence to archive 23
Current log sequence 23
sys. ora12c>
(3) 创建验证数据
yangyuhang. ypdb1>CONN /AS SYSDBA
Connected.
sys. ora12c>conn yangyuhang/yangyuhang@ypdb1
Connected.
yangyuhang. ypdb1>SELECT COUNT(*) FROM t;
COUNT(*)
----------
22198
Elapsed: 00:00:00.01
yangyuhang. ypdb1>
(4) 执行CREATE PLUGGABLE DATABASE语句(这里使用sys用户连接根容器)
CREATE PLUGGABLE DATABASE ypdb2 FROM ypdb1
PATH_PREFIX = '/u01/app/oracle/oradata/ora12c/ypdb2/'
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/ora12c/ypdb1/', '/u01/app/oracle/oradata/ora12c/ypdb2/')
SERVICE_NAME_CONVERT = ('ypdb1t','ypdb2t');
(5) 查看创建完成的YPDB2
sys. ora12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 YPDB1 READ WRITE NO
4 YPDB2 MOUNTED
sys. ora12c>SELECT pdb_id, pdb_name, con_uid, status, creation_scn, con_id FROM cdb_pdbs;
PDB_ID PDB_NAME CON_UID STATUS CREATION_SCN CON_ID
--------