oracle 19c建立非OMF檔案命名格式的PDB
問題描述
如果在CDB 最初建立時,啟用了OMF 檔案管理功能進行建立,那麼生成的所有檔案將會使用OMF 檔案命名格式,此時我們應該如何建立出非OMF 檔案命名格式的PDB 呢。
使用file_name_convert 包含全部資料檔案建立PDB
檢視種子容器
// 連線種子容器,檢視db_create_file_dest引數:
SQL> alter session set container=PDB$SEED;
Session altered.
SQL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +DATA_DISK
// 為OMF檔案管理
// 檢視種子容器資料檔案位置
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.265.1044631095
+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.266.1044631095
+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.267.1044631095
克隆種子容器
連線至根容器,在根容器進行建立salespdb
create pluggable database salespdb
admin user byh identified by oracle
file_name_convert = ('+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE',
'+DATA_DISK/ORCL/SALESPDB' );
// 如果使用OMF功能,就不需要file_name_convert引數,自動管理建立檔名稱以及位置
create pluggable database salespdb
admin user byh identified by oracle
//+DATA_DISK/ORCL/SALESPDB/ 該目錄需要事先被建立
ASMCMD> pwd
+DATA_DISK/ORCL
ASMCMD> mkdir SALESPDB
當種子容器的資料檔案檔名為OMF檔名格式,在我們不使用OMF功能建立PDB時,db_file_name_convert必須包含全部的資料檔案,否則會出現如下錯誤
create pluggable database salespdb
admin user byh identified by oracle
file_name_convert =('+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.265.1044631095',
'+DATA_DISK/ORCL/SALESPDB/system01.dbf','+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.266.1044631095','+DATA_DISK/ORCL/SALESPDB/sysaux01.dbf','+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.267.1044631095','+DATA_DISK/ORCL/SALESPDB/undotbs1.dbf', '+DATA_DISK/ORCL/A95D17FF830756CDE0539BEEA8C08D7A/TEMPFILE/temp.268.1044631129','+DATA_DISK/ORCL/SALESPDB/temp01.dbf')
注意在file_name_convert中加入臨時檔案(否則會出如下錯誤)
檢視新建立PDB 的資料檔案命名
SQL> alter session set container=salespdb;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
SALESPDB
SQL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +DATA_DISK
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA_DISK/ORCL/SALESPDB/system01.dbf
+DATA_DISK/ORCL/SALESPDB/sysaux01.dbf
+DATA_DISK/ORCL/SALESPDB/undotbs1.dbf
的引數繼承
啟動新建立的PDB:
SQL> alter session set container=salespdb;
Session altered.
SQL> alter database open;
Database altered.
SQL> show con_name;
CON_NAME
------------------------------
SALESPDB
SQL> create tablespace bao;
Tablespace created.
SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='BAO';
FILE_NAME TABLESPACE_NAME
---------- ------------------------------
+DATA_DISK BAO
/ORCL/A9AE
0C853DEE18
46E0539BEE
A8C03069/D
ATAFILE/ba
o.294.1044
980091
// 由於此時還沒有修改db_create_file_dest引數,那麼就依然可以使用OMF功能。
SQL> drop tablespace bao including contents and datafiles;
SQL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +DATA_DISK
修改這個引數:
SQL> alter system set db_create_file_dest='';
System altered.
SQL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
//PDB 級別的引數修改僅在該PDB有效,不會影響其他PDB。
//PDB 級別的初始化引數不是儲存在SPFILE 中,而是儲存在 CDB 的資料字典 PDB_SPFILE$ 內部表中,該引數修改完成後,可以在根容器的pdb_spfile$中檢視
SQL> select pdb_uid,name,value$ from pdb_spfile$; // 在CDB中檢視,在PDB中為空
PDB_UID NAME VALUE$
---------- -------------------- --------------------
3809949089 db_create_file_dest ''
// 在CDB中檢視PDB_UID
SQL> select con_uid,pdb_name from cdb_pdbs;
CON_UID PDB_NAME
---------- --------------------
2670145786 PDBBAO
1457981965 PDB$SEED
3809949089 SALESPDB
// 再次建立表空間
SQL> create tablespace bao;
create tablespace bao
*
ERROR at line 1:
ORA-02199: missing DATAFILE/TEMPFILE clause
//OMF 管理功能已經關閉。
SQL> create tablespace bao datafile '+DATA_DISK/ORCL/SALESPDB/bao.dbf' size 50M;
Tablespace created.
結論
說明:
當我們的種子容器或者其他PDB檔案格式為OMF檔名格式,在我們不使用OMF功能建立PDB時,db_file_name_convert必須包含全部的資料檔案,因為是在ASM上。
根據種子容器生成的資料檔案(也就是說透過file_name_convert轉換出來的檔案)為非OMF檔名格式的檔案,但是建立出來的PDB,會繼承根容器的引數配置,根容器的db_create_file_dest引數是設定的,也就是說根容器啟動了OMF管理,新建立出來的PDB也就會繼承這個引數,也是開啟了OMF功能,但是克隆生成的system,sysaux,undo還有temp檔案,屬於非OMF管理生成的檔案(非OMF檔名格式的檔案),我們可以在PDB級別修改這個引數,來關閉OMF檔案管理功能,進而在PDB中建立資料檔案。
不指定所有的資料檔案建立PDB
方法描述
那麼如何才能不需要指定所有的資料檔案建立PDB呢
那麼我們就需要構造一個模版,將這個模版中的資料檔案(之前使用OMF功能建立的資料檔案)將其重新命名為非OMF檔名格式
然後再次建立PDB。
使用RMAN copy 資料檔案
CDB 操作:
//mount 狀態
SQL>shutdown immediate
SQL>startup mount
RMAN> copy datafile '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.265.1044631095' to '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.dbf';
RMAN> copy datafile '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.266.1044631095' to '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.dbf';
RMAN> copy datafile '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.267.1044631095' to '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.dbf';
臨時檔案我們無法使用RMAN COPY 故採用作業系統cp命令
ASMCMD> cp TEMP.268.1044631129 TEMP01.dbf
copying +DATA_DISK/ORCL/A95D17FF830756CDE0539BEEA8C08D7A/TEMPFILE/TEMP.268.1044631129 -> +DATA_DISK/ORCL/A95D17FF830756CDE0539BEEA8C08D7A/TEMPFILE/TEMP01.dbf
種子容器資料檔案重新命名
// 進入到PDB$SEED
SQL>alter session set container=PDB$SEED
SQL>alter pluggable database rename file '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.265.1044631095' to '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.dbf';
SQL>alter pluggable database rename file '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.266.1044631095' to '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.dbf';
SQL>alter pluggable database rename file '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.267.1044631095' to '+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.dbf';
SQL> alter pluggable database rename file '+DATA_DISK/ORCL/A95D17FF830756CDE0539BEEA8C08D7A/TEMPFILE/TEMP.268.1044631129' to '+DATA_DISK/ORCL/A95D17FF830756CDE0539BEEA8C08D7A/TEMPFILE/TEMP01.dbf'
// 重新命名完畢
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.dbf
+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.dbf
+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.dbf
建立PDB
再次建立PDB
開啟CDB
SQL> alter database open;
SQL>
create pluggable database salespdb
admin user byh identified by oracle
file_name_convert =('+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE',
'+DATA_DISK/ORCL/SALESPDB','+DATA_DISK/ORCL/A95D17FF830756CDE0539BEEA8C08D7A/TEMPFILE','+DATA_DISK/ORCL/SALESPDB')
檢視新建PDB 的資料檔案命名格式
SQL> alter session set container=salespdb;
Session altered.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA_DISK/ORCL/SALESPDB/system.dbf
+DATA_DISK/ORCL/SALESPDB/sysaux.dbf
+DATA_DISK/ORCL/SALESPDB/undotbs1.dbf
如果CDB關閉了OMF,再次進行建立時,不指定全部的資料檔案結果會如何:
SQL> alter pluggable database SALESPDB close immediate
SQL> drop pluggable database SALESPDB including datafiles
SQL> create pluggable database salespdb
admin user byh identified by oracle
file_name_convert =('+DATA_DISK/ORCL/86B637B62FE07A65E053F706E80A27CA/DATAFILE',
'+DATA_DISK/ORCL/SALESPDB')
// 看來之前使用OMF檔案管理功能建立出來的資料檔案(資料檔案命名格式為OMF),即使後面將OMF關閉,也不可以。
克隆現存PDB的方式也可以
[grid@rac1 ~]$ asmcmd
ASMCMD> cd DATA_DISK/
ASMCMD> cd ORCL
ASMCMD> mkdir SALESPDB2
create pluggable database salespdb2 from PDB$SEED
不可以將種子容器做為源 PDB 來克隆 PDB
根據現存的PDB建立PDB
create pluggable database salespdb2 from PDBBAO
file_name_convert =('+DATA_DISK/ORCL/A95D6F0AF6250D91E0539BEEA8C09172/DATAFILE/system.274.1044632559',
'+DATA_DISK/ORCL/SALESPDB2/system01.dbf','+DATA_DISK/ORCL/A95D6F0AF6250D91E0539BEEA8C09172/DATAFILE/sysaux.275.1044632559','+DATA_DISK/ORCL/SALESPDB2/sysaux01.dbf','+DATA_DISK/ORCL/A95D6F0AF6250D91E0539BEEA8C09172/DATAFILE/undotbs1.273.1044632557','+DATA_DISK/ORCL/SALESPDB2/undo01.dbf','+DATA_DISK/ORCL/A95D6F0AF6250D91E0539BEEA8C09172/DATAFILE/undo_2.277.1044632629','+DATA_DISK/ORCL/SALESPDB2/undo02.dbf'
,'+DATA_DISK/ORCL/A95D6F0AF6250D91E0539BEEA8C09172/DATAFILE/users.278.1044632637','+DATA_DISK/ORCL/SALESPDB2/user01.dbf',
'+DATA_DISK/ORCL/A95D6F0AF6250D91E0539BEEA8C09172/TEMPFILE/temp.276.1044632567','+DATA_DISK/ORCL/SALESPDB2/temp01.dbf')
Pluggable database created.
SQL> alter session set container=salespdb2;
Session altered.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA_DISK/ORCL/SALESPDB2/system01.dbf
+DATA_DISK/ORCL/SALESPDB2/sysaux01.dbf
+DATA_DISK/ORCL/SALESPDB2/undo01.dbf
+DATA_DISK/ORCL/SALESPDB2/undo02.dbf
+DATA_DISK/ORCL/SALESPDB2/user01.dbf
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69980685/viewspace-3004166/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 19c CDB vs pdb 建立Oracle
- oracle 19c pdb遷移Oracle
- 【ASK_ORACLE】Oracle如何重新命名PDBOracle
- 【OMF】使用Oracle的OMF 特性Oracle
- oracle 12c 多租戶 pdb 恢復(單個pdb資料檔案、非系統pdb表空間、整個pdb資料庫)Oracle資料庫
- Oracle 12C -- 使用seed PDB建立新的pdbOracle
- PDB檔案的用途
- 非OMF管理 自動新增資料檔案add_datafiles.sh
- 12c pdb線上移動資料檔案或者重新命名資料檔案
- orapwd 工具建立密碼檔案遵守的命名方法密碼
- Oracle 建立PDB-Plugging In an Unplugged PDBOracle
- 【PDB】Oracle 建立pdb說明(create pluggable database)OracleDatabase
- Oracle 建立PDB-本地克隆Oracle
- Oracle 建立PDB-from ScratchOracle
- ORACLE 重新命名資料檔案Oracle
- oracle OMF的使用Oracle
- 1.3.2.2.2 通過Non-CDB(非CDB模式)建立PDB模式
- Oracle 建立PDB-遠端克隆Oracle
- 4.3.4.1 在不使用Oracle OMF的情況下建立CDBOracle
- Oracle 12c系列(二)|PDB的建立Oracle
- SAP GUI PDB檔案的作用GUI
- 1.3.2.2.2. 通過Non-CDB(非CDB模式)建立PDB模式
- 告急:關於檔案的定義格式與命名規則的問題
- 建立oracle 密碼檔案Oracle密碼
- Oracle 建立口令檔案 orapwdOracle
- Oracle 12C 中CDB和PDB的引數檔案管理Oracle
- 12C關於CDB、PDB線上移動資料檔案、線上重新命名資料檔案的操作說明
- 非OMF管理下ORACLE 11G R2 Data Guard配置Oracle
- ORACLE RAC ASM資料檔案遷移OMF檔案報錯ORA-01276解決OracleASM
- Oracle 19c standby 建立資料檔案報錯ORA-01111Oracle
- OMF (Oracle Managed File)Oracle
- RAC中歸檔日誌得命名格式
- Oracle 12.2.0.1.0 PDB丟失資料檔案對CDB的影響Oracle
- 12c使用DBCA和手工兩種方式建立PDB時如何正確指定pdb檔案路徑
- Oracle 12c 多租戶 手工建立 pdb 與 手工刪除 pdbOracle
- 指令碼檔案命名指令碼
- ogg for oracle 19c 非cdb安裝配置Oracle
- 【LINUX】磁碟格式化 建立檔案系統Linux