从种子(即 PDB$SEED PDB)创建新 PDB,例如用于新应用程序实施的 PDB。此类 PDB 创建
工作几乎可以即时完成,创建脚本其实很简单,下面咱们看一下创建的过程:
1、 从 PDB$SEED 数据文件复制数据文件
2、创建 SYSTEM 和 SYSAUX 表空间
3、创建完整目录,包括指向 Oracle提供的对象的元数据
4、 创建临时表空间 TEMP
5、 创建公用用户:
– 超级用户 SYS
– SYSTEM
6、创建授予本地 PDB_DBA 角色的本地用户 (PDBA)
7、创建新的默认服务
从种子创建新 PDB 几乎可以即时完成。此操作会将数据文件从 READ ONLY 种子 PDB复制到在
CREATE PLUGGABLE DATABASE 语句中定义的目标目录。还会创建表空间,例如用于存储完整目
录(其中包括指向 Oracle 提供的对象的元数据)的 SYSTEM,用于本地辅助数据的 SYSAUX,
用于临时数据的 TEMP。会创建存在于种子 PDB 中的默认方案和公用用户,继续拥有所有超级
用户权限的 SYS,以及能够管理 PDB 的 SYSTEM。还会创建授予本地 PDB_DBA 角色的本地用户
(PDBA)。在 PDB SYS 用户向本地 PDB_DBA 角色授予权限之前,新 PDBA 无法执行除连接到
PDB 以外的任何其他操作。此外,还会为 PDB 创建新的默认服务。创建脚本如下:
1、创建表空间
create tablespace max_well datafile '/app/max_well/max_well.dbf' size 1024M;
2、创建PDB
create pluggable database max_well ADMIN USER max_well IDENTIFIED BY max_well default tablespace max_well;
3、打开PDB
alter pluggable database max_well open;
4、切换到刚才创建的PDB
alter session set container=max_well;
5、给用户授权
grant connect,resource to max_well;
grant create any sequence to max_well;
grant create any table to max_well;
grant delete any table to max_well;
grant insert any table to max_well;
grant select any table to max_well;
grant unlimited tablespace to max_well;
grant execute any procedure to max_well;
grant update any table to max_well;
grant create any view to max_well;
语句完成后,使用视图验证 PDB 是否已正确创建。
- CDB_PDBS 视图显示 PDB 列表,CDB_TABLESPACES 视图显示新 PDB 的表
空间列表(SYSTEM、SYSAUX)。
- 以任何 PDB 中都存在的 SYS 用户或以 max_well 用户身份连接到 PDB。
要创建多个PDB重复以上步骤即可。同步
使用种子 PDB 或插入或克隆方法创建 PDB 后,您可以通过查询 CDB_PDBS 视图的
STATUS 列查看新 PDB 的状态。如果在打开新 PDB 之前创建了公用用户和角色,必须
同步 PDB 才能从根检索新的公用用户和角色。当 PDB 在读/写模式下打开时,会自动执
行同步。
如果在只读模式下打开 PDB,则会返回错误。打开新 PDB 时,Oracle DB 会检查 PDB 与
CDB 的兼容性。每个兼容性违规都是一个警告或错误。如果兼容性违规是一个警告,则
在预警日志中记录这个警告,但 PDB 会正常打开,不显示警告信息。如果兼容性违规是
一个错误,则在打开 PDB 时显示错误消息,并在预警日志中记录错误。您必须更正引起
每个错误的问题。发生错误时,仅限拥有 RESTRICTED SESSION 权限的用户可以访问
PDB,从而确保兼容性违规可以得到解决。您可以通过查询 PDB_PLUG_IN_VIOLATIONS
视图查看违规说明。