Oracle 12c中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。
CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。
而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。
下面是官方文档关于CDB与PDB的关系图。

1 Container Database (CDB)
对于CDB,启动和关闭与之前传统的方式一样,具体语法如下:
STARTUP[NOMOUNT | MOUNT | RESTRICT | UPGRADE | FORCE | READ ONLY]
SHUTDOWN[IMMEDIATE | ABORT]
要注意,在12c数据库创建完成后,默认情况下使用sqlplus / as sysdba 登录连接的是CDB。
[oracle@Ora12c~]$ sqlplus / as sysdba

SQL*Plus:Release 12.1.0.1.0 Production on Thu Apr 24 17:50:34 2014

Copyright© 1982, 2013, Oracle. All rights reserved.

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>show con_name

CON_NAME


CDB$ROOT

SQL>

SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE


2 4088301206 F7C1E3C96BBF0585E0430A01A8C05459PDB$SEED READ ONLY

3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE
我们现在连接的是CDB,即root container。
我们关闭CDB:
SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.
我们关闭CDB之前PDB 是没有关闭的,所以这个操作也会把PDB 关闭掉。

SQL>startup

ORACLE instance started.

Total System Global Area 1269366784 bytes

Fixed Size 2287912 bytes

Variable Size 788530904 bytes

Database Buffers 469762048 bytes

Redo Buffers 8785920 bytes

Database mounted.

Database opened.

SQL> select con_id, dbid, guid, name , open_modefrom v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE


2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY

3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA MOUNTED
注意这里的PDB,在CDB 启动之,PDB 是自动启动到mount状态,而不是OPEN。 所以我们还需要手工去open它,当然,也可以通过在CDB中配置触发器来自动open。

2 Pluggable Database (PDB)

PDB 的操作可以通过SQL*PLUS 来操作,也可以通过ALTER PLUGGABLE DATABASE 命令操作。

2.1 使用SQL*Plus 命令

因为默认连接的是CDB,所以必须先指定PDB才可以通过sqlplus来启动和关闭PDB,

具体语法和普通实例一样:

STARTUP FORCE;

STARTUP OPEN READ WRITE [RESTRICT];

STARTUP OPEN READ ONLY [RESTRICT];

STARTUP UPGRADE;

SHUTDOWN[IMMEDIATE];

SQL>show con_name

CON_NAME


CDB$ROOT

SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE


2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY

3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA MOUNTED

注意这里是mount,表示PDB 是关闭的。

–指定PDB 数据库:

SQL>alter session set container=pdbcndba;

Session altered.

SQL>startup

Pluggable Database opened.

SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE


3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE

SQL>
启动成功。 当我们切换到PDB之后,就看不到seed PDB的信息了。

2.2 使用ALTER PLUGGABLE DATABASE命令

如果在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];

如果是在CDB中,可以使用如下语法:
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或者ALL EXCEPT关键字来替代。

ALL:表示所有的PDBS。
ALL EXCEPT 表示需要排除的PDBS。

如:
ALTER PLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE;

ALTER PLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE;

ALTER PLUGGABLE DATABASE ALL OPEN;

ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;

ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;

ALTER PLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;
示例:
SQL>alter session set container=CDB$ROOT;

Session altered.

SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE


2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY

3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE

SQL>ALTER PLUGGABLE DATABASE ALL CLOSE ;

Pluggable database altered.

SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE


2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY

3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA MOUNTED

SQL>alter session set container=pdbcndba;

Session altered.

SQL>ALTER PLUGGABLE DATABASE OPEN;

Pluggable database altered.

SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE


3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA READ WRITE

3 设置Pluggable Database (PDB) 的自动startup

默认情况下,在CDB 启动的时候,all 的PDB 都是mount状态,也没有默认的机制,在CDB启动时自动启动PDB。

但这里可以通过触发器来实现PDB的自动open:

CREATE OR REPLACE TRIGGER open_pdbs

AFTER STARTUP ON DATABASE

BEGIN

EXECUTE IMMEDIATE ‘ALTER PLUGGABLE DATABASE ALL OPEN’;

END open_pdbs;

/
示例:
SQL>show con_name

CON_NAME


PDBCNDBA

SQL>alter session set container=CDB$ROOT;

Session altered.

SQL>CREATE OR REPLACE TRIGGER open_pdbs

2 AFTER STARTUP ON DATABASE

3 BEGIN

4 EXECUTE IMMEDIATE ‘ALTER PLUGGABLE DATABASE ALL OPEN’;

5 END open_pdbs;

6 /

Triggercreated.

