溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle 12c如何使用SQL*Plus來創(chuàng)建與刪除應(yīng)用程序容器

發(fā)布時(shí)間:2021-11-09 11:53:24 來源:億速云 閱讀:145 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫

小編給大家分享一下Oracle 12c如何使用SQL*Plus來創(chuàng)建與刪除應(yīng)用程序容器,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

可以使用不同方式來創(chuàng)建應(yīng)用程序容器,比如使用CDB seed,克隆現(xiàn)有的PDB或Non-CDB,插入一個(gè)被拔出的PDB,也可以從CDB中刪除應(yīng)用程序容器。

創(chuàng)建應(yīng)用程序容器
可以使用create pluggable database語句來在CDB中創(chuàng)建應(yīng)用程序容器。當(dāng)執(zhí)行create pluggable database語句時(shí)指定as application container子句可以創(chuàng)建一個(gè)新的應(yīng)用程序容器。應(yīng)用程序容器由應(yīng)用程序root與用來存儲(chǔ)一個(gè)或多個(gè)應(yīng)用程序數(shù)據(jù)的一組應(yīng)用程序PDB組成。應(yīng)用程序PDB可以被附加到應(yīng)用程序root中,并且可以選擇快速地創(chuàng)建應(yīng)用程序seed與簡(jiǎn)單地創(chuàng)建新的應(yīng)用程序PDB。應(yīng)用程序PDB與應(yīng)用程序root可以共享應(yīng)用程序公共對(duì)象。

有三種類型的應(yīng)用程序公共對(duì)象:
.元數(shù)據(jù)鏈接應(yīng)用程序公共對(duì)象存儲(chǔ)特定對(duì)象的元數(shù)據(jù),比如表。 因此容器可以共享有相同結(jié)構(gòu)沒有相同數(shù)據(jù)的應(yīng)用程序公共對(duì)象。

.數(shù)據(jù)鏈接應(yīng)用程序公共對(duì)象只在應(yīng)用程序root中定義一次并且在應(yīng)用程序PDB的上下文中共享只讀對(duì)象。

.擴(kuò)展數(shù)據(jù)鏈接應(yīng)用程序公共對(duì)象在應(yīng)用程序root中存儲(chǔ)共享數(shù)據(jù)但也允許應(yīng)用程序PDB來將數(shù)據(jù)添加到對(duì)象中。添加的數(shù)據(jù)是本地?cái)?shù)據(jù)它對(duì)于每個(gè)應(yīng)用程序PDB來說是唯一的。

通過執(zhí)行creatae pluggable database as application container子句可以創(chuàng)建應(yīng)用程序容器。也可以使用以下技術(shù)來創(chuàng)建應(yīng)用程序容器:
.使用CDB seed
.克隆現(xiàn)有的PDB或Non-CDB
.遷移PDB
.插入被拔出的PDB

當(dāng)當(dāng)前容器是CDB的root并且在執(zhí)行create pluggable database語句時(shí)指定了as application container子句時(shí),將創(chuàng)建應(yīng)用程序容器。

遷移現(xiàn)有的應(yīng)用程序?yàn)閼?yīng)用程序容器
可以通過使用現(xiàn)有的PDB來創(chuàng)建應(yīng)用程序容器。當(dāng)遷移現(xiàn)有應(yīng)用程序?yàn)橐粋€(gè)應(yīng)用程序容器時(shí)必須完成額外的任務(wù)。要附加的PDB必須包含應(yīng)用程序數(shù)據(jù)庫對(duì)象,包含它們的數(shù)據(jù),并且對(duì)于應(yīng)用程序所訪問的相關(guān)數(shù)據(jù)庫對(duì)象必須執(zhí)行dbms_pdb中的過程。當(dāng)應(yīng)用程序公共用戶,角色或profiles存放在應(yīng)用程序root中,對(duì)與應(yīng)用程序相關(guān)的數(shù)據(jù)庫對(duì)象必須執(zhí)行dbms_pdb包。在應(yīng)用程序遷移為應(yīng)用程序容器后,可以在應(yīng)用程序容器中創(chuàng)建應(yīng)用程序PDB,并且可以使用現(xiàn)有的PDB來創(chuàng)建應(yīng)用程序PDB。

