千家信息网

Oracle 12c R2版本 Application Containers的特性是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家分享的是有关Oracle 12c R2版本 Application Containers的特性是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说
千家信息网最后更新 2026年11月03日Oracle 12c R2版本 Application Containers的特性是什么

本篇文章给大家分享的是有关Oracle 12c R2版本 Application Containers的特性是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

在Oracle Database 12c R2版本中,Oracle带来新的Application Containers特性,该特性对原有的多租户功能进行了增强,在CDB root容器中可以创建一个叫做Application root的容器,类似于CDB root,可在其内创建多个依赖于Application root的Application PDBs。

"Application"

在Application Container特性下还有另一个概念,被命名为"Application",我们可以把"Application"理解为一个区域,"Application"只能创建在Application root中,其内可以创建表、视图、函数等公共对象,然后可在Application PDBs中使用sync同步命令,来实现"Application"内的公共对象共享到Application PDBs中。

本篇文章中,通过"Application Root/PDBs"与"Application"的创建开始带你认识Application Container特性,在第二篇中将带你了解"Application"内的公共对象(Application Common Objects),并通过实验让你对其有一个更加直观的认识。

Application root的创建

Application root与普通的PDB创建语句相似,在创建语句中需要指定"as application container"子句。

首先我们先设置db_create_file_dest

创建一个名qdatacon1的Application root

这样一个名为qdatacon1的Application root就已经成功创建 ,可以通过视图dba_pdbs.application_root字段查看是否是Application rootdba_pdbs.application_root字段为YES

将QDatacon1打开

注意,当在使用Application Containers特性时需要使用数据文件的OMF的管理方式,虽然在不使用OMF管理时依然可以成功创建Application root以及Application PDBs,但当"Application"内包含表空间后,在Application PDBs中进行同步"Application"时会报ORA-01537错误,无法将"Application"内的表空间同步到Application PDBs中。

Application root的基本管理与普通的PDB基本上没有区别, 包括Application root的cloning/unplug/plugin等。但需要注意as application container的使用

当然,如果你想将Application root拔出后,以普通PDB的方式插入CDB中,那么去掉

as application container子句即可。

Application PDBs的创建

Application PDB在创建时必须连接到相应Application root中,而不是CDB root,当连接到Application root中时,只需按照创建普通PDB的方式创建即可,无需额外子句指定,创建完成的PDB既是相应Application root中的Application PDB。

切换到Application root中创建Application PDB:qdcpdb1,切换到CDB中

在CDB$root中通过show pdbs显示时,可以看到的Application PDB与普通的PDB并没有什么区别。

可以通过cdb_pdbs视图,来查看Application PDB属于哪个Application root

当Applicatoin PDB创建成功,可以使用sync命令将它与Application root中定义的Application进行同步。

alter pluggable database application all sync;

Applications

文章的开篇提到,可以把"Application"做为一个区域来理解,而"Application"只能在Application root中创建及管理

在"Application"的维护命令中可能最常用的就是install、patch、upgrade以及uninstall,下面对三个命令做简单描述。

Install an Application

当使用alter pluggable database带有begin install子句时,即开始一个"Application"的安装,这里可以理解为一个区域的开始,当安装完成后在Application PDB中使用sync命令同步相应的"Application"将会被自动安装在本PDB内。

这样我们开始了一个qdcon1_reg1的"Application",使用end install命令封闭qdcon1_reg1,

可以通过dba_applications视图查看,已经安装的Application

Application安装完成后,可以在该Application root下的Application PDB中使用sync命令来进行同步,如下:

查看dba_applications视图,确认qdcon1_reg1是否已经安装

可以看到qdcon1_reg1已经安装完成,安装完成后qdcon1_reg1中的公共对象会以特定的方式被共享到相应的Application PDB中,

表tdata已经被共享到qdcpdb1中。

在Application root中可以通过dba_app_pdb_status视图,查看Application被安装到哪些Application PDB中

Patch an Application

在上面的小结中,当我们使用end install子句将"Application"封闭后,如果想再次在"Application"中创建对象(table/view/packages/sequence等),以及对"Application"内已经存在的对象进行alter操作时,我们可以使用patch子句对现有的"Application"进行修补操作。

如下示例,开始一个patch,并且在application内创添加表以及更改现存表的表结构:

删除Application内的表

删除失败

结束patch

查看patch信息

在qdcpdb1中同步qdcon1_reg1

tdata的表结构与texte表均同步完成

Upgrade an Application

对"Application"我们可以使用patch来对其进行修补操作,但修补操作只限添加/更改等,无法对已经存在"Application"中的公共对象进行删除操作,如果我们想对公共对象进行删除操作,可以使用UPGRADE子句对现有的"Application"进行升级,在升级的过程中,Oracle会首先自动创建Application root的Clone版本,Clone版本创建完成后,Application PDBs将指向Clone版本的Application root,"Application"将继续执行升级操作,升级完成之后,Application root的Clone版本将继续被保留,并且为不同步"Application"的Application PDB提供服务,同步"Application"后的Application PDB将指向升级后的Application root。

升级现有的qdcon1_reg1:F1956732192_4_1即为qdatacon1的clone版本

删除tdata表,并且创建新表tmeta:

结束升级,并查看版本信息

在qdcpdb1中同步qdcon1_reg1

tdata被删除/tmeata的创建已同步到qdcpdb1中。

Uninstall an Application

"Application"的卸载后并不会从数据字典中将该"Application"删除,它会被标记为UNINSTALL,以便"Application"不可以进行upgrade/patch/uninstall等操作,当uninstall命令发出后,需要将该"Application"中包含的对象全部删除。

uninstall同样会产生clone版本的Application root

删除对象且结束uninstall

因为对象并没有全部删除,导致end uninstall失败,下面继续drop用户和表空间:

查看被uninstall的qdcon1_reg1状态

在qdcpdb1中查看公共对象情况

表texte是extended data-linked方式,数据存储在Application root的qdata_tbs中,因为qdata_tbs已经被删除,所以在qdcpdb1中查询时报错,而tmeta为metadata-linked方式,数据存储在本地,所以可以在未做同步时可以查询。

同步qdcon1_reg1

同步完成。

以上就是Oracle 12c R2版本 Application Containers的特性是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

同步 对象 版本 命令 特性 子句 升级 方式 视图 普通 可以通过 数据 管理 成功 区域 文章 空间 中创 修补 中将 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 互联网与科技 有格互联网科技 华服互联网科技怎么样 云信互联网科技有限公司 互联网巨头科技公司 天津摩尔互联网科技 互联网科技公司介绍 卓越科技互联网 招聘 来此购互联网科技有限公司 互联网科技与管理 荆州市昕露互联网络科技有限公司 厦门千工互联网科技有限公司 中和天地互联网科技有限公司 广州千川互联网科技有限公司 广州百诚互联网科技有限公司官网 工业互联网科技成果转化 珠海东科互联网科技有限公司 互联网科技平台产品运营 科技发展第三阶段互联网时代 互联网科技公司排名 互联网科技工作委员会毛军 互联网科技开发公司 互联网金融和金融科技 互联网巨头投资的硬核科技 华中科技有哪些互联网大佬 济南有互联网科技公司吗 众安科技工业互联网合作 承德科技产业互联网平台 广州全民伙伴互联网科技有限公司
0