在Oracle 12c CDB模式中,有多种方式可以创建PDB,包括使用CDB seed和Application seed、克隆已存在的PDB或者non-CDB、插入PDB或者non-CDB。当然不可能无限创建,PDB的数量是有上限的,其上限是4096。下面的图展示了PDB的创建方式:
CREATE PLUGGABLE DATABASE
create pluggable database是创建PDB的基本语句,下面来介绍几个重要的参数:
1.存储限制(storage),非必要参数,该参数用来限制PDB的大小,和表空间大小限制相似,例如,storage (maxsize 10G),表示PDB的最大为10G,storage (maxsize unlimited)则表示无限,这也是默认值。
2.管理员用户(admin user),必要参数,想要创建PDB就必须指定一个用户,该用户会默认拥有PDB_DBA角色,例如,admin user pdb_user identified by passwd。
3.文件名转换(file_name_convert),用过DG的会对convert参数有了解,该参数用来告诉数据库创建的文件名的映射关系,需要注意的是,在12c RAC中,如果是ASM方式,会强制使用OMF方式管理文件,如下图,所以要指定file_name_convert=none,那么对于单机库,则要指定实际的映射关系。
通过CDB seed创建PDB
使用CDB seed或者Application seed来创建PDB,简单来说就是拷贝seed的关联文件到新的地址,并且创建拷贝文件和新PDB的联系。
由于seed中只有SYSTEM、SYSAUX、UNDO(如果在安装实例时不选择使用本地undo会如何呢?)、TEMP表空间,所以在新的PDB中想要添加新的表空间就需要使用DEFAULT TABLESPACE。
1.使用CDB seed创建PDBcreate pluggable database pdb_name
admin user user_name identified by passwd
roles = (connect)
default tablespace tps_name datafile 'path' size 250m autoextend on
file_name_convert = none
storage (maxsize unlimited);
2.使用Application seed创建PDB
创建Application容器create pluggable database con_name as application container
admin user user_name identified by passwd
roles = (connect)
default tablespace tps_name datafile 'path' size 100m autoextend on
file_name_convert = none
storage (maxsize unlimited);
创建Application seedcreate pluggable database as seed admin user user_name identified by passwd;
alter pluggable database appcon$seed open;
alter session set container=appcon$seed;
alter pluggable database application all sync;
alter pluggable database close immediate;
alter pluggable database open read only;
创建PDBcreate pluggable database pdb_name
admin user user_name identified by passwd
roles = (connect)
default tablespace sales datafile '+path/' size 250m autoextend on
file_name_convert = none
storage (maxsize unlimited);