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. Idea中Maven仓库配置会自动恢复

    手头有好几个项目,关闭一个项目,打开另一个项目,发现又在重新下载jar包,打开设置一看,maven配置又恢复到了.m2下边.idea配置的maven会自动恢复吗? 答案是否定的,idea的设置有两个, ...

  2. CSS 基础知识点 样式 选择器 伪类

    CSS 基础知识点汇集 版权声明:这篇博客是别人写的,大神博客地址 : https://www.cnblogs.com/Mtime/p/5184685.html 1.CSS 简介 CSS 指层叠样式表 ...

  3. 20145104张家明 《Java程序设计》第7周学习总结

    20145104张家明 <Java程序设计>第7周学习总结 教材学习内容总结 第13章 简单认识时间和日期 -时间的度量:GMT.UT.TAI.UTC.Unix.epoch. -UTC:保 ...

  4. 20145335郝昊《网络攻防》Exp9 Web安全基础实践

    20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...

  5. 一款简单实用的jQuery图片画廊插件

    图片画廊 今天分享一个自己实现的jQuery 图片画廊插件. 看一下效果图: 点击图片时: 在线演示地址:http://www.jr93.top/photoGallery/photoGallery.h ...

  6. git2

    1,开源的代码管理工具 2,分布式管理工具(更安全,可以脱网操作) 3,git的分支管理更加便捷. 4,代码的传输更新速度更快 利用git可以进入多人配合代码开发.有备份.协同 sudo apt-ge ...

  7. dubbo 实战总结

    1,出现重复调用.因为有重试机制,可以改为异步调用或者幂等操作.

  8. Hive创建内部表、外部表

    使用hive需要hive环境 启动Hive 进入HIVE_HOME/bin,启动hive ./hive 内部表 建表 hive> create table fz > (id int,nam ...

  9. Vim简本

    参考链接:http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/ 本文将更简化,只保留其中的精华部分. Level One — ...

  10. Redis的两种连接方式

    1.简单连接 import redis conn = redis.Redis(host=) conn.set('foo', 'Bar') print(conn.get('foo')) a = inpu ...