#CREATE PLUGGABLE DATABASE
# 通用描述
CREATE PLUGGABLE DATABASE用于创建一个可插拔数据库(PDB)。
该语句的适用范围如下:
该语句仅适用于容器数据库(配置参数ENABLE_PLUGGABLE_DATABASE=TRUE),且只能连接根容器执行。
该语句不适用于存算一体分布式集群部署。
执行该语句要求根容器处于OPEN状态。
# 语句定义
create pluggable database::=
# 1. pdb_name
指定要创建的PDB的名称,不可省略,且需符合YashanDB的对象命名规范。
# 2. create_pdb_from_seed
该语句用于根据种子容器创建一个标准PDB。
# 2.1. file_name_convert
该语句用于配置PDB的数据文件路径(后文将简化称为“PDB_DATA”)转换规则,系统会根据转换规则将新PDB的数据文件路径配置为目标路径。可省略,省略时使用默认路径。
如需为新建PDB规划自定义数据文件路径,在创建PDB前必须先完成对应路径的创建(以及权限配置),并在创建PDB时使用该语句完成路径转换。
| 部署形态 | 默认PDB_DATA | 自定义PDB_DATA要求 |
|---|---|---|
| 单机部署 | $YASDB_DATA/containers/{pdb_name} | 必须为本地路径,且数据库安装用户必须具备读写权限 |
| 共享集群/分布式集群部署 | +DG0/containers/{pdb_name} | 必须为YFS路径 |
Note:
若PDB创建失败后再次重试时仍需使用原计划的自定义PDB_DATA,重试前还需确保目标路径为空。
NONE
表示不指定转换规则,效果等同于省略file_name_convert子句。
('filename_pattern','replacement_filename_pattern')
filename_pattern应指定为种子容器中的文件路径,种子容器的文件均存放在$YASDB_DATA/containers/PDB$SEED目录(单机部署)或+DG0/containers/PDB$SEED目录(共享集群/分布式集群部署)。
replacement_filename_pattern应指定为替换字符。
上述路径指定格式要求如下:
在单机部署中,可以采用绝对路径(例如
/data/yashan/yasdb_data/db-1-1/containers/PDB$SEED/dbfiles)或以?或.替代$YASDB_DATA的相对路径(例如?/containers/PDB$SEED/dbfiles或./containers/PDB$SEED/dbfiles)。在共享集群/分布式集群部署中,必须为YFS完整路径(例如
+DG0/containers/PDB$SEED/dbfiles)。
# 2.2. ADMIN USER
该语句用于指定PDB的本地用户信息,可省略,省略则不创建本地用户。
若创建本地用户,该用户初始只具备登录权限(CREATE SESSION)。
# 2.3. default_tablespace
该语句用于指定内置的USERS表空间(DEFAULT)的属性,可省略,省略则系统按缺省值创建USERS表空间。
语法规则同CREATE DATABASE中tablespace_clause。
# 2.4. ARCHIVELOG|NOARCHIVELOG
该语句用于指定PDB是否开启归档模式,可省略,省略则跟随根容器的相应配置。
# 3. COMPAT_MODE
该语句用于指定PDB的语法模式,可省略,省略则默认为yashan模式。
yashan模式:使用YashanDB的语法体系,PDB创建后无法切换为mysql模式。
mysql模式:用户输入的SQL语句将优先按照MySQL的语法体系进行解析,适用于需要密切适配MySQL数据库的使用场景。
示例(单机部署)
-- 指定转换路径
CREATE PLUGGABLE DATABASE pdb1
FILE_NAME_CONVERT=('?/containers/PDB$SEED','?/pdb1')
ADMIN USER sys_pdb1 IDENTIFIED BY sys_pdb1
DEFAULT TABLESPACE DATAFILE 'userspdb1' size 128M;
示例(共享集群/分布式集群部署)
-- 指定转换路径
CREATE PLUGGABLE DATABASE pdb1
FILE_NAME_CONVERT=('+DG0/containers/PDB$SEED/dbfiles','+DG1/PDB1/dbfiles')
ADMIN USER sys_pdb1 IDENTIFIED BY sys_pdb1
DEFAULT TABLESPACE DATAFILE 'userspdb1' size 128M;
示例(单机/共享集群/分布式集群部署)
-- 不指定转换路径
CREATE PLUGGABLE DATABASE yashancdb_pdb2
FILE_NAME_CONVERT=NONE
ADMIN USER sys_pdb2 IDENTIFIED BY sys_pdb2
DEFAULT TABLESPACE DATAFILE 'userspdb2' size 128M;
-- 开启归档模式
CREATE PLUGGABLE DATABASE yashancdb_pdb3
ADMIN USER sys_pdb3 IDENTIFIED BY sys_pdb3
DEFAULT TABLESPACE DATAFILE 'userspdb3' size 128M
ARCHIVELOG;
-- 指定语法模式为mysql
CREATE PLUGGABLE DATABASE yashancdb_pdb4
ADMIN USER sys_pdb4 IDENTIFIED BY sys_pdb4
DEFAULT TABLESPACE DATAFILE 'userspdb4' size 128M
ARCHIVELOG
COMPAT_MODE = mysql;

