版权声明:所有文章禁止转载但是均可在生产中使用提高效率 https://blog.csdn.net/viviliving/article/details/84314110
DATA-LINKED:共享公共对象的元数据和数据给Application PDB,在Appliation PDB中仅可查询公共对象在Application root内存储的数据,无法对其进行DML操作,也不可进行本地数据插入。
这句话整理出来几点:
1、共享公共对象的元数据和数据给Application PDB,要通过SYNC子句
2、在Appliation PDB中仅可查询公共对象在Application root内存储的数据
3、在Appliation PDB中无法对其进行DML操作,也不可进行本地数据插入
实践活动:
环境:(同METADATA-LINKED专项测试):
实例:
一、Application root 中创建DATA-LINKED表
SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app BEGIN UPGRADE '2.0' to '3.0';
Done
SQL> CONNECT saas_sales_adm/manager@saas_sales_ac
Connected to Oracle Database 18c Enterprise Edition Release 18.0.0.0.0
Connected as saas_sales_adm@saas_sales_ac
SQL>
SQL> CREATE TABLE countries_dlt SHARING=DATA
2 (country_id NUMBER,
3 country_name VARCHAR2(20));
Table created
SQL>
SQL> INSERT INTO countries_dlt VALUES(1, 'USA');
1 row inserted
SQL> INSERT INTO countries_dlt VALUES(44, 'UK');
1 row inserted
SQL> INSERT INTO countries_dlt VALUES(86, 'China');
1 row inserted
SQL> INSERT INTO countries_dlt VALUES(91, 'India');
1 row inserted
SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app END UPGRADE TO '3.0';
Done
二、pdb中同步或插入数据查询测试
SQL> select * from countries_dlt;
select * from countries_dlt
ORA-00942: 表或视图不存在
SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;
Done
SQL> select * from countries_dlt;
select * from countries_dlt
ORA-00942: 表或视图不存在
SQL> select * from saas_sales_adm.countries_dlt;
COUNTRY_ID COUNTRY_NAME
---------- --------------------
1 USA
44 UK
86 China
91 India
SQL> INSERT INTO countries_dlt VALUES(1, 'USA');
INSERT INTO countries_dlt VALUES(1, 'USA')
ORA-00942: 表或视图不存在
SQL> INSERT INTO saas_sales_adm.countries_dlt VALUES(1, 'USA');
INSERT INTO saas_sales_adm.countries_dlt VALUES(1, 'USA')
ORA-65097: 对数据链接表的 DML 操作是在应用程序操作外部执行的
分析:
有本例结合18c的【跟我学oracle18c】第十一天:Application Common Objects一节内容,发现DATA-LINKED在
pdbs内部是只读的
在软件应用中可以用来存储公共只读参数,共享给哥哥pdbs使用
相关错误号整理:
1、
SQL> INSERT INTO saas_sales_adm.countries_dlt VALUES(1, 'USA');
INSERT INTO saas_sales_adm.countries_dlt VALUES(1, 'USA')
ORA-65097: 对数据链接表的 DML 操作是在应用程序操作外部执行的
原因:DATA-LINKED表禁止在pdb内操作