您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Oracle 12c中怎么利用Non-CDB創建PDB,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
可以移動Non-CDB來變為一個PDB。可以使用以下方式來完成這個任務:
.通過克隆Non-CDB來創建PDB。從Oracle 12.1.0.2開始,可以通過克隆Non-CDB來創建PDB。這種方法是創建PDB最簡單的一種方法,但它需要從Non-CDB中把文件復制到新目錄中。
.使用dbms_pdb包來生成XML元數據文件,XML元數據文件用來描述Non-CDB的數據文件可以用來將其附加到CDB中。這種方法比克隆Non-CDB要執行更多的步驟,但它能讓你不用移動Non-CDB的文件來創建PDB。為了使用這種技術 ,Non-CDB必須是Oracle 12C的Non-CDB。如果當前的Non-CDB使用Oracle 12C之前的版本,那么你必須將Non-CDB升級到Oracle 12C。
.使用Oracle Data Pump導出/導入
可以使用Data Pump從Non-CDB中導出數據然后導入到PDB中。當你執行導入時,在用戶名后要指定PDB的連接標識符。例如,如果PDB的連接標識符為hrpdb,那么在執行導入進執行以下命令:
imdp username@hrpdb ....如果Non-CDB的版本為11.2.0.3或之后的版本,那么可以使用完全傳輸導出/導入來移動數據。當將版本為11.2.0.3或之后的11g版本的Non-CDB遷移到Oracle 12C,那么在導出時需要將version參數設置為12.0.0.0.0或更高版本。如果Non-CDB的版本為11.2.0.3之前的版本,那么可以使用傳輸表空間來移動數據或者執行完全數據庫導出\導入。
.使用goldengate復制
可以使用goldengate從Non-CDB中復制數據到PDB中。
對Non-CDB執行dbms_pdb包
可以使用dbms_pdb包來為Non-CDB生成XML元數據文件來將其附加到CDB中。使用dbms_pdb包移動Non-CDB為PDB的操作如下:
1.如果CDB不存在先創建CDB
2.確保Non-CDB處于事務一致狀態并將它置于只讀狀態
[oracle@jytest1 ~]$ export ORACLE_SID=orcl1 [oracle@jytest1 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 00:38:31 2017 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount ORACLE instance started. Total System Global Area 4294967296 bytes Fixed Size 8628936 bytes Variable Size 2583692600 bytes Database Buffers 1694498816 bytes Redo Buffers 8146944 bytes Database mounted. SQL> alter database open read only; Database altered. [oracle@jytest2 ~]$ export ORACLE_SID=orcl2 [oracle@jytest2 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 00:38:31 2017 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount ORACLE instance started. Total System Global Area 4294967296 bytes Fixed Size 8628936 bytes Variable Size 2583692600 bytes Database Buffers 1694498816 bytes Redo Buffers 8146944 bytes Database mounted. SQL> alter database open read only; Database altered.
3.連接到Non-CDB,并執行dbms_pdb.describe過程來創建描述Non-CDB的XML元數據文件。執行該過程的用戶必須有sysdba權限。
SQL> exec dbms_pdb.describe(pdb_descr_file=>'/cdb_pdb/orcl.xml'); PL/SQL procedure successfully completed. [oracle@jytest2 cdb_pdb]$ ls -lrt total 8 -rw-r--r-- 1 oracle asmadmin 6963 Sep 7 00:18 orcl.xml
4.執行dbms_pdb.check_plug_compatibility過程來判斷是否Non-CDB與目標CDB兼容。當執行這個過程時設置以下參數:
-pdb_descr_file:設置XML元數據文件的完整路徑。
-pdb_name:指定新PDB名字,如果這個參數被忽略,那么將使用XML元數據文件中的PDB名字。
SQL> set serveroutput on 1 declare 2 compatible constant varchar2(3) := 3 case dbms_pdb.check_plug_compatibility( 4 pdb_descr_file => '/cdb_pdb/orcl.xml', 5 pdb_name => 'orclpdb') 6 when true then 'yes' 7 else 'no' 8 end; 9 begin 10 dbms_output.put_line(compatible); 11 end; 12 / yes PL/SQL procedure successfully completed.
如果輸出為yes,那么Non-CDB是兼容的,并且可以繼續下一步操作。如果輸出為no,那么Non-CDB與目標CDB不兼容,并且可以檢查pdb_plug_in_violations視圖來檢查為什么不兼容。所有的違反條目在繼續操作之前必須被修復。例如,任何版本或補丁不匹配可以通過執行升級或打補丁來解決。在修復這個違反條目后,再次執行dbms_pdb.check_plug_compatibility來確保Non-CDB與目標CDB兼容。
5.關閉Non-CDB
[grid@jytest1 ~]$ srvctl stop database -db orcl
6.插入Non-CDB
SQL> create pluggable database orclpdb using '/cdb_pdb/orcl.xml' 2 copy 3 file_name_convert = ('+DATA/orcl/datafile/', '+data/jy/orclpdb/','+DATA/orcl/tempfile/','+data/jy/orclpdb/'); Pluggable database created. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY JYPDB READ WRITE ORCLPDB MOUNTED ASMCMD [+data/jy/orclpdb] > ls -lt Type Redund Striped Time Sys Name DATAFILE UNPROT COARSE SEP 07 00:00:00 N usertbs01.dbf => +DATA/jy/4D913A1436E25EE2E053AB828A0AF7B8/DATAFILE/USERTBS.278.954031319 DATAFILE UNPROT COARSE SEP 07 00:00:00 N users01.dbf => +DATA/jy/4D913A1436E25EE2E053AB828A0AF7B8/DATAFILE/USERS.302.954031321 DATAFILE UNPROT COARSE SEP 07 00:00:00 N undotbs01.dbf => +DATA/jy/4D913A1436E25EE2E053AB828A0AF7B8/DATAFILE/UNDOTBS1.273.954031321 TEMPFILE UNPROT COARSE SEP 07 00:00:00 N temp01.dbf => +DATA/jy/4D913A1436E25EE2E053AB828A0AF7B8/TEMPFILE/TEMPTS1.315.954031465 DATAFILE UNPROT COARSE SEP 07 00:00:00 N system01.dbf => +DATA/jy/4D913A1436E25EE2E053AB828A0AF7B8/DATAFILE/SYSTEM.303.954031321 DATAFILE UNPROT COARSE SEP 07 00:00:00 N sysaux01.dbf => +DATA/jy/4D913A1436E25EE2E053AB828A0AF7B8/DATAFILE/SYSAUX.295.954031321
如果這里沒有任何錯誤,那么現在不打開新PDB。
7.執行$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql腳本,這個腳本必須在第一次打開新PDB之前執行。如果PDB不是由Non-CDB創建而來,那么就不需要執行這個腳本。為了執行noncdb_to_pdb.sql腳本,完成以下操作:
a.訪問PDB,當前用戶必須有sysdba權限,并且權限必須是公共或本地授予給PDB。最好使用as sysdba進行連接。
b.執行noncdb_to_pdb.sql腳本:
SQL>@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
8.以讀寫模式打開新PDB
SQL> alter pluggable database orclpdb open read write; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY JYPDB READ WRITE ORCLPDB READ WRITE
以上就是Oracle 12c中怎么利用Non-CDB創建PDB,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。