阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle 12c r1新特性之容器数据库(CDB)和可插拔数据库(PDB) 的启动和关闭

198次阅读
没有评论

共计 3877 个字符,预计需要花费 10 分钟才能阅读完成。

Oracle12c 中引入的多宿主选项(multitenant option)允许一个容器数据库容纳多个独立的可插拔数据库(PDB)。本文将说明如何启动和关闭容器数据库 (CDB) 和可插拔数据库(PDB)。

1.  容器数据库(CDB)

启动和关闭容器数据库和以往一样。当作为授权用户连接到 CDB 时,SQL*Plus 中可以使用 STARTUP 和 SHUTDOWN 命令。具体语法如下:

STARTUP [NOMOUNT | MOUNT | RESTRICT | UPGRADE| FORCE | READ ONLY]

SHUTDOWN [IMMEDIATE | ABORT]

2.        可插拔数据库(PDB)

可插拔数据库能用 SQL*Plus 命令或 ALTER PLUGGABLEDATABASE 命令启动和关闭。

3.      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;

4.        ALTER PLUGGABLE DATABASE

ALTER PLUGGABLE DATABASE 命令能在 CDB 或 PDB 中使用。

当作为授权用户连接至 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 ONLYFORCE;

ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;

ALTER PLUGGABLE DATABASE OPEN READ WRITE;

ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;

当作为授权用户连接至 CDB 时,如下命令可用来打开和关闭一个或多个 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];

  子句可以是如下值:

一个或多个以逗号分隔的 PDB 名。

 ALL 关键字指所有 PDB。

ALL EXCEPT 关键字,后面跟一个或多个逗号分隔的 PDB,指一个 PDB 子集。

示例如下:

ALTER PLUGGABLE DATABASE pdb1, pdb2 OPEN READONLY FORCE;

ALTER PLUGGABLE DATABASE pdb1, pdb2 CLOSEIMMEDIATE;

ALTER PLUGGABLE DATABASE ALL OPEN;

ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;

ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1OPEN;

ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1CLOSE IMMEDIATE;

5.        可插拔数据库 (PDB) 自动启动

Oracle12.1.0.2 补丁集已引入了保持 PDB 启动状态的能力,因此,不用再通过下面的触发器方式来实现自动打开 PDB。

Oracle12.1.0.2 之前,CDB 启动后,所有的 PDB 都处于加载状态。CDB 启动时,没有默认机制自动启动 PDB。只能通过在 CDB 上建立一个系统触发器来自动启动部分或所有 PDB。

CREATE OR REPLACE TRIGGER open_pdbs

  AFTERSTARTUP ON DATABASE

BEGIN

  EXECUTE IMMEDIATE ‘ALTER PLUGGABLEDATABASE ALL OPEN’;

END open_pdbs;

/

如果你不想启动所有的 PDB,可以定制修改该触发器。

6.        保持 PDB 处于启动状态(12.1.0.2 之后)

Oracle12.1.0.2 补丁集可以让 PDB 在 CDB 重启时保持启动状态。这可以通过 ALTERPLUGGABLE DATABASE 命令实现。

我们可以观察 CDB 重启的整个过程。注意,重启前,PDB 都处于可读写模式,但重启后却处于加载模式。

SELECT name, open_mode FROM v$pdbs;

NAME                          OPEN_MODE

—————————— ———-

PDB$SEED                      READ ONLY

PDB1                          READWRITE

PDB2                          READWRITE

SQL>

SHUTDOWN IMMEDIATE;

STARTUP;

SELECT name, open_mode FROM v$pdbs;

NAME                          OPEN_MODE

—————————— ———-

PDB$SEED                      READONLY

PDB1                          MOUNTED

PDB2                          MOUNTED

SQL>

接着,我们打开两个 PDBS,但只保存 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 FROMdba_pdb_saved_states;

CON_NAME            INSTANCE_NAME        STATE

——————– ———————————-

PDB1                cdb1                OPEN

SQL>

重启 CDB 将会出现一个不同结果。

SELECT name, open_mode FROM v$pdbs;

NAME                          OPEN_MODE

—————————— ———-

PDB$SEED                      READONLY

PDB1                          READWRITE

PDB2                          READWRITE

SQL>

SHUTDOWN IMMEDIATE;

STARTUP;

SELECT name, open_mode FROM v$pdbs;

NAME                        OPEN_MODE

—————————— ———-

PDB$SEED                      READONLY

PDB1                          READWRITE

PDB2                          MOUNTED

SQL>

被保存的状态可以通过如下命令被废弃。

ALTER PLUGGABLE DATABASE pdb1 DISCARD STATE;

COLUMN con_name FORMAT A20

COLUMN instance_name FORMAT A20

SELECT con_name, instance_name, state FROMdba_pdb_saved_states;

no rows selected

SQL>

7.        注意:

Ø  只有容器处于只读或读写模式,状态才可以在视图 DBA_PDB_SAVED_STATES 中保存和显式。当对一个加载状态的容器运行 ALTER PLUGGABLE DATABASE … SAVE STATE 命令时,既不报错,也不会记录状态,因为这是 CDB 重启后的默认状态。

Ø  像 ALTER PLUGGABLEDATABASE 命令的其他例子一样,PDBs 可以单独列出,也可以是逗号分隔的 PDB 列,或者用 ALL 或 ALL EXCEPT 关键字。

Ø  RAC 环境中,可以增加 INSTANCES 子句。该子句中可以写单个实例,逗号分隔的实例列,ALL 或 ALL EXCEPT 关键字。不管 INSTANCES 子句,SAVE/DISCARD STATE 命令只影响当前的实例。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/140025.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3877字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中