您好,登錄后才能下訂單哦!
小編給大家分享一下Oracle 12c如何使用SQL*Plus來創建與刪除應用程序容器,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
可以使用不同方式來創建應用程序容器,比如使用CDB seed,克隆現有的PDB或Non-CDB,插入一個被拔出的PDB,也可以從CDB中刪除應用程序容器。
創建應用程序容器
可以使用create pluggable database語句來在CDB中創建應用程序容器。當執行create pluggable database語句時指定as application container子句可以創建一個新的應用程序容器。應用程序容器由應用程序root與用來存儲一個或多個應用程序數據的一組應用程序PDB組成。應用程序PDB可以被附加到應用程序root中,并且可以選擇快速地創建應用程序seed與簡單地創建新的應用程序PDB。應用程序PDB與應用程序root可以共享應用程序公共對象。
有三種類型的應用程序公共對象:
.元數據鏈接應用程序公共對象存儲特定對象的元數據,比如表。 因此容器可以共享有相同結構沒有相同數據的應用程序公共對象。
.數據鏈接應用程序公共對象只在應用程序root中定義一次并且在應用程序PDB的上下文中共享只讀對象。
.擴展數據鏈接應用程序公共對象在應用程序root中存儲共享數據但也允許應用程序PDB來將數據添加到對象中。添加的數據是本地數據它對于每個應用程序PDB來說是唯一的。
通過執行creatae pluggable database as application container子句可以創建應用程序容器。也可以使用以下技術來創建應用程序容器:
.使用CDB seed
.克隆現有的PDB或Non-CDB
.遷移PDB
.插入被拔出的PDB
當當前容器是CDB的root并且在執行create pluggable database語句時指定了as application container子句時,將創建應用程序容器。
遷移現有的應用程序為應用程序容器
可以通過使用現有的PDB來創建應用程序容器。當遷移現有應用程序為一個應用程序容器時必須完成額外的任務。要附加的PDB必須包含應用程序數據庫對象,包含它們的數據,并且對于應用程序所訪問的相關數據庫對象必須執行dbms_pdb中的過程。當應用程序公共用戶,角色或profiles存放在應用程序root中,對與應用程序相關的數據庫對象必須執行dbms_pdb包。在應用程序遷移為應用程序容器后,可以在應用程序容器中創建應用程序PDB,并且可以使用現有的PDB來創建應用程序PDB。
創建應用程序容器的準備
在創建應用程序容器之前必須完達到以下條件:
.CDB必須存在
.CDB必須處于讀寫模式
.當前容器如果是CDB的root,那么當前用戶必須是一個公共用戶
.當前用戶必須有create pluggable database系統權限
.對于每個應用程序容器必須要決定一個唯一的應用程序容器名字。每個應用程序容器名字必須對于單個CDB中的所有容器來說是唯一的,并且每個應用程序容器名字必須在特定監聽所監聽的所有CDB范圍內是唯一的。應用程序容器名字用來區分CDB中的應用程序容器。應用程序容器名字遵守與服務名一樣的規則,它是大小寫敏感的。
.如果在使用物理備庫的Data Guard配置中創建應用程序容器,那么在創建應用程序容器之前必須完成額外的任務。
.如果使用PDB將現有的應用程序遷移成應用程序容器,那么它必須能夠通過克隆PDB來創建應用程序root,遷移PDB到應用程序root中,或者將PDB插入到應用程序root中。
創建應用程序容器
可以執行create pluggable database ... as application container語句來創建應用程序容器。創建應用程序容器的操作如下:
1.在SQL*Plus中,確保當前容器為CDB的root。
2.執行create pluggable database ... as application container語句。如果需要還可以指定其它子句。在創建應用程序容器后,它處于mounted模式,并且它的狀態為NEW。可以查詢v$pdbs視圖的open_mode列來查看應用程序容器的打開模式。可以通過查詢cdb_pdbs或dba_pdbs視圖來查看應用程序狀態。并且會對應用程序容器創建一個新的缺省服務。這個服務與應用程序容器有相同的名字,并且可以被用來訪問應用程序容器。
3.以讀寫模式來打開新的應用程序容器。為了將新應用程序容器集成到CDB中必須以讀寫模式來打開新的應用程序容器。如果你試圖以只讀模式來打開應用程序容器將會返回錯誤住處。在應用程序容器以讀寫模式打開后,它的狀態將會變為NORMAL。
4.備份應用程序容器
使用CDB Seed來創建應用程序容器
這個例子假設滿足以下條件:
.對應用程序容器沒有使用存儲限制。因此不指定storage子句。
.應用程序容器不創建缺省表空間
.不指定path_prefix子句
.不指定file_name_convert與create_file_dest子句。可以啟用OMF或設置pdb_file_name_convert參數。與CDB Seed相關的文件基于OMF配置或參數設置將會被復制到新目錄中。
.在目標目錄中如果沒有與新temp文件同名的文件存儲,將會創建新temp文件,因此不指定tempfile reuse子句。
.沒有預先定義的Oracle角色需要被授予給PDB_DBA角色。
SQL> create pluggable database salesact as application container admin user salesadm identified by "xxzx"; Pluggable database created. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY JYPDB READ WRITE ORCLPDB READ WRITE SALESACT MOUNTED SQL> alter pluggable database salesact 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 MOUNTED SALESACT READ WRITE
通過克隆本地PDB來創建應用程序容器
這個例子假設滿足以下條件:
.不指定path_prefix子句
.指定file_name_convert子句來指定復制文件所存放的目錄。在這個例子中,文件從
+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/與+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/目錄中復制到+test/jy/hract目錄中。不指定create_file_dest子句,并且也不使用OMF或pdb_file_name_conver參數。
.對于應用程序root使用存儲限制。因此需要指定storage子句。這里指定屬于應用程序root的所有表空間大小不能超過6G。這種存儲限制不會應用到附加到應用程序root中的應用程序PDB。
.在目標目錄中沒有與新temp文件同名的文件存在,所以將會創建新的temp文件。因此不用指定tempfile reuse子句。
SQL> create pluggable database hract as application container from jypdb 2 file_name_convert = ('+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/system.297.954436417', '+test/jy/hract/system01.dbf', 3 '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/sysaux.276.954436419','+test/jy/hract/sysaux01.dbf', 4 '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/undotbs1.296.954436417','+test/jy/hract/undotsb1.dbf', 5 '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/undo_2.274.954436487','+test/jy/hract/undo_2.dbf', 6 '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/temp.275.954436435','+test/jy/hract/temp01.dbf' 7 ) 8 storage (maxsize 6g); Pluggable database created. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY HRACT MOUNTED JYPDB READ WRITE SALESACT READ WRITE
通過插入被拔出的PDB來創建應用程序容器
這個例子假設滿足以下條件:
.新應用程序容器不是基于已經被用來創建PDB或應用程序容器的同一個被拔出的PDB而進行創建。因此不用指定as clone子句。
.不指定path_prefix子句
.xml元數據文件沒有精確地描述文件的當前目錄,因此需要指定source_file_name_convert或source_file_directory子句。在這個例子中XML文件指示文件在+DATA/JY/DATAFILE/,但實際文件是存儲在+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/與+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/目錄中,指定source_file_name_convert子句。
.文件存儲在正確目錄中,因此不指定nocopy子句。
.對應用程序容器使用存儲限制,因此指定storage子句。指定應用程序容器的所有表空間大小不超過4G。
.在目標目錄中有與新temp文件同名的文件存在,為了創建新的temp文件。因此指定tempfile reuse子句。
SQL> create pluggable database payrollact as application container using '/tts/plug/jypdb.xml' 2 source_file_name_convert = ('+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/', '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/', 3 '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/','+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/' 4 ) 5 nocopy 6 storage (maxsize 4g) 7 tempfile reuse; Pluggable database created. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY PAYROLLACT MOUNTED SQL> alter pluggable database payrollact open read write; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY PAYROLLACT READ WRITE
從CDB中拔出應用程序容器
為了拔出應用程序容器必須滿足以下條件:
.當前用戶必須有sysdba或sysoper管理權限
.應用程序容器必須至少打開過一次
.應用程序容器不能包含任何應用程序PDB
.應用程序容器不能包含任何應用程序Seed
SQL> alter pluggable database payrollact unplug into '/tts/plug/payrollact.xml'; Pluggable database altered.
刪除應用程序容器
可以使用drop pluggable database語句來刪除應用程序容器。當想要將一個應用程序容器從一個CDB中移動到另一個CDB中或不再需要這個應用程序容器時可以將其刪除。
刪除應用程序容器與刪除PDB是很類似的。當刪除應用程序容器時,CDB的控制文件會被修改來刪除與被刪除應用程序容器相關的信息。與應用程序容器相關的歸檔重做日志與備份不會被刪除,但可以使用RMAN來刪除它們。
當刪除應用程序容器時,可以使用下面的子句來保留或刪除數據文件:
. keep datafiles,缺省值,保留數據文件,即使指定了keep datafiles子句應用程序容器的temp文件仍然會被刪除,因為temp文件不再需要。
.including datafiles,刪除數據文件。如果應用程序容器是使用snapshot copy子句創建的,那么當刪除應用程序容器時必須指定including datafiles子句。
要刪除應用程序容器必須滿足以下條件:
.應用程序容器必須處于mounted狀態或者unplugged狀態。
.當前用戶必須有sysdba或sysoper管理權限。
.應用程序容器不能包含任何應用程序PDB。
.應用程序容器不能包含任何應用程序Seed。
當刪除應用程序容器時保留數據文件
drop pluggable database payrollact keep datafiles;
當刪除應用程序容器時并且刪除數據文件
以上是“Oracle 12c如何使用SQL*Plus來創建與刪除應用程序容器”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。