創(chuàng)建應(yīng)用程序容器的準(zhǔn)備
在創(chuàng)建應(yīng)用程序容器之前必須完達(dá)到以下條件:
.CDB必須存在

.CDB必須處于讀寫模式

.當(dāng)前容器如果是CDB的root,那么當(dāng)前用戶必須是一個(gè)公共用戶

.當(dāng)前用戶必須有create pluggable database系統(tǒng)權(quán)限

.對(duì)于每個(gè)應(yīng)用程序容器必須要決定一個(gè)唯一的應(yīng)用程序容器名字。每個(gè)應(yīng)用程序容器名字必須對(duì)于單個(gè)CDB中的所有容器來說是唯一的,并且每個(gè)應(yīng)用程序容器名字必須在特定監(jiān)聽所監(jiān)聽的所有CDB范圍內(nèi)是唯一的。應(yīng)用程序容器名字用來區(qū)分CDB中的應(yīng)用程序容器。應(yīng)用程序容器名字遵守與服務(wù)名一樣的規(guī)則,它是大小寫敏感的。

.如果在使用物理備庫的Data Guard配置中創(chuàng)建應(yīng)用程序容器,那么在創(chuàng)建應(yīng)用程序容器之前必須完成額外的任務(wù)。

.如果使用PDB將現(xiàn)有的應(yīng)用程序遷移成應(yīng)用程序容器,那么它必須能夠通過克隆PDB來創(chuàng)建應(yīng)用程序root,遷移PDB到應(yīng)用程序root中,或者將PDB插入到應(yīng)用程序root中。

創(chuàng)建應(yīng)用程序容器
可以執(zhí)行create pluggable database ... as application container語句來創(chuàng)建應(yīng)用程序容器。創(chuàng)建應(yīng)用程序容器的操作如下:
1.在SQL*Plus中,確保當(dāng)前容器為CDB的root。

2.執(zhí)行create pluggable database ... as application container語句。如果需要還可以指定其它子句。在創(chuàng)建應(yīng)用程序容器后,它處于mounted模式,并且它的狀態(tài)為NEW??梢圆樵僾$pdbs視圖的open_mode列來查看應(yīng)用程序容器的打開模式??梢酝ㄟ^查詢cdb_pdbs或dba_pdbs視圖來查看應(yīng)用程序狀態(tài)。并且會(huì)對(duì)應(yīng)用程序容器創(chuàng)建一個(gè)新的缺省服務(wù)。這個(gè)服務(wù)與應(yīng)用程序容器有相同的名字,并且可以被用來訪問應(yīng)用程序容器。

3.以讀寫模式來打開新的應(yīng)用程序容器。為了將新應(yīng)用程序容器集成到CDB中必須以讀寫模式來打開新的應(yīng)用程序容器。如果你試圖以只讀模式來打開應(yīng)用程序容器將會(huì)返回錯(cuò)誤住處。在應(yīng)用程序容器以讀寫模式打開后,它的狀態(tài)將會(huì)變?yōu)镹ORMAL。

4.備份應(yīng)用程序容器

使用CDB Seed來創(chuàng)建應(yīng)用程序容器
這個(gè)例子假設(shè)滿足以下條件:
.對(duì)應(yīng)用程序容器沒有使用存儲(chǔ)限制。因此不指定storage子句。

.應(yīng)用程序容器不創(chuàng)建缺省表空間

.不指定path_prefix子句

.不指定file_name_convert與create_file_dest子句??梢詥⒂肙MF或設(shè)置pdb_file_name_convert參數(shù)。與CDB Seed相關(guān)的文件基于OMF配置或參數(shù)設(shè)置將會(huì)被復(fù)制到新目錄中。

.在目標(biāo)目錄中如果沒有與新temp文件同名的文件存儲(chǔ),將會(huì)創(chuàng)建新temp文件,因此不指定tempfile reuse子句。

.沒有預(yù)先定義的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來創(chuàng)建應(yīng)用程序容器
這個(gè)例子假設(shè)滿足以下條件:
.不指定path_prefix子句

.指定file_name_convert子句來指定復(fù)制文件所存放的目錄。在這個(gè)例子中,文件從
+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/與+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/目錄中復(fù)制到+test/jy/hract目錄中。不指定create_file_dest子句,并且也不使用OMF或pdb_file_name_conver參數(shù)。

