Oracle 12c及以上手工创建pdb

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。


猜你喜欢

转载自blog.51cto.com/11310506/2437233