Oracle--CDB和PDB数据库的启动与关闭说明相关推荐

  1. oracle orclpdb是什么,oracle cdb、pdb参考

    oracle cdb.pdb参考 发布时间:2020-07-11 14:00:40 来源:51CTO 阅读:609 作者:春秋小记 CDB.PDB概念介绍 CDB与PDB是Oracle 12C引入的新 ...

  2. Oracle数据库的启动与关闭

    Oracle中不同启动和关闭方式的区别: Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将周详介绍这些启动和关闭方式之间的区别连同他们各自不同的功能. 一.启动和关闭Oracle数据库 ...

  3. oracle学习笔记 参数文件及数据库的启动和关闭

    oracle学习笔记 参数文件及数据库的启动和关闭 我们这节课把oracle的参数文件以及oracle的启动关闭讲一下 一)参数文件作用 先看oracle的参数文件 它由来已久了 我们知道oracle ...

  4. RAC 数据库的启动与关闭

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! RAC数 ...

  5. oracle数据库结束进程后怎么重启,Oracle数据库的启动与关闭方法

    一.启动数据 $sqlplus "sys/pass as sysdba" sql>startup 二.启动监听器 数据库启动后,如果未启动监听进程,则客户端无法与数据库连接. ...

  6. oracle数据库从关闭到启动,Oracle数据库的启动和关闭详细过程

    一.数据库打开 startup数据库正常启动 1.startup nomount 启动 Oracle DB 实例:NOMOUNT ,创建sga,创建了alert日志,用于create db,creat ...

  7. Oracle 11gR2 RAC集群服务启动与关闭命令汇总

    网上好多帖子都是 启动和关闭相关服务的命令 # su – oracle $ crs_start–all --启动所有的crs服务 $ crs_stop–all --停止所有的crs服务 $ crsct ...

  8. db2数据库的启动和关闭

     分类: 在一个DB2 实例下,可以创建多个database(具体每个实例下可以创建多少个database,可以通过DB2 GET DBM CFG查看.一旦建立了数据库之后,就可以对其进行操作,然 ...

  9. DB2数据库的启动与关闭

    在一个DB2 实例下,可以创建多个database(具体每个实例下可以创建多少个database,可以通过DB2 GET DBM CFG查看.一旦建立了数据库之后,就可以对其进行操作,然而,在向数据库 ...

  10. linux下oracle数据库的启动和关闭

    2019独角兽企业重金招聘Python工程师标准>>> 第一步:登陆 root登陆之后切换到oracle用户上, 输入 su - oracle 第二步:连接 在oracle用户下, ...

最新文章

  1. linux内核使用scons构建,如何使用scons进行交叉构建
  2. java面向对象编程集合边框_Java学习系列(七)Java面向对象之集合框架详解(上)
  3. android 提示文字,EditText 不能显示提示文字Hint
  4. Struts2中jsp前台传值到action后台的三种方式以及valueStack的使用
  5. Windows中导出电脑文件名或者文件结构的方法
  6. 企业如何开展数据可视化建设
  7. 厉害了!这款百度炼丹神器绝了!
  8. iOS开发-停止WebView播放视频/音频
  9. 淘宝开源的代码质量检测工具,太强大了!!
  10. Linux命令之grep
  11. Java微信小程序商城源码,Java微信开发框架源码,前后端分离
  12. Percona XtraBackup User Manual
  13. Java版本中最好用的网易云音乐、qq音乐api请求工具,你还在忙于如何使用java调音乐api?来看下这里的实现
  14. zipentry java_ZipEntry getNextEntry()
  15. service mysql启动失败 提示unit not found 解决办法
  16. 2022年如何解锁nexus6p的bl锁
  17. 教你唱千千阙歌,粤语版的
  18. 深入了解Xcode 7——代码编辑
  19. hdu1201 18岁生日(java版本)
  20. scrapy爬取斗鱼图片并且重命名后保存

热门文章

  1. 【IT项目管理】第7章 保证项目质量
  2. 用python分析股票收益影响因素的方法_【Python】用Python分析股票的收益和风险
  3. wav转mp3,wav转换成mp3
  4. 支招功能最强人工智能围棋软件_AI智能棋盘全新上线,围棋的奥秘原来在这里?...
  5. ansys转子动力学分析
  6. 多源数据融合算法综述
  7. 软件接口与性能测试,接口测试与性能测试有什么区别?
  8. 工业污染治理投资完成情况分析(2000—2019年)
  9. 中国银行业发展前景预测与未来战略规划建议报告2022-2028年版
  10. 腾讯云短信服务申请+测试