客服微信
本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
容器数据库的启动和关闭与常规实例相同。将SQL*Plus启动和关闭命令作为特权用户连接到CDB时可用。一些典型值如下所示。
STARTUP [NOMOUNT | MOUNT | RESTRICT | UPGRADE | FORCE | READ ONLY] SHUTDOWN [IMMEDIATE | ABORT]
可以使用 SQL*Plus 命令或 ALTER PLUGGABLE DATABASE 命令启动和停止可插入数据库。
当以特权用户身份连接到可插入数据库时,以下 SQL*Plus 命令可用于启动和停止可插入数据库。
STARTUP FORCE; STARTUP OPEN READ WRITE [RESTRICT]; STARTUP OPEN READ ONLY [RESTRICT]; STARTUP UPGRADE; SHUTDOWN [IMMEDIATE];
下面显示了一些示例。
STARTUP FORCE; SHUTDOWN IMMEDIATE; STARTUP OPEN READ WRITE RESTRICT; SHUTDOWN; STARTUP; SHUTDOWN IMMEDIATE;
可以从 CDB 或 PDB 使用 ALTER PLUGGABLE DATABASE 命令。
当以特权用户身份连接到 PDB 时,以下命令可用于打开和关闭当前 PDB。
ALTER PLUGGABLE DATABASE OPEN READ WRITE [RESTRICTED] [FORCE]; ALTER PLUGGABLE DATABASE OPEN READ ONLY [RESTRICTED] [FORCE]; ALTER PLUGGABLE DATABASE OPEN UPGRADE [RESTRICTED]; ALTER PLUGGABLE DATABASE CLOSE [IMMEDIATE];
下面显示了一些示例。
ALTER PLUGGABLE DATABASE OPEN READ ONLY FORCE; ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE OPEN READ WRITE; ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
当以特权用户身份连接到 CDB 时,以下命令可用于打开和关闭一个或多个 PDB。
ALTER PLUGGABLE DATABASEOPEN READ WRITE [RESTRICTED] [FORCE]; ALTER PLUGGABLE DATABASE OPEN READ ONLY [RESTRICTED] [FORCE]; ALTER PLUGGABLE DATABASE OPEN UPGRADE [RESTRICTED]; ALTER PLUGGABLE DATABASE CLOSE [IMMEDIATE];
下面显示了一些示例。
ALTER PLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE; ALTER PLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE ALL OPEN; ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN; ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;
12.1.0.2 补丁集引入了保留 PDB 启动状态的功能,因此您可能不应该以本节中讨论的方式实现触发器。
在 12.1.0.2 之前,当 CDB 启动时,所有 PDB 均保持挂载模式。没有默认机制可以在 CDB 启动时自动启动它们。实现此目的的方法是使用 CDB 上的系统触发器来启动部分或全部 PDB。
CREATE OR REPLACE TRIGGER open_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; END open_pdbs; /
如果您不希望启动所有 PDB,您可以自定义触发器。
12.1.0.2 补丁集引入了通过 CDB 重新启动来保留 PDB 启动状态的功能。这是使用 ALTER PLUGGABLE DATABASE 命令完成的。
我们将首先查看 CDB 重启的正常结果。请注意,PDB 在重新启动之前处于 READ WRITE 模式,但在重新启动之后处于 MOUNTED 模式。
col name for a20 SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE ------------------------------ ---------- PDB$SEED READ ONLY PDB1 READ WRITE PDB2 READ WRITE SQL> SHUTDOWN IMMEDIATE; STARTUP; SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE ------------------------------ ---------- PDB$SEED READ ONLY PDB1 MOUNTED PDB2 MOUNTED SQL>
接下来,我们打开两个可插拔数据库,但只保存 PDB1 的状态。
ALTER PLUGGABLE DATABASE pdb1 OPEN; ALTER PLUGGABLE DATABASE pdb2 OPEN; ALTER PLUGGABLE DATABASE pdb1 SAVE STATE;
DBA_PDB_SAVED_STATES 视图显示有关容器已保存状态的信息。
COLUMN con_name FORMAT A20 COLUMN instance_name FORMAT A20 SELECT con_name, instance_name, state FROM dba_pdb_saved_states; CON_NAME INSTANCE_NAME STATE -------------------- -------------------- -------------- PDB1 cdb1 OPEN
现在重新启动 CDB 会给我们带来不同的结果。
SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE ------------------------------ ---------- PDB$SEED READ ONLY PDB1 READ WRITE PDB2 READ WRITE SQL> SHUTDOWN IMMEDIATE; STARTUP; SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE ------------------------------ ---------- PDB$SEED READ ONLY PDB1 READ WRITE PDB2 MOUNTED
可以使用以下语句丢弃保存的状态。
ALTER PLUGGABLE DATABASE pdb1 DISCARD STATE; COLUMN con_name FORMAT A20 COLUMN instance_name FORMAT A20 SELECT con_name, instance_name, state FROM dba_pdb_saved_states; no rows selected
以下是文档中解释的一些使用说明的简要列表。