.對(duì)于應(yīng)用程序root使用存儲(chǔ)限制。因此需要指定storage子句。這里指定屬于應(yīng)用程序root的所有表空間大小不能超過6G。這種存儲(chǔ)限制不會(huì)應(yīng)用到附加到應(yīng)用程序root中的應(yīng)用程序PDB。

.在目標(biāo)目錄中沒有與新temp文件同名的文件存在,所以將會(huì)創(chuàng)建新的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來創(chuàng)建應(yīng)用程序容器
這個(gè)例子假設(shè)滿足以下條件:
.新應(yīng)用程序容器不是基于已經(jīng)被用來創(chuàng)建PDB或應(yīng)用程序容器的同一個(gè)被拔出的PDB而進(jìn)行創(chuàng)建。因此不用指定as clone子句。

.不指定path_prefix子句

.xml元數(shù)據(jù)文件沒有精確地描述文件的當(dāng)前目錄,因此需要指定source_file_name_convert或source_file_directory子句。在這個(gè)例子中XML文件指示文件在+DATA/JY/DATAFILE/,但實(shí)際文件是存儲(chǔ)在+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/與+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/目錄中,指定source_file_name_convert子句。

.文件存儲(chǔ)在正確目錄中,因此不指定nocopy子句。

.對(duì)應(yīng)用程序容器使用存儲(chǔ)限制,因此指定storage子句。指定應(yīng)用程序容器的所有表空間大小不超過4G。

.在目標(biāo)目錄中有與新temp文件同名的文件存在,為了創(chuàng)建新的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中拔出應(yīng)用程序容器
為了拔出應(yīng)用程序容器必須滿足以下條件:
.當(dāng)前用戶必須有sysdba或sysoper管理權(quán)限

.應(yīng)用程序容器必須至少打開過一次

.應(yīng)用程序容器不能包含任何應(yīng)用程序PDB

.應(yīng)用程序容器不能包含任何應(yīng)用程序Seed

SQL> alter pluggable database payrollact unplug into '/tts/plug/payrollact.xml';

Pluggable database altered.

刪除應(yīng)用程序容器
可以使用drop pluggable database語句來刪除應(yīng)用程序容器。當(dāng)想要將一個(gè)應(yīng)用程序容器從一個(gè)CDB中移動(dòng)到另一個(gè)CDB中或不再需要這個(gè)應(yīng)用程序容器時(shí)可以將其刪除。

刪除應(yīng)用程序容器與刪除PDB是很類似的。當(dāng)刪除應(yīng)用程序容器時(shí),CDB的控制文件會(huì)被修改來刪除與被刪除應(yīng)用程序容器相關(guān)的信息。與應(yīng)用程序容器相關(guān)的歸檔重做日志與備份不會(huì)被刪除,但可以使用RMAN來刪除它們。

當(dāng)刪除應(yīng)用程序容器時(shí),可以使用下面的子句來保留或刪除數(shù)據(jù)文件:
. keep datafiles,缺省值,保留數(shù)據(jù)文件,即使指定了keep datafiles子句應(yīng)用程序容器的temp文件仍然會(huì)被刪除,因?yàn)閠emp文件不再需要。

.including datafiles,刪除數(shù)據(jù)文件。如果應(yīng)用程序容器是使用snapshot copy子句創(chuàng)建的,那么當(dāng)刪除應(yīng)用程序容器時(shí)必須指定including datafiles子句。

要?jiǎng)h除應(yīng)用程序容器必須滿足以下條件:
.應(yīng)用程序容器必須處于mounted狀態(tài)或者unplugged狀態(tài)。

.當(dāng)前用戶必須有sysdba或sysoper管理權(quán)限。

.應(yīng)用程序容器不能包含任何應(yīng)用程序PDB。

.應(yīng)用程序容器不能包含任何應(yīng)用程序Seed。

當(dāng)刪除應(yīng)用程序容器時(shí)保留數(shù)據(jù)文件

drop pluggable database payrollact keep datafiles;

當(dāng)刪除應(yīng)用程序容器時(shí)并且刪除數(shù)據(jù)文件

以上是“Oracle 12c如何使用SQL*Plus來創(chuàng)建與刪除應(yīng)用程序容器”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI