1. 程式人生 > >【跟我學oracle18c】第十八天:EXTENDED DATA-LINKED專項測試

【跟我學oracle18c】第十八天:EXTENDED DATA-LINKED專項測試

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

這句話整理出來幾點:

1、共享公共物件的元資料和資料給Application PDB,要通過SYNC子句

2、對Application root記憶體儲的資料不能進行DML操作

3、但在Application PDB內可插入本地資料

實踐活動:

環境:(同METADATA-LINKED專項測試):

例項:

一、Application root 中建立 EXTENDED DATA-LINKED表

SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app BEGIN UPGRADE '3.0' to '4.0';
Done

SQL> 
SQL> CREATE TABLE zipcodes_edt SHARING=EXTENDED DATA
  2  (code       VARCHAR2(5),
  3   country_id NUMBER,
  4   region     VARCHAR2(10));
Table created

SQL> 
SQL> INSERT INTO zipcodes_edt VALUES ('08820','1','East');
1 row inserted
SQL> INSERT INTO zipcodes_edt VALUES ('10005','1','East');
1 row inserted
SQL> INSERT INTO zipcodes_edt VALUES ('44332','1','North');
1 row inserted
SQL> INSERT INTO zipcodes_edt VALUES ('94065','1','West');
1 row inserted
SQL> INSERT INTO zipcodes_edt VALUES ('73301','1','South');
1 row inserted
SQL> COMMIT;
Commit complete


SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app END upgrade to '4.0';
Done
SQL> select * from zipcodes_edt;
CODE  COUNTRY_ID REGION
----- ---------- ----------
08820          1 East
10005          1 East
44332          1 North
94065          1 West
73301          1 South
SQL> select * from containers(zipcodes_edt);

二、pdbs內部測試

SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;
Done

SQL> select * from saas_sales_adm.zipcodes_edt;
CODE  COUNTRY_ID REGION
----- ---------- ----------
08820          1 East
10005          1 East
44332          1 North
94065          1 West
73301          1 South

SQL> INSERT INTO saas_sales_adm.zipcodes_edt VALUES ('73331','1','South');
1 row inserted

 SQL> select * from saas_sales_adm.zipcodes_edt;
CODE  COUNTRY_ID REGION
----- ---------- ----------
08820          1 East
10005          1 East
44332          1 North
94065          1 West
73301          1 South
73331          1 South

SQL> delete saas_sales_adm.zipcodes_edt where code='08820';
0 rows deleted

三、Application root 中查詢
 

SQL> select * from containers(zipcodes_edt);
CODE  COUNTRY_ID REGION         CON_ID
----- ---------- ---------- ----------
08820          1 East                6
10005          1 East                6
44332          1 North               6
94065          1 West                6
73301          1 South               6
08820          1 East                9
10005          1 East                9
44332          1 North               9
94065          1 West                9
73331          1 South               9
10 rows selected

分析:

         EXTENDED DATA-LINKED對於pdbs是可讀,可寫,但是對root區域的資料dml是不允許的。

 

發現這裡應該是18c的缺陷還是bug:

參見下文

【跟我學oracle18c】第十八天:EXTENDED DATA-LINKED專項測試中發現的oracle18c漏洞