顾名思义,表示应用容器。与之前的cdb不同的是,它是作为CDB中的一个pdb存在的,在应用容器下面还可以创建新一级的pdb给应用程序使用。这个应用容器中的程序是可以同步到挂在它下面的一个或多个相同业务模块的pdb当中去。
关于应用容器
应用容器是一个可选的、用户创建的CDB组件,用于存储一个或多个应用端的数据和字典信息。一个CDB可以包含0个或多个应用容器。
比如你可以在一个应用容器中创建多个与销售相关的pdb,这些pdb可以共享一个由一组公共表和表定义的应用端。
创建PDB时只需要指定AS APPLICATION CONTAINER
语句就可以创建出一个应用容器的根节点,这时是没有pdb的,需要连接到应用容器根节点以后创建相应的pdb。
管理应用容器
根节点
每个应用容器只有一个应用根节点,是这个应用容器中所有pdb的父节点。
创建的那一刻应用容器的根节点属性就确定了且无法更改,根节点与CDB根节点和标准的PDB都有区别,因为它能储存用户创建的公用对象。应用公用对象可以被所有应用容器下的应用pdb访问,但是这些对象无法被CDB根节点、其他应用根节点和所有不属于这个应用根节点下的pdb所访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
create pluggable database app_root as application container admin user xb identified by xb; alter pluggable database app_root open; alter session set container=app_root; col name format a20 col root format a10 select con_id, name, application_root as root, application_pdb as pdb from v$containers; CON_ID NAME ROOT PDB ---------- -------------------- ---------- --- 5 APP_ROOT YES NO |
对应用容器根节点的操作与常规pdb类似,都可以克隆、删除等。
应用容器pdb
创建完根节点以后,要登录到根节点才能创建相关应用pdb。可以通过种子pdb,克隆pdb或者插入一个已经拔下的pdb的方式来创建应用pdb。与CDB根节点下的pdb操作一样,在应用容器中你也可以克隆、拔下或者删除一个应用pdb。但是应用pdb必须属于应用根节点下。
1 2 3 |
alter session set container=app_root; create pluggable database app1 admin user xb1 identified by xb; alter pluggable database app1 open; |
当创建完一个新的应用pdb后,需要将应用根节点的数据同步到pdb当中来
1 2 |
alter session set container=app1; alter pluggable database application all sync; |
可以通过在应用根节点或者CDB根节点来删除应用pdb
1 2 3 |
alter pluggable database close immediate; alter session set container=cdb$root; drop pluggable database app1 including datafiles; |
应用种子pdb
应用种子pdb是可选的、在应用容器中由用户创建的pdb。可以让你很快速的创建应用pdb,在应用容器中的角色与CDB$root中的seed角色一样。
1 2 3 4 5 6 7 8 9 10 11 12 |
# 创建种子pdb alter session set container=app_root; create pluggable database as seed admin user seed_xb identified by xb; alter |