Oracle 12c R2版本 Application Containers 特性(二)

沃趣科技發表於2017-10-11
沃趣科技  楊禹航



在上一篇Oracle 12c R2版本 Application Containers 特性(一)中講解了Application Root/PDBs的建立以及“Application”的維護,本篇將介紹“Application Common Objects”,即公共物件。

公共物件是使用者在Application Container特性下建立的共享物件,且只能建立在Application Root中,共享給Application PDB,其有三種型別可共選擇,分別為:METADATA-LINKEDDATA-LINKEDEXTENDED DATA-LINKED.

  • METADATA-LINKED:共享公共物件的後設資料給Application PDB,不可以檢視公共物件在Application root記憶體儲的資料,在Appliation PDB內可插入本地資料。

  • DATA-LINKED:共享公共物件的後設資料和資料給Application PDB,在Appliation PDB中僅可查詢公共物件在Application root記憶體儲的資料,無法對其進行DML操作,也不可進行本地資料插入。

  • EXTENDED DATA-LINKED:共享公共物件的後設資料和資料給Application PDB,在Application PDB內可以查詢公共物件在Application root記憶體儲的資料,對Application root記憶體儲的資料不能進行DML操作,但在Application PDB內可插入本地資料,EXTENDED DATA-LIKED更像是METADATA-LIKED和DATA LIKED的結合。

如下是不同型別公共物件的後設資料和資料的儲存位置對照表:

Oracle 12c R2版本 Application Containers 特性(二)

指定共享屬性時有兩種方式,第一種使用系統引數default_sharing,另一種是在CREATE語句中指定SHARING的型別子句(該子句覆蓋default_sharing引數)。

下面是共享屬性的選擇:

  • METADATA

  • DATA 

  • EXTENDED DATA

  • NONE 

以下資料庫中的物件可以被建立為公共物件:

Analytic views

Attribute dimensions

Directories

External procedure libraries

Hierarchies

Java classes, Java resources, Java sources

Packages

Object tables

Object types

Object views

Sequences

Stored functions

Stored procedures

Synonyms

Tables (including temporary tables)

Triggers

Views

對於上面列出的物件,均可以在建立時指定METADATA或NONE選項,而DATA/EXTENDED DATA只能被如下物件建立時所指定:

  • Table(不包括物件型別表):METADATA, DATA, EXTENDED DATA

  • Views (不包括物件檢視):METADATA, DATA, EXTENDED DATA

  • Sequences:METADATA, DATA, NONE

如下測試將通過表來展示不同共享方式的差別

在qdatacon1中安裝Application:qd_reg1:

Oracle 12c R2版本 Application Containers 特性(二)

DATA-LINKED型別

建立sharing=data的表t_data,並且結束qd_reg1的安裝:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1中同步qd_reg1:

Oracle 12c R2版本 Application Containers 特性(二)

在qdatacon1中向t_data插入資料:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1內查詢t_data:

Oracle 12c R2版本 Application Containers 特性(二)

檢視在qdcpdb1中查詢t_data的執行計劃資訊:

Oracle 12c R2版本 Application Containers 特性(二)

以上執行計劃走的是DATA LINK FULL方式。

在qdcpdb1中對錶進行delete/insert:

Oracle 12c R2版本 Application Containers 特性(二)

data liked型別的物件資料儲存在Application root內,在Application PDB內無法對其進行DML操作。

在qdcpdb1內查詢資料的rowid資訊:

Oracle 12c R2版本 Application Containers 特性(二)

METADATA LIKED型別

建立sharing=metadata型別的表t_meta:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1內同步qd_reg1:

Oracle 12c R2版本 Application Containers 特性(二)

在qdatacon1中插入資料:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1內查詢:

Oracle 12c R2版本 Application Containers 特性(二)

metadata liked型別僅共享後設資料給Application PDB,在Application PDB內無法查詢共享物件在Application Root記憶體儲的資料。

在qdcpdb1中向t_meta插入資料:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1內查詢t_meta資料的rowid資訊:

Oracle 12c R2版本 Application Containers 特性(二)

資料在本地儲存,可以獲得ROWID。

檢視執行計劃:

Oracle 12c R2版本 Application Containers 特性(二)

以上執行計劃走的TABLE ACCESS FULL。

在qdcpdb1中刪除資料:

Oracle 12c R2版本 Application Containers 特性(二)

EXTENDED DATA型別

建立sharing=extended data型別的表t_exte:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1內同步:

Oracle 12c R2版本 Application Containers 特性(二)

在qdatacon1中插入資料:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1中查詢並刪除資料:

Oracle 12c R2版本 Application Containers 特性(二)

qdcpdb1中可以訪問公共物件在Application root記憶體儲的資料,但是不能對其進行DML操作。

在qdcpdb1中插入資料:

Oracle 12c R2版本 Application Containers 特性(二)

0 QBackup儲存在 Application root內,1 QMonitor  儲存在本地。

在qdcpdb1內查詢資料的rowid資訊:

Oracle 12c R2版本 Application Containers 特性(二)

在qdcpdb1內將表t_exte truncate掉:

Oracle 12c R2版本 Application Containers 特性(二)

這裡僅將本地資料truncate掉了。

檢視執行計劃:

Oracle 12c R2版本 Application Containers 特性(二)

以上執行計劃走的EXTENDED DATA LINK。

這裡只做了TABLE的演示,關於其他物件的共享方式與之相近,不在演示。

Oracle 12c R2版本 Application Containers 特性(二)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28218939/viewspace-2145851/,如需轉載,請註明出處,否則將追究法律責任。

相關文章