Oracle12c多租户如何启动关闭CDB或PDB (PDB自动启动)

时间:2022-05-12 16:49:14
Oracle 数据库 12 c 中介绍了多租户选项允许单个容器数据库 (CDB) 来承载多个单独的可插拔数据库 (PDB)。
下面我们一起来启动和关闭容器数据库 (CDB) 和可插拔数据库 (PDB)。

一、启动与关闭 cdb、pdbs 数据库

说明:对于CDB,启动和关闭与之前传统的方式一样。

1. 启动 CDB
启动和关闭的容器数据库和以前版本的常规实例相同。使用SQL*Plus STARTUP和SHUTDOWN命令,必须以特权用户身份连接到CDB。
一些典型用法如下所示。
--12c数据库创建完成后,默认情况下使用sqlplus / as sysdba  登录连接的是CDB。
[oracle@12c01 ~]$ sqlplus / as sysdba
SQL>startup;
SQL> select name,cdb,open_mode from v$database;

NAME                 CDB OPEN_MODE
-------------------- --- --------------------
ANDYCDB              YES READ WRITE
SQL> show pdbs                       

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED  READ ONLY  NO
3 PDB01  MOUNTED
在CDB 启动之,PDB 是自动启动到mount状态,而不是OPEN。 所以我们还需要手工去open它

2. 关闭CDB,也会把PDB 关闭掉
SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;
SQL>shutdown; 

二、 启动与关闭可插接式数据库 (PDB)

3. 启动 PDB
特权用户使用 SQL*PLUS 命令或ALTER PLUGGABLE DATABASE命令可以启动和停止可插拔的数据库。
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB01                          MOUNTED
SQL> alter session set container=pdb01;

Session altered.

SQL> alter pluggable database pdb01 open;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 PDB01                          READ WRITE NO
启动到其他状态:
ALTER PLUGGABLE DATABASE OPEN READ ONLY FORCE;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;

4. 关闭 PDB
SQL> alter pluggable database pdb01 close immediate;

Pluggable database altered.

扩展:
1.启动或者关闭一个或多个 PDB,指定的名称为一个以逗号分隔的列表。
ALTER PLUGGABLE DATABASE pdb1,pdb2 OPEN READ ONLY FORCE;
ALTER PLUGGABLE DATABASE pdb1,pdb2 CLOSE IMMEDIATE;
2.启动或者关闭 all pdbs
ALTER PLUGGABLE DATABASE ALL OPEN;
ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
3.排除某些pdbs不启动,启动所有为排除的。
ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;
ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;

三、可插接式数据库(PDB) 自动启动

默认情况下,在CDB 启动的时候,all 的PDB 都是mount状态。我们可以通过触发器来实现pdbs随cdb自动启动
[oracle@12c01 ~]$ sqlplus / as sysdba
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL>
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
Trigger created.

验证 PDB 自动启动:
SQL> startup;
SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED  READ ONLY  NO
3 PDB01  READ WRITE NO