千家信息网

Oracle 12c如何使用SQL*Plus来创建与删除应用程序容器

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下Oracle 12c如何使用SQL*Plus来创建与删除应用程序容器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了
千家信息网最后更新 2026年11月01日Oracle 12c如何使用SQL*Plus来创建与删除应用程序容器

小编给大家分享一下Oracle 12c如何使用SQL*Plus来创建与删除应用程序容器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

可以使用不同方式来创建应用程序容器,比如使用CDB seed,克隆现有的PDB或Non-CDB,插入一个被拔出的PDB,也可以从CDB中删除应用程序容器。

创建应用程序容器
可以使用create pluggable database语句来在CDB中创建应用程序容器。当执行create pluggable database语句时指定as application container子句可以创建一个新的应用程序容器。应用程序容器由应用程序root与用来存储一个或多个应用程序数据的一组应用程序PDB组成。应用程序PDB可以被附加到应用程序root中,并且可以选择快速地创建应用程序seed与简单地创建新的应用程序PDB。应用程序PDB与应用程序root可以共享应用程序公共对象。

有三种类型的应用程序公共对象:
.元数据链接应用程序公共对象存储特定对象的元数据,比如表。 因此容器可以共享有相同结构没有相同数据的应用程序公共对象。

.数据链接应用程序公共对象只在应用程序root中定义一次并且在应用程序PDB的上下文中共享只读对象。

.扩展数据链接应用程序公共对象在应用程序root中存储共享数据但也允许应用程序PDB来将数据添加到对象中。添加的数据是本地数据它对于每个应用程序PDB来说是唯一的。

通过执行creatae pluggable database as application container子句可以创建应用程序容器。也可以使用以下技术来创建应用程序容器:
.使用CDB seed
.克隆现有的PDB或Non-CDB
.迁移PDB
.插入被拔出的PDB

当当前容器是CDB的root并且在执行create pluggable database语句时指定了as application container子句时,将创建应用程序容器。

迁移现有的应用程序为应用程序容器
可以通过使用现有的PDB来创建应用程序容器。当迁移现有应用程序为一个应用程序容器时必须完成额外的任务。要附加的PDB必须包含应用程序数据库对象,包含它们的数据,并且对于应用程序所访问的相关数据库对象必须执行dbms_pdb中的过程。当应用程序公共用户,角色或profiles存放在应用程序root中,对与应用程序相关的数据库对象必须执行dbms_pdb包。在应用程序迁移为应用程序容器后,可以在应用程序容器中创建应用程序PDB,并且可以使用现有的PDB来创建应用程序PDB。

创建应用程序容器的准备
在创建应用程序容器之前必须完达到以下条件:
.CDB必须存在

.CDB必须处于读写模式

.当前容器如果是CDB的root,那么当前用户必须是一个公共用户

.当前用户必须有create pluggable database系统权限

.对于每个应用程序容器必须要决定一个唯一的应用程序容器名字。每个应用程序容器名字必须对于单个CDB中的所有容器来说是唯一的,并且每个应用程序容器名字必须在特定监听所监听的所有CDB范围内是唯一的。应用程序容器名字用来区分CDB中的应用程序容器。应用程序容器名字遵守与服务名一样的规则,它是大小写敏感的。

.如果在使用物理备库的Data Guard配置中创建应用程序容器,那么在创建应用程序容器之前必须完成额外的任务。

.如果使用PDB将现有的应用程序迁移成应用程序容器,那么它必须能够通过克隆PDB来创建应用程序root,迁移PDB到应用程序root中,或者将PDB插入到应用程序root中。

创建应用程序容器
可以执行create pluggable database ... as application container语句来创建应用程序容器。创建应用程序容器的操作如下:
1.在SQL*Plus中,确保当前容器为CDB的root。

