本文是关于Oracle 12c R2应用程序容器的特性。边肖觉得很实用,所以分享给大家学习。希望你看完这篇文章能有所收获。让我们和边肖一起看看。
在Oracle数据库12c R2版本中,Oracle带来了应用程序容器的新功能,它增强了原来的多租户功能。在CDB根容器中,可以创建一个名为应用程序根的容器,它类似于CDB根,并且可以在其中创建依赖于应用程序根的多个应用程序pdb。
“应用程序”
在应用程序容器特性下还有另一个概念,叫做“应用程序”。我们可以把“Application”理解为一个区域,“Application”只能在Application根目录下创建,在这里可以创建表、视图、函数等公共对象。然后,可以在应用程序数据库中使用同步同步命令,以实现将“应用程序”中的公共对象共享给应用程序数据库。
在本文中,通过创建“应用程序根/PDBs”和“应用程序”,我们将向您介绍应用程序容器的特性。在第二篇文章中,我们将向您介绍“应用程序”中的应用程序常见对象,并通过实验让您更直观地了解它们。
创建应用程序根
Root类似于普通的PDB创建语句,其中需要指定“作为应用程序容器”子句。
让我们先设置db_create_file_dest。
创建一个名为qdatacon1的应用程序根。
名为qdatacon1的应用程序根已成功创建。您可以检查它是否是应用程序根DBA _ pdbs。应用程序根字段为是。
打开QDatacon1
请注意,在使用应用程序容器功能时,有必要使用数据文件的OMF管理方法。虽然在没有OMF管理的情况下仍然可以成功创建应用程序根和应用程序pdb,但是当表空间包含在“应用程序”中时,在同步应用程序pdb中的“应用程序”时会报告错误ORA-01537,并且“应用程序”中的表空间不能同步到应用程序pdb中。
应用程序根的基本管理与普通PDB基本相同,包括应用程序根的克隆/拔出/插件/插件等。但是要注意作为应用程序容器的使用。
当然,如果您想拔出应用程序根并将其作为普通PDB插入CDB,那么请将其删除。
应用程序容器子句就可以了。
创建应用程序数据库
创建应用程序PDB时,它必须连接到相应的应用程序根目录,而不是CDB根目录。当它连接到应用程序根目录时,只需要以与普通PDB相同的方式创建它,并且不需要额外的子句。创建的PDB既是相应应用程序根中的应用程序PDB。
切换到应用程序根目录以创建应用程序PDB:qdcpdb1,然后切换到CDB
当通过show pdbs在CDB$root中显示时,应用程序PDB和普通PDB之间没有区别。
您可以通过cdb_pdbs视图查看应用程序PDB属于哪个应用程序根。
成功创建PDB应用程序后,可以使用同步命令将其与应用程序根目录中定义的应用程序同步。
更改可插入数据库应用程序所有同步;
应用程序
文章开头提到“应用”可以理解为一个区域,“应用”只能在Application root中创建和管理。
在“应用程序”的维护命令中,安装、修补、升级和卸载可能是最常用的命令。下面简要介绍三个命令。
安装应用程序
使用带有begin install子句的alter pluggable数据库时打开。
始一个“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的特性是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/84802.html