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;
當刪除應用程式容器時並且刪除資料檔案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2144843/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c 使用SQL*Plus來建立與移動應用程式SeedsOracleSQL
- Oracle 12c 建立與刪除CDB、PDBsOracle
- Oracle序列使用:建立、刪除Oracle
- Oracle 12c 手工建立 和 刪除 PDB 示例Oracle
- Oracle 12c 多租戶 手工建立 pdb 與 手工刪除 pdbOracle
- oracle 12c pdb測試:建立、開關、刪除Oracle
- Oracle使用者的建立和刪除Oracle
- Oracle 12c 使用Non-CDB來建立PDBOracle
- oracle建立/刪除表空間、建立/刪除使用者並賦予許可權Oracle
- SQL Server建立應用程式角色與標準角色SQLServer
- SQL Server建立使用者函式與應用SQLServer函式
- oracle db link的檢視建立與刪除Oracle
- 【SQL/PLUS】Oracle PL/SQL程式設計用set serveroutput onSQLOracle程式設計Server
- oracle job的建立和刪除Oracle
- Mysql索引的建立與刪除MySql索引
- elasticsearch(三)----索引建立與刪除Elasticsearch索引
- 使用Rancher建立負載均衡的容器應用負載
- Oracle 12c 檢視CDB&PDBs資訊(SQL*PLUS)OracleSQL
- SQL Cookbook—插入、更新與刪除SQL
- Docker容器和映象的建立/匯出/刪除/匯入Docker
- [MYSQL] 資料庫建立與刪除MySql資料庫
- prune 命令用來刪除不再使用的 docker 物件。Docker物件
- 12c 使用SQL命令手工建立CDB數SQL
- ubuntu 建立和刪除使用者Ubuntu
- ORACLE表空間的建立修改刪除Oracle
- Oracle批量建立、刪除資料庫表Oracle資料庫
- oracle 刪除使用者Oracle
- 使用OEM,SQL*Plus,iSQL*Plus 管理Oracle例項SQLOracle
- Oracle 12c 建立 SCOTT 使用者Oracle
- Oracle 12c中建立使用者Oracle
- 用VC程式來建立SQL Server ODBC資料來源 (轉)C程式SQLServer
- oracle中查詢、禁用、啟用、刪除表外來鍵Oracle
- 動態sql語句來刪除使用者下的物件SQL物件
- PostgreSQL:資料庫的建立與刪除SQL資料庫
- ORACLE sequence各引數及建立修改刪除使用詳解示例Oracle
- Oracle 11g系列:SQL Plus與PL/SQLOracleSQL
- 常見的SQL語句(建立、刪除、切換)SQL
- ORACLE 刪除無用分割槽Oracle