您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Oracle 12c R2版本 Application Containers的特性是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
在Oracle Database 12c R2版本中,Oracle帶來新的Application Containers特性,該特性對原有的多租戶功能進行了增強,在CDB root容器中可以創建一個叫做Application root的容器,類似于CDB root,可在其內創建多個依賴于Application root的Application PDBs。
“Application”
在Application Container特性下還有另一個概念,被命名為“Application”,我們可以把“Application”理解為一個區域,“Application”只能創建在Application root中,其內可以創建表、視圖、函數等公共對象,然后可在Application PDBs中使用sync同步命令,來實現“Application”內的公共對象共享到Application PDBs中。
本篇文章中,通過"Application Root/PDBs"與"Application"的創建開始帶你認識Application Container特性,在第二篇中將帶你了解“Application”內的公共對象(Application Common Objects),并通過實驗讓你對其有一個更加直觀的認識。
Application root的創建
Application root與普通的PDB創建語句相似,在創建語句中需要指定“as application container”子句。
首先我們先設置db_create_file_dest
創建一個名qdatacon1的Application root
這樣一個名為qdatacon1的Application root就已經成功創建 ,可以通過視圖dba_pdbs.application_root字段查看是否是Application rootdba_pdbs.application_root字段為YES
將QDatacon1打開
注意,當在使用Application Containers特性時需要使用數據文件的OMF的管理方式,雖然在不使用OMF管理時依然可以成功創建Application root以及Application PDBs,但當“Application”內包含表空間后,在Application PDBs中進行同步“Application”時會報ORA-01537錯誤,無法將“Application”內的表空間同步到Application PDBs中。
Application root的基本管理與普通的PDB基本上沒有區別, 包括Application root的cloning/unplug/plugin等。但需要注意as application container的使用
當然,如果你想將Application root拔出后,以普通PDB的方式插入CDB中,那么去掉
as application container子句即可。
Application PDBs的創建
Application PDB在創建時必須連接到相應Application root中,而不是CDB root,當連接到Application root中時,只需按照創建普通PDB的方式創建即可,無需額外子句指定,創建完成的PDB既是相應Application root中的Application PDB。
切換到Application root中創建Application PDB:qdcpdb1,切換到CDB中
在CDB$root中通過show pdbs顯示時,可以看到的Application PDB與普通的PDB并沒有什么區別。
可以通過cdb_pdbs視圖,來查看Application PDB屬于哪個Application root
當Applicatoin PDB創建成功,可以使用sync命令將它與Application root中定義的Application進行同步。
alter pluggable database application all sync;
Applications
文章的開篇提到,可以把“Application”做為一個區域來理解,而“Application”只能在Application root中創建及管理
在“Application”的維護命令中可能最常用的就是install、patch、upgrade以及uninstall,下面對三個命令做簡單描述。
Install an Application
當使用alter pluggable database帶有begin install子句時,即開始一個“Application”的安裝,這里可以理解為一個區域的開始,當安裝完成后在Application PDB中使用sync命令同步相應的“Application”將會被自動安裝在本PDB內。
這樣我們開始了一個qdcon1_reg1的“Application”,使用end install命令封閉qdcon1_reg1,
可以通過dba_applications視圖查看,已經安裝的Application
Application安裝完成后,可以在該Application root下的Application PDB中使用sync命令來進行同步,如下:
查看dba_applications視圖,確認qdcon1_reg1是否已經安裝
可以看到qdcon1_reg1已經安裝完成,安裝完成后qdcon1_reg1中的公共對象會以特定的方式被共享到相應的Application PDB中,
表tdata已經被共享到qdcpdb1中。
在Application root中可以通過dba_app_pdb_status視圖,查看Application被安裝到哪些Application PDB中
Patch an Application
在上面的小結中,當我們使用end install子句將“Application”封閉后,如果想再次在“Application”中創建對象(table/view/packages/sequence等),以及對“Application”內已經存在的對象進行alter操作時,我們可以使用patch子句對現有的“Application”進行修補操作。
如下示例,開始一個patch,并且在application內創添加表以及更改現存表的表結構:
刪除Application內的表
刪除失敗
結束patch
查看patch信息
在qdcpdb1中同步qdcon1_reg1
tdata的表結構與texte表均同步完成
Upgrade an Application
對“Application”我們可以使用patch來對其進行修補操作,但修補操作只限添加/更改等,無法對已經存在“Application”中的公共對象進行刪除操作,如果我們想對公共對象進行刪除操作,可以使用UPGRADE子句對現有的“Application”進行升級,在升級的過程中,Oracle會首先自動創建Application root的Clone版本,Clone版本創建完成后,Application PDBs將指向Clone版本的Application root,“Application”將繼續執行升級操作,升級完成之后,Application root的Clone版本將繼續被保留,并且為不同步“Application”的Application PDB提供服務,同步“Application”后的Application PDB將指向升級后的Application root。
升級現有的qdcon1_reg1:F1956732192_4_1即為qdatacon1的clone版本
刪除tdata表,并且創建新表tmeta:
結束升級,并查看版本信息
在qdcpdb1中同步qdcon1_reg1
tdata被刪除/tmeata的創建已同步到qdcpdb1中。
Uninstall an Application
“Application”的卸載后并不會從數據字典中將該“Application”刪除,它會被標記為UNINSTALL,以便“Application”不可以進行upgrade/patch/uninstall等操作,當uninstall命令發出后,需要將該“Application”中包含的對象全部刪除。
uninstall同樣會產生clone版本的Application root
刪除對象且結束uninstall
因為對象并沒有全部刪除,導致end uninstall失敗,下面繼續drop用戶和表空間:
查看被uninstall的qdcon1_reg1狀態
在qdcpdb1中查看公共對象情況
表texte是extended data-linked方式,數據存儲在Application root的qdata_tbs中,因為qdata_tbs已經被刪除,所以在qdcpdb1中查詢時報錯,而tmeta為metadata-linked方式,數據存儲在本地,所以可以在未做同步時可以查詢。
同步qdcon1_reg1
同步完成。
以上就是Oracle 12c R2版本 Application Containers的特性是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。