Oracle 12c中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。

CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。

在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。

而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。

下面是官方文档关于CDB与PDB的关系图。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
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
  
AFTER STARTUP ON DATABASE
  
BEGIN
  
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
  
END open_pdbs;
  
6 /
  
Triggercreated.

All for u

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. Oracle学习笔记之三,Oracle 11g数据库的启动与关闭

    SQL*PLus命令 SQLPLUS username[/password][@connect_identifier][AS SYSOPER|SYSDAB] 1. 启动数据库实例 STARTUP [n ...

  10. MySQL 数据库的启动与关闭与重启办法

    MySQL数据库服务器通常指的的是mysqld,而命令行mysql则是mysql客户端程序,这两个概念通常容易混淆.通常启动mysql服务器即是启动mysqld进程,mysqld启动后,可以通过mys ...

最新文章

  1. MVC layout 命名空间引用问题
  2. 【Python】pip工具使用知识,模型保存pickle,PDF与docx相互转换处理
  3. python的flask实现接口_Flask快速实现简单python接口
  4. 原始套接字与sniffer
  5. 同步异步 阻塞非阻塞
  6. storm 出现一次运行结果,后续不在出现的原因
  7. php自动按天清空库存,swoole+PHP实现自动取消订单,还原库存等操作
  8. Django最新版(1.10.5)在SAE上面部署流程
  9. 客户关系管理式的电子商务
  10. 【HDU1277】全文检索(ac自动机/字典树)
  11. ueditor+秀米
  12. 在.net Core中使用StackExchange.Redis 2.0
  13. 去哪下载python项目_Python 项目实践二(下载数据)第三篇
  14. arcgis10之给图层添加注记
  15. FPGA 控制 nand flash读写
  16. Linux top命令查看多核CPU每个核心的使用率
  17. Node中间件和路由器
  18. Linux文件类型与扩展名
  19. spa:单页web应用(介绍,实现思路及技术点,路由,router-link相关属性)
  20. 储留香:从丞相说到文件系统

热门文章

  1. python股票收益率计算_股票分析之——收益率(附完整代码和讲解)
  2. Java设计模式—观察者模式
  3. html微博图片上传,如何使上传新浪微博照片更清晰
  4. 去掉 AD13 PCB网络连线中的双斜杠
  5. 神经网络模拟的优缺点是,神经网络模型的优缺点
  6. 基于神经网络和相关性分析的数学建模思路分享
  7. 深度学习框架_Caffe_Caffe框架入门简介
  8. matlab悬臂梁有限元分析
  9. 无线网络通信技术完全介绍
  10. 深度可分离卷积解析 - MobileNetV1