前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 12C & 18C Application Container Map 新特性测试

Oracle 12C & 18C Application Container Map 新特性测试

作者头像
星哥玩云
发布2022-08-16 21:45:33
5830
发布2022-08-16 21:45:33
举报
文章被收录于专栏:开源部署开源部署

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

Oracle 12cR2 和 18c 中对PDB的扩展性和管理便利性等方面进行了诸多的增强。这里介绍通过应用容器的Container Map来实现分区表部署在不同的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相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档