您好,登录后才能下订单哦!
小编给大家分享一下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 ONLY JYPDB READ WRITE ORCLPDB READ WRITE SALESACT MOUNTED SQL> alter pluggable database salesact open read write; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY JYPDB READ WRITE ORCLPDB MOUNTED SALESACT 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 ONLY HRACT MOUNTED JYPDB READ WRITE SALESACT 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 ONLY PAYROLLACT MOUNTED SQL> alter pluggable database payrollact open read write; Pluggable database altered. SQL> select name,open_mode from v$pdbs; NAME OPEN_MODE -------------------------------------------------------------------------------------------------------------------------------- ---------- PDB$SEED READ ONLY PAYROLLACT 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来创建与删除应用程序容器”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。