Oracle12c CDB和PDB数据库的启动与关闭说明
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(c) 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 <pdd-name-clause> OPEN READ WRITE [RESTRICTED][FORCE]; ALTER PLUGGABLE DATABASE <pdd-name-clause> OPEN READ ONLY [RESTRICTED] [FORCE]; ALTER PLUGGABLE DATABASE <pdd-name-clause> OPEN UPGRADE [RESTRICTED]; ALTER PLUGGABLE DATABASE <pdd-name-clause> CLOSE [IMMEDIATE];
<pdd-name-clause>表示的是多个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.
Oracle12c CDB和PDB数据库的启动与关闭说明的更多相关文章
- Oracle12cCDB和PDB数据库的启动与关闭说明
在Oracle 12c中,分CDB 和PDB,他们的启动和关闭操作整理如下. 1 Container Database (CDB) 对于CDB,启动和关闭与之前传统的方式一样,具体语法如下: STAR ...
- RAC 数据库的启动与关闭
RAC数据库与单实例的差异主要表现在多个实例通过集群件来统一管理共享的资源.因此原有的单实例的管理方式,如数据库.监听器等的关闭启动等可以使用原有的方式进行,也可以通过集群管理工具,命令行来集中管理, ...
- Oracle常用命令13(数据库的启动、关闭)
数据库的启动.关闭 数据库的启动:安装启动.非安装启动.共享启动.独占启动.约束启动.强制启动 --不登陆的方式进入 Sqlplus /nolog 安装启动: Startup {pfile=<f ...
- 深刻理解Oracle数据库的启动和关闭 .
Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能. 一.启动和关闭Oracle数据库 对于大多数Oracle DBA来说,启动和 ...
- Oracle数据库的启动和关闭
深刻理解Oracle数据库的启动和关闭 Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能. 一.启动和关闭Oracle数据库 对 ...
- oracle_深刻理解数据库的启动和关闭
Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能. 一.启动和关闭Oracle数据库 对于大多数Oracle DBA来说,启动和 ...
- Oracle日常运维操作总结-数据库的启动和关闭
下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指出). 一.数据库的启动和关闭 1.1 ...
- oracle数据库实例启动与关闭
区分数据库与实例:实例是指各种内存结构和服务进程,数据库是指基于磁盘存储的数据文件.控制文件.参数文件.日志文件和归档日志文件组成的物里文件集合. 数据库实例启动: startup [nomount ...
- Oracle数据库的启动与关闭
一.概述: Oracle数据库的启动分为启动数据库实例.装载数据库和打开数据库3个过程,对应数据库的3种模式. 启动数据库实例:根据数据库初始化参数文件中参数设置,在内存中为数据库分配SGA.PGA等 ...
随机推荐
- DateUtil工具类
package com.autoserve.mh.common.util; import java.text.SimpleDateFormat; import java.util.Calendar ...
- 解决FTP的URL访问不能有中文名称的问题,报java.lang.IllegalArgumentException
最近一个项目要用到FTP做上传下载,我访问ftp的url中有中文名称,结果每次都报如下错: 1 Exception in thread "main" java.lang.Illeg ...
- Selenium Webdriver java 积累一
Selenium Webdriver 学习: http://jarvi.iteye.com/category/203994 https://github.com/easonhan007/webdriv ...
- Mac OS X:禁止崩溃报告-CrashReport
Mac OS X:禁止崩溃报告 崩溃报告就是CrashReport 至于官方的有关CrashReport的文档在Technical Note TN212 . 一般的默认情况下,当一个应用程序因为各种原 ...
- 企业app分发
http://beyondvincent.com/2014/07/30/2014-07-30-provision-ios-ipa-app-for-in-house-enterprise-distrib ...
- python pip源
pipy国内镜像目前有: http://pypi.douban.com/ 豆瓣 http://pypi.hustunique.com/ 华中理工大学 http://pypi.sdutlinux.o ...
- TCP协议学习笔记(一)首部以及TCP的三次握手连接四次挥手断开
TCP协议是一种面向连接的.可靠的流协议. 流即不间断的数据结构.这样能够保证接收到数据顺序与发送相同.但是犹如数据间没有间隔,因此在TCP通信中,发送端应用可以在自己所要发送的消息中设置一个标示长度 ...
- Creating Signing Identities 生成签名标识
Before you can code sign your app, you create your development certificate and later, a distribution ...
- VS2012完全卸载与VS2013安装
项目本来使用的是vs2012 Ultimate,也一直跟随ms的节奏安装了从1到4的update,但一些无法忍受的问题却一直没有解决: 1.偶尔出现要等待编辑器响应的情况: 2.偶尔输入了冒号也不会出 ...
- RestTemplate配置
什么是RestTemplate? RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效 ...