1、通过seed方式创建
CREATE PLUGGABLE DATABASE salespdb
ADMIN USER salesadm IDENTIFIED BY password
ROLES = (dba)
DEFAULT TABLESPACE sales
DATAFILE '/home/oracle/scripts/ORCL/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON
FILE_NAME_CONVERT = ('/home/oracle/scripts/ORCL/pdbseed/','/home/oracle/scripts/ORCL/salespdb/')
STORAGE (MAXSIZE 2G)
PATH_PREFIX = '/home/oracle/scripts/ORCL/salespdb/'
说明:/disk1/oracle/dbs/pdbseed/为种子数据库数据文件存放路径,/disk1/oracle/dbs/salespdb/为新的pdb数据库文件存放路径。
2、通过已有的pdb创建(pdb必须处于打开模式)
ORA-65036: 插接式数据库 SALESPDB 未在所需模式下打开
CREATE PLUGGABLE DATABASE salespdb1 FROM salespdb
FILE_NAME_CONVERT = ('/home/oracle/scripts/ORCL/salespdb/', '/home/oracle/scripts/ORCL/salespdb1/')
PATH_PREFIX = '/home/oracle/scripts/ORCL/salespdb1';
3、手工创建pdb后错误(RESTRICTED值属于yes)
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
4 SALESPDB READ WRITE YES
5 HQ_PDB READ WRITE YES
6 SALESPDB1 READ WRITE NO
select * from PDB_PLUG_IN_VIOLATIONS
原因
用种子PDB或插入或克隆方法创建PDB后,可以通过查询 CDB_PDBS 视图的STATUS 列查看新 PDB 的状态。
如果在打开新 PDB 之前创建了公用用户和角色,必须同步 PDB 才能从根检索新的公用用户和角色。
当 PDB 在读/写模式下打开时,会自动执行同步。如果在只读模式下打开 PDB,则会返回错误。
可以通过查询 PDB_PLUG_IN_VIOLATIONS 视图查看违规说明。
3. 方案
因此,唯一能做的就是在 PDBPROD2 中创建该表空间,关闭数据库,再次进行同步即可。
create tablespace sqlaudit_mon datafile '/home/oracle/scripts/ORCL/salespdb/sqlaudit_mon.dbf' size 10m;
create tablespace sqlaudit_mon datafile '/home/oracle/scripts/ORCL/salespdb1/sqlaudit_mon.dbf' size 10m;
在CDB下查询受限的PDB:
select con_id, name,open_mode,restricted from v$pdbs;
在PDB中查询相关受限的PDB:
select instance_name,logins,status from gv$instance (v$containers也可以查询)
cdb下更换 pdb restricted 模式:
alter pluggable database pdb_name close immediate instance=all;(all except pdb1)
alter pluggable database pdb_name open read write instance=all;
pdb下更换 pdb restricted 模式:
alter session set container=pdb_name;
alter session set container=SALESPDB;
alter pluggable database close immediate;
alter pluggable database open;
在受限模式下,可以授予特定用户 restricted session权限用于临时登录,记得revoke。