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。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章