千家信息网

Oracle 12c 使用SQL*Plus来创建与移动应用程序Seeds

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,可以使用多种方法来创建应用程序seeds,包括使用CDB seed,克隆现有的PDB或Non-CDB,与附加一个卸载的PDB。也可以从应用程序容器中删除应用程序seeds。为了在应用程序容器中创建新的
千家信息网最后更新 2026年11月01日Oracle 12c 使用SQL*Plus来创建与移动应用程序Seeds

可以使用多种方法来创建应用程序seeds,包括使用CDB seed,克隆现有的PDB或Non-CDB,与附加一个卸载的PDB。也可以从应用程序容器中删除应用程序seeds。

为了在应用程序容器中创建新的应用程序seed,可以执行带有as seed子句的create pluggable database语句。可以使用应用程序种子为应用程序提供一个应用程序容器。通常在应用程序seed创建之前应用程序容器的应用程序被安装在应用程序root中。在应用程序seed创建之后它将与应用程序root进行同步,因此应用程序被安装在应用程序seed中。当创建应用程序seed之后,使用应用程序seed创建的任何PDB都安装应用程序。当应用程序root中的应用程序被升级或打补丁后,应用程序seed必须使用应用程序root进行同步来应用这些改变。

通过执行带有as seed子句的create pluggable database语句来创建应用程序seed。

一个应用程序容器可以有零或一个应用程序seed。当使用as seed子句创建应程序seed时,不用指定它的名字。应用程序seed名字总是以application_container_name$SEED命名,其中application_container_name是应用程序seed的应用程序容器的名字。例如,在salesact应用程序容器中的应用程序seed它的名字必须是salesact$SEED。

当创建一个新的应用程序seed时,必须为在create pluggable database语句中为应用程序容器指定管理员。这个语句将在应用程序容器中创建一个本地用户的管理员,并且被授予pdb_dba角色。

创建应用程序seed的所需要满足的条件:
.CDB必须存在

.CDB必须处于读写模式

.应用程序seed所属的应用程序容器必须处于读写模式

.当前用户必须是一个公共用户,应用程序seed所属的应用程序root是当前容器

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

.在应用程序容器中对于包含应用程序的应用程序seed,应用程序必须安装在应用程序root

创建应用程序seed
可以通过执行带有as seed子句的create pluggable database语句来创建应用程序。应用程序容器中的应用程序seed类似于CDB中的seed。一个应用程序seed能用来快速与简单的创建满足应用程序容器要求的应用程序PDB。创建应用程序seed的操作如下:
1.在SQL*Plus中,确保当前容器是应用程序root。

2.执行带有as seed子句的create pluggable database语句来创建应用程序seed。根据需要还可以指定其它子句。在创建完应用程序seed后,它处于mounted模式,状态为new。可以通过查询v$pdbs视图的open_mode列来检查应用程序seed的打开模式。可以通过查询cdb_pdbs或者dba_pdbs视图的status列来查看应用程序seed的状态。还会为应用程序seed创建缺省的服务名。服务名与应用程序seed同名并且可以被用来访问应用程序seed。

3.以读写模式来打开新的应用程序seed

4.为了将新应用程序seed集成到应用程序容器中必须以读写模式来打开新的应用程序seed。如果试图以只读模式来打开新的应用程序seed将会返回错误信息。在应用程序seed以读写模式打开后,它的状态将为normal。

5.执行一个或多个以下操作:
5.a 如果使用CDB seed中创建应用程序seed,那么将容器切换到应用程序seed,并且执行带有sync子句的alter pluggable database语句来同步应用程序seed。同步使用应用程序root来实例化应用程序seed中的一个或多个应用程序root的应用程序。

5.b 如果使用应用程序root中创建应用程序seed,那么将容器切换到应用程序seed,然后执行pdb_to_apppdb.sql脚本来将应用程序root转换为应用程序PDB。

当通过克隆一个应用程序PDB来创建应用程序seed时这些操作不需要执行。

6.关闭应用程序seed,然后以只读模式来打开它。

7.备份应用程序seed。

使用CDB seed来创建应用程序seed
这个例子假设满足以下条件:
.应用程序seed将被创建在名为salesact的应用程序容器中。

.对应用程序seed不使用存储限制,因此不指定storage子句。

.应用程序seed不创建缺省表空间。

.不指定path_prefix子句。

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

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

.不需要预先定义Oracle角色被授予给pdb_dba角色。

执行的语句如下:
先切换到应用程序容器salesact中

SQL> alter session set container=salesact;Session altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITE

执行语句来使用CDB seed来在应用程序容器salesact中创建应用程序seed,并打开应用程序seed。

SQL> create pluggable database as seed admin user actseedadm identified by "xxzx7817600";Pluggable database created.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESACT$SEED                                                                                                                    MOUNTEDSQL> alter pluggable database salesact$seed open;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESACT$SEED                                                                                                                    READ WRITE

切换容器到应用程序seed(salesact$SEED)中,使用应用程序root中的所有应用程序来同步应用程序seed。

SQL> alter session set container=salesact$seed;Session altered.SQL>  select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT$SEED                                                                                                                    READ WRITESQL> alter pluggable database application all sync;Pluggable database altered.

关闭应用程序seed(salesact$seed),然后以只读模式来打开应用程序seed。

SQL> alter pluggable database close immediate;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT$SEED                                                                                                                    MOUNTEDSQL> alter pluggable database  open read only;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT$SEED                                                                                                                    READ ONLY

因为应用程序容器名为salesact,所以应用程序seed名为salesact$seed。在创建应用程序seed时一起创建了一个本地管理用户并且被授予了pdb_dba公共角色。如果这个用户在创建应用程序seed时没有授予管理权限,那么使用sys与system公共用户来管理应用程序seed。当创建应用程序seed时,将使用应用程序root来同步应用程序seed。因此应用程序seed将包含安装在应用程序root中的应用程序与应用程序公共对象它们是这些应用程序的一部分。当使用应用程序seed来创建新的应用程序PDB时,应用程序PDB也会包含这些安装的应用程序与应用程序公共对象。

使用应用程序PDB创建应用程序seed
这个例子假设满足以下条件:
.在应用程序容器salesact中创建了应用程序seed。

.将在应用程序PBD(salesapppdb)所在的应用程序容器中创建应用程序seed。

.对应用程序seed不使用存储限制,因此不指定storage子句。

.应用程序seed不包含缺省表空间。

.不指定path_prefix子句。

.不指定file_name_convert与create_file_dest子句。可以启用OMF或设置pdb_file_name_convert初始化参数。与应用程序root相关的文件会基于OMF的配置或初始化参数设置被复制到新目录中。

.在目标目录中没有与新temp文件同名的文件存在,因此不需要使用tempfile reuse子句。

切换容器到应用程序容器(salesact),并执行以下命令来创建应用程序seed。

SQL> create pluggable database as seed from salesapppdb;Pluggable database created.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESAPPPDB                                                                                                                      READ WRITESALESACT$SEED                                                                                                                    MOUNTED

然后打开应用程序seed,再关闭应用程序seed,最后再以只读方式打开应用程序seed。

SQL> alter pluggable database salesact$seed open;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESAPPPDB                                                                                                                      READ WRITESALESACT$SEED                                                                                                                    READ WRITESQL> alter pluggable database salesact$seed close immediate;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESAPPPDB                                                                                                                      READ WRITESALESACT$SEED                                                                                                                    MOUNTEDSQL> alter pluggable database salesact$seed open read only;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESAPPPDB                                                                                                                      READ WRITESALESACT$SEED                                                                                                                    READ ONLY

因为应用程序容器名为salesact,所以应用程序seed名字默认为salesact$seed。应用程序seed是使用应用程序pdb而创建的,因此应用程序seed就包含了安装在应用程序root中的应用程序与应用程序公共对象,它们是这些应用程序的一部分。当使用应用程序seed来创建新的应用程序pdb时,应用程序pdb也会包含安装的应用程序与应用程序公共对象。

使用应用程序root来创建应用程序seed
这个例子假设满足以下条件:
.应用程序seed将创建在应用程序容器(salesact)中。应用程序seed使用对应用程序容器的root进行克隆进行创建。

.对应用程序seed不使用存储限制,因此不使用storage子句。

.应用程序seed不包含缺省表空间。

.不使用path_prefix子句。

.不使用file_name_convert与create_file_dest子句。可以启用OMF或设置pdb_file_name_convert初始化参数。基于OMF配置或初始化参数的设置与应用程序root相关的文件会被复制到新目录中。

.在目标目录中没有与新temp文件同名的文件存在,因此不需要使用tempfile reuse子句。

切换到应用程序容器(salesact)中,执行下面的命令来创建应用程序seed。

SQL> create pluggable database as seed from salesact;Pluggable database created.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESACT$SEED                                                                                                                    MOUNTEDSALESAPPPDB                                                                                                                      READ WRITE

打开应用程序seed,切换容器到应用程序seed,然后执行pdb_to_apppdb.sql脚本将应用程序root转换为应用程序pdb。

SQL> alter pluggable database salesact$seed open;Warning: PDB altered with errors.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESACT$SEED                                                                                                                    READ WRITESALESAPPPDB                                                                                                                      READ WRITESQL> alter session set container=salesact$seed;Session altered.SQL> @$ORACLE_HOME/rdbms/admin/pdb_to_apppdb.sql...SQL> BEGIN  2    execute immediate '&open_sql &restricted_state';  3  EXCEPTION  4    WHEN OTHERS THEN  5    BEGIN  6      IF (sqlcode <> -900) THEN  7        RAISE;  8      END IF;  9    END; 10  END; 11  /PL/SQL procedure successfully completed.SQL> SQL> WHENEVER SQLERROR CONTINUE;SQL> alter pluggable database close immediate instances=all;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT$SEED                                                                                                                    MOUNTED1 row selected.SQL> alter pluggable database open read only instances=all;Pluggable database altered.SQL> select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT$SEED                                                                                                                    READ ONLY1 row selected.

因为应用程序容器名为salesact,所以应用程序seed名为salesact$seed。应用程序seed是使用应用程序root进行创建的。因此应用程序seed包含安装在应用程序root中的应用程序与应用程序公共对象,它们是这些应用程序的一部分。当使用应用程序seed来创建新应用程序PDB时,应用程序pdb也会包含安装的应用程序与应用程序公共对象。

从应用程序容器中拔出应用程序seed
拔出应用程序seed就是断开应用程序seed与应用程序容器的关联。当不再需要应用程序seed时可以将其删除。拔出应用程序seed类似于拔出PDB。为了拔出应用程序seed,连接到它的应用程序root并使用alter pluggable database语句来指定生成xml文件或.pdb文件。当指定xml文件后,在卸载完成后生成的xml文件会包含描述应用程序seed的元数据。

SQL> alter pluggable database salesact$seed close immediate instances=all;Pluggable database altered.SQL>  select name,open_mode from v$pdbs;NAME                                                                                                                             OPEN_MODE-------------------------------------------------------------------------------------------------------------------------------- ----------SALESACT                                                                                                                         READ WRITESALESACT$SEED                                                                                                                    MOUNTEDSALESAPPPDB                                                                                                                      READ WRITE3 rows selected.SQL> alter pluggable database salesact$seed unplug into '/tts/plug/salesact_seed.xml';Pluggable database altered.

删除应用程序seed
当不再需要应用程序seed时,可以执行drop pluggable database语句来删除。当删除应用程序seed时,CDB的控制文件会被修改来删除与被删除应用程序seed的所有相关信息,但是归档重做日志与备份不会被删除,但可以使用RMAN来删除它们。

SQL> drop pluggable database salesapppdb including datafiles;Pluggable database dropped.

创建应用程序PDB
可以在应用程序root容器中执行create pluggable database语句来创建应用程序PDB。创建应用程序pdb与在CDB root中创建PDB都是使用相同的SQL语句。当在应用程序root中执行create pluggable database语句时新创建的PDB为应用程序PDB。SQL语句必须在应用程序root中执行并且对应用程序root中所定义的应用程序数据库有显式依赖性。创建应用程序PDB的操作如下:

1.在SQL*Plus中,确保当前容器为应用程序root

2.执行create pluggable database语句。在应用程序PDB完成创建之后,它处于mounted模式并且状态为NEW。可以通过查询v$pdbs视图的open_mode列来查看应用程序pdb的打开模式,可以通过查询cdb_pdbs或dba_pdbs视图的status列来查看应用程序pdb的状态。对于新创建的应用程序PDB也会创建一个缺省的服务名,服务名与应用程序PDB同名并且可以被用来访问应用程序PDB。

3.以读写模式来打开应用程序PDB

4.为了将新的应用程序PDB集成到应用程序容器必须以读写模式来打开新的应用程序PDB。如果试图以只读模式来打开应用程序PDB将会返回错误信息。在应用程序PDB以读写模式打开后它的状态将变为NORMAL。

5.切换容器为应用程序PDB

6.执行alter pluggable database ... sync来同步应用程序PDB。同步使用应用程序PDB来实例化应用程序PDB中的一个或多个应用程序root中的应用程序。

7.关闭应用程序PDB,然后以只读模式打开。

8.备份应用程序PDB。

程序 应用 应用程序 容器 子句 模式 语句 文件 中创 切换 同步 用户 参数 对象 状态 目录 可以通过 名字 管理 条件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技公司简介 互联网是第几次科技革命的成果 重生之互联网科技帝国 互联网与科技金融数据 互联网科技的发展 杭州互联网科技公司 互联网科技上市公司 狮子座互联网科技培训 银川新华互联网科技职业技术培训学校图片 宜昌元轩互联网科技有限公司 互联网金融科技展 恒生互联网科技业指数调整周期 国大互联网教育科技有限公司薪资 上海科技产业互联网平台 广东工业互联网大赛深圳学泰科技 互联网相关科技技术 南京一网一红互联网科技有限公司 美国五大互联网科技公司市值多少 互联网大会出现的黑科技 互联网最新的科技 北京互联网科技公司 甘肃拓世互联网科技有限公司 太原新华互联网科技学校怎么样 银川新华互联网科技职业技术培训学校图片 栖莱科技互联网股份有限公司 南平创想时代互联网科技有限公司 互联网与医疗科技 洛阳共同富裕互联网科技有限公司 互联网科技职业技能培训学校
0