2.执行create pluggable database ... as application container语句。如果需要还可以指定其它子句。在创建应用程序容器后,它处于mounted模式,并且它的状态为NEW。可以查询v$pdbs视图的open_mode列来查看应用程序容器的打开模式。可以通过查询cdb_pdbs或dba_pdbs视图来查看应用程序状态。并且会对应用程序容器创建一个新的缺省服务。这个服务与应用程序容器有相同的名字,并且可以被用来访问应用程序容器。

3.以读写模式来打开新的应用程序容器。为了将新应用程序容器集成到CDB中必须以读写模式来打开新的应用程序容器。如果你试图以只读模式来打开应用程序容器将会返回错误住处。在应用程序容器以读写模式打开后,它的状态将会变为NORMAL。

4.备份应用程序容器

使用CDB Seed来创建应用程序容器
这个例子假设满足以下条件:
.对应用程序容器没有使用存储限制。因此不指定storage子句。

.应用程序容器不创建缺省表空间

.不指定path_prefix子句

.不指定file_name_convert与create_file_dest子句。可以启用OMF或设置pdb_file_name_convert参数。与CDB Seed相关的文件基于OMF配置或参数设置将会被复制到新目录中。

.在目标目录中如果没有与新temp文件同名的文件存储,将会创建新temp文件,因此不指定tempfile reuse子句。

.没有预先定义的Oracle角色需要被授予给PDB_DBA角色。

SQL> create pluggable database salesact as application container admin user salesadm identified by "xxzx";Pluggable database created.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------PDB$SEED                                                                                                                         READ ONLYJYPDB                                                                                                                            READ WRITEORCLPDB                                                                                                                          READ WRITESALESACT                                                                                                                         MOUNTEDSQL> alter pluggable database salesact open read write;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------PDB$SEED                                                                                                                         READ ONLYJYPDB                                                                                                                            READ WRITEORCLPDB                                                                                                                          MOUNTEDSALESACT                                                                                                                         READ WRITE

通过克隆本地PDB来创建应用程序容器
这个例子假设满足以下条件:
.不指定path_prefix子句

.指定file_name_convert子句来指定复制文件所存放的目录。在这个例子中,文件从
+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/与+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/目录中复制到+test/jy/hract目录中。不指定create_file_dest子句,并且也不使用OMF或pdb_file_name_conver参数。

.对于应用程序root使用存储限制。因此需要指定storage子句。这里指定属于应用程序root的所有表空间大小不能超过6G。这种存储限制不会应用到附加到应用程序root中的应用程序PDB。

.在目标目录中没有与新temp文件同名的文件存在,所以将会创建新的temp文件。因此不用指定tempfile reuse子句。

SQL> create pluggable database hract as application container from jypdb  2  file_name_convert = ('+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/system.297.954436417', '+test/jy/hract/system01.dbf',  3                       '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/sysaux.276.954436419','+test/jy/hract/sysaux01.dbf',  4                       '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/undotbs1.296.954436417','+test/jy/hract/undotsb1.dbf',  5                       '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/undo_2.274.954436487','+test/jy/hract/undo_2.dbf',  6                       '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/temp.275.954436435','+test/jy/hract/temp01.dbf'  7                       )  8  storage (maxsize 6g);Pluggable database created.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------PDB$SEED                                                                                                                         READ ONLYHRACT                                                                                                                            MOUNTEDJYPDB                                                                                                                            READ WRITESALESACT                                                                                                                         READ WRITE

通过插入被拔出的PDB来创建应用程序容器
这个例子假设满足以下条件:
.新应用程序容器不是基于已经被用来创建PDB或应用程序容器的同一个被拔出的PDB而进行创建。因此不用指定as clone子句。

.不指定path_prefix子句

.xml元数据文件没有精确地描述文件的当前目录,因此需要指定source_file_name_convert或source_file_directory子句。在这个例子中XML文件指示文件在+DATA/JY/DATAFILE/,但实际文件是存储在+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/与+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/目录中,指定source_file_name_convert子句。

.文件存储在正确目录中,因此不指定nocopy子句。

.对应用程序容器使用存储限制,因此指定storage子句。指定应用程序容器的所有表空间大小不超过4G。

.在目标目录中有与新temp文件同名的文件存在,为了创建新的temp文件。因此指定tempfile reuse子句。

SQL> create pluggable database payrollact as application container using '/tts/plug/jypdb.xml'  2  source_file_name_convert = ('+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/', '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/DATAFILE/',  3                              '+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/','+DATA/JY/58E7574E7926075EE053AC828A0AA4C9/TEMPFILE/'  4                              )  5  nocopy  6  storage (maxsize 4g)  7  tempfile reuse;Pluggable database created.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------PDB$SEED                                                                                                                         READ ONLYPAYROLLACT                                                                                                                       MOUNTEDSQL> alter pluggable database payrollact open read write;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------PDB$SEED                                                                                                                         READ ONLYPAYROLLACT                                                                                                                       READ WRITE

从CDB中拔出应用程序容器
为了拔出应用程序容器必须满足以下条件:
.当前用户必须有sysdba或sysoper管理权限

.应用程序容器必须至少打开过一次

.应用程序容器不能包含任何应用程序PDB

.应用程序容器不能包含任何应用程序Seed

SQL> alter pluggable database payrollact unplug into '/tts/plug/payrollact.xml';Pluggable database altered.

删除应用程序容器
可以使用drop pluggable database语句来删除应用程序容器。当想要将一个应用程序容器从一个CDB中移动到另一个CDB中或不再需要这个应用程序容器时可以将其删除。

删除应用程序容器与删除PDB是很类似的。当删除应用程序容器时,CDB的控制文件会被修改来删除与被删除应用程序容器相关的信息。与应用程序容器相关的归档重做日志与备份不会被删除,但可以使用RMAN来删除它们。

当删除应用程序容器时,可以使用下面的子句来保留或删除数据文件:
. keep datafiles,缺省值,保留数据文件,即使指定了keep datafiles子句应用程序容器的temp文件仍然会被删除,因为temp文件不再需要。

.including datafiles,删除数据文件。如果应用程序容器是使用snapshot copy子句创建的,那么当删除应用程序容器时必须指定including datafiles子句。

要删除应用程序容器必须满足以下条件:
.应用程序容器必须处于mounted状态或者unplugged状态。

.当前用户必须有sysdba或sysoper管理权限。

.应用程序容器不能包含任何应用程序PDB。

.应用程序容器不能包含任何应用程序Seed。

当删除应用程序容器时保留数据文件

drop pluggable database payrollact keep datafiles;

当删除应用程序容器时并且删除数据文件

以上是"Oracle 12c如何使用SQL*Plus来创建与删除应用程序容器"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

应用 应用程序 程序 容器 文件 子句 数据 对象 目录 存储 模式 名字 条件 用户 语句 例子 状态 限制 相同 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 湖南永感互联网科技有限公司 苏州找大状互联网科技有限公司 金融科技还是互联网 科技创新互联网企业 深圳艾佳互联网科技 顺网科技2021年互联网排名 互联网科技公司招聘 互联网科技项目计划书材料类 成都互联网科技公司工作好不好 电子科技大学互联网创业大赛 怎样加入科技互联网 皮皮虾互联网科技有限公司 抖集互联网科技技术咨询 上海万顺科技互联网有限公司招聘 兰石爱特工业互联网科技分公司 福仕德教育科技互联网 米泉互联网科技专业怎么样 互联网科技博主张洲 每日互联网科技新闻 精品咖啡豆 互联网科技工作委员会 美国互联网科技 深圳艾佳互联网科技 山东吉时兔互联网科技有限公司 互联网科技产业特征 广州新华互联网科技学校电竞方面 工业互联网科技创业 科技和互联网行业的特点 众联互联网络科技
0