设为首页 加入收藏

TOP

Oracle 12C & 18C Application Container Map 新特性测试
2018-08-16 09:31:23 】 浏览:102
Tags:Oracle 12C 18C Application Container Map 特性 测试

随着12c PDB的使用日渐成熟,用户生产中心的PDB也越来越多,且这些PDB彼此之间都是相互孤立的,一方面扩展性受到限制,另一方面也给管理带来较多的不便。


首先介绍几个概念


分区映射表:定义分区键和PDB之间的映射关系,表数据将根据映射关系存放到不同的应用PDB Container


Map:数据库属性,在Application root中指定分区映射表


Map Objects:映射的分区表
接下来,创建分区映射表,并且设置数据库的CONTAINER_MAP属性
–创建map对象


CREATE TABLE appadm.conmap (country VARCHAR2(30) NOT NULL)
PARTITION BY LIST (country) (
  PARTITION app01 VALUES ('US','MEXICO','CANADA','INDIA'),
  PARTITION app02 VALUES ('UK','FRANCE','GERMANY','CHINA','JAPAN')
);


–设置container_map属性


ALTER PLUGGABLE DATABASE SET CONTAINER_MAP='appadm.conmap';1
分别插入数据到相应的PDB


–插入数据


ALTER SESSION SET CONTAINER=app01;
INSERT INTO APPADM.cmtb VALUES ('AMER VALUE','US');
INSERT INTO APPADM.cmtb VALUES ('AMER VALUE','MEXICO');
INSERT INTO APPADM.cmtb VALUES ('AMER VALUE','CANADA');
COMMIT;


ALTER SESSION SET CONTAINER=app02;
INSERT INTO APPADM.cmtb VALUES ('EURO VALUE','UK');
INSERT INTO APPADM.cmtb VALUES ('EURO VALUE','FRANCE');
INSERT INTO APPADM.cmtb VALUES ('EURO VALUE','GERMANY');
COMMIT;


在应用root中查询对象


select * from APPADM.cmtb where country = 'MEXICO';


VALUE                  COUNTRY                CON_ID
------------------------------ ------------------------------ ----------
AMER VALUE            MEXICO                      6


能够正常获取到查询结果,并且如果是select *的话,还会多出CON_ID列,指出数据来源的PDB ID。


仅仅实现查询还远远满足不了业务系统的要求,接下来我们再测试DML操作在CONTAINER_MAP时的使用情况。


Oracle提供了几种DML操作方法:


使用containers子句,并且在where条件中指定操作的con_id
SQL> update containers(appadm.cmtb) set value='EURO VALUE1' where country='GERMANY' and con_id=7;


1 row updated.


这种方法需要进行大量的应用重构,而且非常不灵活,实际生产环境中没有多大的实用价值。


设置默认目标容器,无需在where条件中指定操作的con_id
ALTER PLUGGABLE DATABASE CONTAINERS DEFAULT TARGET = (app01);
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='CONTAINERS_DEFAULT_TARGET';


SQL> update containers(appadm.cmtb) set value='EURO VALUE1' where country='GERMANY';


0 rows updated.


SQL> select * from appadm.cmtb where country='GERMANY';


VALUE                  COUNTRY                CON_ID
------------------------------ ------------------------------ ----------
EURO VALUE            GERMANY                    7


现实中同样不太可能将操作限制在某个应用PDB,这种方法的价值仍然不大。而且测试过程中,这种方法未更新成功。


由此可见,虽然经过两个版本的更新,CONTAINER_MAP 仍然只是一个原型,距离实际的生产使用还有很多的路要走。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 12C & 18C 新特性 PDB Loc.. 下一篇我是如何用2个Unix命令给SQL提速的

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目