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. Spring IOC 源码分析

    Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文 ...

  2. 在wamp 2.0环境下面安装Zend Optimizer的方法

    原文链接:http://blog.sina.com.cn/s/blog_8dc13ec50101pbat.html 我是用WAMP来做PHP的服务器,进行本机测试和开发PHP项目. wamp环境是刚刚 ...

  3. 集成利用tesseract.exe进行ocr

    ocr是一个宽泛的概念.市场上面ocr将一直是一个不断发展.需求强烈的方向. 我认为,从难度上区分,中文ocr难于英文ocr;手写ocr难于印刷ocr.所以两两组合,中文手写体最难(比如毛体,有一些人 ...

  4. Online Judge 2014 K-th Number -主席树

    You are working for Macrohard company in data structures department. After failing your previous tas ...

  5. [noip模拟题]合理种植

    [问题描述] 大COS在氯铯石料场干了半年,受尽了劳苦,终于决定辞职.他来到表弟小cos的寒树中学,找到方克顺校长,希望寻个活干. 于是他如愿以偿接到了一个任务…… 美丽寒树中学种有许多寒树.方克顺希 ...

  6. vs下C++内存泄露检测

    本文原链接: http://www.cnblogs.com/zouzf/p/4152279.html 参考文章: http://msdn.microsoft.com/zh-cn/library/x98 ...

  7. ADT Bundle下载和安装

    下载官方adt集成包(即ADT Bundle)并安装. Android官方已经推出adt集成包,包含了eclipse.sdk和SDK Manager,只需解压出来,然后就能运行Eclipse. 官方集 ...

  8. c++类定义代码的分离

    类文件 实际工程中,对一个类的说明.架构.描述方法是:    往往分成头文件和实现的源文件,来实现代码的分离 然后,源文件中包含类的头文件... 头文件的包含问题: 类对应的实现文件cpp.main主 ...

  9. 卸载vs2017

    卸载enterprise版本 Microsoft.FSharp.SDK.Core卸载失败Package 'Microsoft.FSharp.SDK.Core,version=15.7.20180605 ...

  10. BZOJ3297: [USACO2011 Open]forgot DP+字符串

    Description 发生了这么多,贝茜已经忘记了她cowtube密码.然而,她记得一些有用的信息.首先,她记得她的密码(记为变 量P)长度为L(1 <= L<=1,000)字符串,并可 ...