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<pdb-name-clause> OPEN READ WRITE[RESTRICTED] [FORCE];

ALTER PLUGGABLE DATABASE<pdb-name-clause> OPEN READ ONLY[RESTRICTED] [FORCE];

ALTER PLUGGABLE DATABASE<pdb-name-clause> OPEN UPGRADE [RESTRICTED];

ALTER PLUGGABLE DATABASE<pdb-name-clause> CLOSE [IMMEDIATE];

<pdb-name-clause> 子句可以是如下值:

一个或多个以逗号分隔的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命令只影响当前的实例。

Oracle12cr1新特性之容器数据库(CDB)和可插拔数据库(PDB) 的启动和关闭的更多相关文章

  1. Oracle12c中多宿主容器数据库(CDBs)和可插拔数据库(PDBs)新特性之运行脚本

    对开发者和DBA们来说,对shell脚本批量任务的影响成了多宿主选项带来的最大改变之一.因为多宿主环境通过服务来连接到可插拔数据库,因此,依靠CRON和OS认证成了换成多宿主环境后的一个最大问题.本文 ...

  2. oracle12c新特点之可插拔数据库(Pluggable Database,PDB)

    1.    12c PDB新特点的优势 1)    可以把多个PDB集成进一个平台. 2)    可以快速提供一个新的PDB或一个已有PDB的克隆. 3)    通过拔插技术,可以快速把存在的数据库重 ...

  3. Oracle 12C 新特性 - “可插拔数据库”功能

    Oracle 12C加入了一个非常有新意的功能"可插拔数据库"特性,实现了数据库(PDB)在"容器"(CDB)上的拔功能,既能提高系统资源的利用率,也简化大面积 ...

  4. Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

    Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...

  5. 12c可插拔数据库CDB与PDB管理总结

    12c可插拔数据库CDB与PDB管理总结 创建pdb1.直接创建 CREATE PLUGGABLE DATABASE pdb2 ADMIN USER boswll IDENTIFIED BY orac ...

  6. 如何连接oracle 12c可插拔数据库

    启动根容器:[oracle@eric ~]$ export ORACLE_SID=cup[oracle@eric ~]$ sqlplus / as sysdbaSQL*Plus: Release 12 ...

  7. Oracle 12c的可插拔数据库PDB

    1. 默认安装之后会有一个可插拔数据库:pdborcl 2. 启动根容器: [oracle@eric ~]$ export ORACLE_SID=orcl [oracle@eric ~]$ sqlpl ...

  8. Oracle可插拔数据库的jdbc连接串写法

    我在服务器上部署某个第三方系统的数据库的时候,服务器数据库版本为oracle 12c.我采用的方式是新建了一个实例.访问正常. 后来项目的负责人告诉我,oracle12C支持所谓的可插拔数据库.可插拔 ...

  9. 详谈Oracle12c新特点容器数据库&amp;可插拔数据库(CDB&amp;PDB)

    一般信息 数据字典 CDB_FILE$ DBA_PDBS PDB$SEED CDB_LOCAL_ADMINAUTH$ DBA_PDB_HISTORY PDB_HISTORY$ CDB_PDB_SAVE ...

随机推荐

  1. P4555 [国家集训队]最长双回文串

    P4555 [国家集训队]最长双回文串 manacher 用manacher在处理时顺便把以某点开头/结尾的最长回文串的长度也处理掉. 然后枚举. #include<iostream> # ...

  2. Python3 解决 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

    Python3 解决 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte 一.问题 request.Reque ...

  3. monit

    Monit 是一个用来监测系统状态的工具,不但可以用来监视进程.服务.文件.目录.文件系统,还可以在服务 down 掉的时候自动重启服务或者当某个进程占用过多的资源的时候自动停掉进程,并且支持 Ema ...

  4. spring mybatis 3.2调用mysql存储过程返回多结果集(完整、亲测、可用)

    最近,有个开发提了个需求,希望中间件支持调用mysql存储过程时支持多结果集返回,因为某些原因我们使用了不少的存储过程,很多复杂的逻辑目前来看交互非常的多,所以从当前的现状来说,这个需求还是蛮合理的. ...

  5. 前端开发环境全面配置 --- mac OS

    Mac 开发配置 brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...

  6. React 回忆录(一)为什么使用 React?

    Hi 各位,欢迎来到 React 回忆录!

  7. RMQ 区间最大值 最小值查询

    /*RMQ 更新最小值操作 By:draymonder*/ #include <iostream> #include <cstdio> using namespace std; ...

  8. Codeforces Round #528 div1

    完了,看来上一次的flag要应验了,我大概是真的要掉成pupil了吧.. A - Connect Three 这个就是找到x的中间值,y的中间值,然后切一下,然后把所有的点挂到这条边上.但是我做的还是 ...

  9. v-bind绑定属性样式

    一.class的四种绑定方式 1.布尔值的绑定方式 <div id="demo"> <span v-bind:class="{'class-a':isA ...

  10. [codeWars] - 8kyu的简单复习

    https://www.codewars.com/kata/5aa736a455f906981800360d public class Kata { public static boolean fea ...