【跟我学oracle18c】第十八天:METADATA-LINKED专项测试

版权声明:所有文章禁止转载但是均可在生产中使用提高效率 https://blog.csdn.net/viviliving/article/details/84313332

          METADATA-LINKED:共享公共对象的元数据给Application PDB,不可以查看公共对象在Application root内存储的数据,在Appliation PDB内可插入本地数据。

这句话整理出来几点:

1、共享公共对象的元数据给Application PDB

2、不可以查看公共对象在Application root内存储的数据

3、在Appliation PDB内可插入本地数据

实践活动:

环境:Appliation PDB和Application root如下(select * from v$pdbs):

CON_ID NAME APPLICATION_ROOT APPLICATION_PDB APPLICATION_ROOT_CON_ID
2 PDB$SEED NO NO  
6 SAAS_SALES_AC YES NO  
9 AMER_PDB NO YES 6
10 EURO_PDB NO YES 6
11 ASIA_PDB NO YES 6

实例:

一、Application root 中创建METADATA表

CONNECT system/manager@saas_sales_ac

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app BEGIN upgrade  '1.0' to '2.0';

CONNECT saas_sales_adm/manager@saas_sales_ac

SQL> CREATE TABLE saas_sales_adm.sales_mlt SHARING=METADATA
  2  (YEAR       NUMBER(4),
  3   REGION     VARCHAR2(10),
  4   QUARTER    VARCHAR2(4),
  5   REVENUE    NUMBER);
Table created
SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app END UPGRADE TO '2.0';
Done

SQL> select * from saas_sales_adm.sales_mlt;
 YEAR REGION     QUARTER    REVENUE
----- ---------- ------- ----------
SQL> insert into saas_sales_adm.sales_mlt values(2011,'2011','2011',2011);
1 row inserted

SQL> select * from saas_sales_adm.sales_mlt;
 YEAR REGION     QUARTER    REVENUE
----- ---------- ------- ----------
 2011 2011       2011          2011

二、pdb中同步或插入数据

AMER_PDB

SQL> alter session set container=AMER_PDB;
Session altered

SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;
Done

SQL>  insert into saas_sales_adm.sales_mlt values(2012,'2012','2012',2012);
1 row inserted

SQL> select * from saas_sales_adm.sales_mlt;
 YEAR REGION     QUARTER    REVENUE
----- ---------- ------- ----------
 2012 2012       2012          2012

EURO_PDB

SQL> alter session set container=EURO_PDB;
Session altered

SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;
Done

SQL>  insert into saas_sales_adm.sales_mlt values(2013,'2013','2013',2013);
1 row inserted

SQL> select * from saas_sales_adm.sales_mlt;
 YEAR REGION     QUARTER    REVENUE
----- ---------- ------- ----------
 2013 2013       2013          2013

SQL> select * from containers(saas_sales_adm.sales_mlt);
 YEAR REGION     QUARTER    REVENUE     CON_ID
----- ---------- ------- ---------- ----------
 2013 2013       2013          2013         10



三、Application root下查询

SQL> select * from saas_sales_adm.sales_mlt;
 YEAR REGION     QUARTER    REVENUE
----- ---------- ------- ----------
 2011 2011       2011          2011

SQL> select * from containers(saas_sales_adm.sales_mlt);
 YEAR REGION     QUARTER    REVENUE     CON_ID
----- ---------- ------- ---------- ----------
 2011 2011       2011          2011          6
 2013 2013       2013          2013         10
 2012 2012       2012          2012          9

分析:

1、从实例中可以发现,pdb内要看到Application root的METADATA表,必须在ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;后可见

2、pdb与Application root的METADATA表数据各自独立,对象存储与Application root下

3、Application root下也仅仅查到的是数据root部分操作的数据

4、可以通过containers语法查在Application root下查所有pdb与root下的数据,但pdb下该参数也只是自己的数据

相关错误号:

1、application root中创建APPLICATION

ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app BEGIN INSTALL '1.0'
ORA-65221: 应用程序 SAAS_SALES_APP 已存在

select * from dba_applications;

查看版本号,采用升级版本即可

SQL> ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app BEGIN upgrade  '1.0' to '2.0';
Done

2、pdb中查询application root中的Common Objects

SQL> select * from saas_sales_adm.sales_mlt;
select * from saas_sales_adm.sales_mlt
ORA-00942: 表或视图不存在

如果确认对象是存在的,可以 ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

后试试

猜你喜欢

转载自blog.csdn.net/viviliving/article/details/84313332
今日推荐