在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。

?
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
[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 rightsreserved.
 
Connectedto:
 
OracleDatabase
12c Enterprise Edition Release
12.1.0.1.0

- 64bit Production
 
Withthe
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:

?
1
2
3
4
5
6
7
SQL>shutdown
immediate
 
Databaseclosed.
 
Databasedismounted.
 
ORACLEinstance
shut down.

我们关闭CDB之前PDB 是没有关闭的,所以这个操作也会把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
SQL>startup
 
ORACLEinstance
started.
 
 
 
TotalSystem
Global Area
1269366784

bytes
 
FixedSize
2287912

bytes
 
VariableSize
788530904

bytes
 
DatabaseBuffers
469762048

bytes
 
RedoBuffers
8785920

bytes
 
Databasemounted.
 
Databaseopened.
 
 
 
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,

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

?
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
STARTUPFORCE;
 
STARTUPOPEN
READ WRITE [RESTRICT];
 
STARTUPOPEN
READ ONLY [RESTRICT];
 
STARTUPUPGRADE;
 
SHUTDOWN[IMMEDIATE];
 
 
 
SQL>show
con_name
 
 
 
CON_NAME
 
------------------------------
 
CDB$ROOT
 
 
 
SQL>selectcon_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;
 
Sessionaltered.
 
 
 
SQL>startup
 
PluggableDatabase
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中可以使用如下语法:

?
1
2
3
4
5
6
7
ALTERPLUGGABLE
DATABASE OPEN READ WRITE [RESTRICTED] [FORCE];
 
ALTERPLUGGABLE
DATABASE OPEN READ ONLY [RESTRICTED] [FORCE];
 
ALTERPLUGGABLE
DATABASE OPEN UPGRADE [RESTRICTED];
 
ALTERPLUGGABLE
DATABASE CLOSE [IMMEDIATE];

如果是在CDB中,可以使用如下语法:

?
1
2
3
4
5
6
7
ALTERPLUGGABLE
DATABASE <pdd-name-clause> OPEN READ WRITE [RESTRICTED][FORCE];
 
ALTERPLUGGABLE
DATABASE <pdd-name-clause> OPEN READ ONLY [RESTRICTED] [FORCE];
 
ALTERPLUGGABLE
DATABASE <pdd-name-clause> OPEN UPGRADE [RESTRICTED];
 
ALTERPLUGGABLE
DATABASE <pdd-name-clause> CLOSE [IMMEDIATE];

<pdd-name-clause>表示的是多个PDB,如果有多个,用逗号分开。 也可以使用ALL或者ALL EXCEPT关键字来替代。

ALL:表示所有的PDBS。

ALLEXCEPT 表示需要排除的PDBS。

如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ALTERPLUGGABLE
DATABASE pdb1, pdb2 OPEN READ ONLY FORCE;
 
ALTERPLUGGABLE
DATABASE pdb1, pdb2 CLOSE IMMEDIATE;
 
 
 
ALTERPLUGGABLE
DATABASE ALL OPEN;
 
ALTERPLUGGABLE
DATABASE ALL CLOSE IMMEDIATE;
 
 
 
ALTERPLUGGABLE
DATABASE ALL EXCEPT pdb1 OPEN;
 
ALTERPLUGGABLE
DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;

示例:

?
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
SQL>alter
session set container=CDB$ROOT;
 
Sessionaltered.
 
 
 
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 ;
 
Pluggabledatabase
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;
 
 
 
Sessionaltered.
 
 
 
SQL>ALTER
PLUGGABLE DATABASE OPEN;
 
 
 
Pluggabledatabase
altered.
 
 
 
SQL>
select con_id, dbid, guid, name , open_modefrom 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:

?
1
2
3
4
5
6
7
8
9
10
11
CREATEOR
REPLACE TRIGGER open_pdbs
 
AFTER
STARTUP ON DATABASE
 
BEGIN
 
EXECUTE
IMMEDIATE
'ALTERPLUGGABLE
DATABASE ALL OPEN'
;
 
END
open_pdbs;
 
/

示例:

?
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
SQL>show
con_name
 
 
 
CON_NAME
 
------------------------------
 
PDBCNDBA
 
SQL>alter
session set container=CDB$ROOT;
 
 
 
Sessionaltered.
 
 
 
SQL>CREATE
OR REPLACE TRIGGER open_pdbs
 
2

AFTER STARTUP ON DATABASE
 
3

BEGIN
 
4

EXECUTE IMMEDIATE
'ALTER
PLUGGABLE DATABASE ALL OPEN'
;
 
5

ENDopen_pdbs;
 
6

/
 
 
 
Triggercreated.

Oracle12cCDB和PDB数据库的启动与关闭说明的更多相关文章

  1. Oracle12c CDB和PDB数据库的启动与关闭说明

    Oracle 12c中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB). CDB全称为Container Database,中文翻译为数据库容器,PDB ...

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

    RAC数据库与单实例的差异主要表现在多个实例通过集群件来统一管理共享的资源.因此原有的单实例的管理方式,如数据库.监听器等的关闭启动等可以使用原有的方式进行,也可以通过集群管理工具,命令行来集中管理, ...

  3. Oracle常用命令13(数据库的启动、关闭)

    数据库的启动.关闭 数据库的启动:安装启动.非安装启动.共享启动.独占启动.约束启动.强制启动 --不登陆的方式进入 Sqlplus /nolog 安装启动: Startup {pfile=<f ...

  4. 深刻理解Oracle数据库的启动和关闭 .

    Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能. 一.启动和关闭Oracle数据库 对于大多数Oracle DBA来说,启动和 ...

  5. Oracle数据库的启动和关闭

    深刻理解Oracle数据库的启动和关闭 Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能. 一.启动和关闭Oracle数据库 对 ...

  6. oracle_深刻理解数据库的启动和关闭

    Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能. 一.启动和关闭Oracle数据库 对于大多数Oracle DBA来说,启动和 ...

  7. Oracle日常运维操作总结-数据库的启动和关闭

    下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指出). 一.数据库的启动和关闭 1.1 ...

  8. oracle数据库实例启动与关闭

    区分数据库与实例:实例是指各种内存结构和服务进程,数据库是指基于磁盘存储的数据文件.控制文件.参数文件.日志文件和归档日志文件组成的物里文件集合. 数据库实例启动: startup [nomount ...

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

    一.概述: Oracle数据库的启动分为启动数据库实例.装载数据库和打开数据库3个过程,对应数据库的3种模式. 启动数据库实例:根据数据库初始化参数文件中参数设置,在内存中为数据库分配SGA.PGA等 ...

随机推荐

  1. json xml 传值方法

    1.xml传值 xml传值的方式更加的安全. <id>1</id> <name>tom</name> 报文 2.JSON传值 JOSN的格式:3种 1. ...

  2. 27.IP承载网容量仿真

    接入,汇聚,核心 参考资料: 学堂在线,移动通信技术(2019秋)https://next.xuetangx.com/learn/SZIIT61031001367/SZIIT61031001367/1 ...

  3. SpringCloud学习(四)断路器(Hystrix)(Finchley版本)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  4. Kafka如何保证百万级写入速度以及保证不丢失不重复消费

    一.如何保证百万级写入速度: 目录 1.页缓存技术 + 磁盘顺序写 2.零拷贝技术 3.最后的总结 “这篇文章来聊一下Kafka的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点. Kafk ...

  5. 学习笔记:html学习之一:html基本标记

    1. 概论 一个完整的 HTML 文档必须包含 3 个部分: 一个由 元素定义的文档版本信息. 一个由 定义各项声明的文档头部, 作为各种声明信息的包含元素出现在文档的顶端,并且要先于 出现. 一个由 ...

  6. jdk1.8 -- 方法推导 静态方法、实例方法、构造方法推导

    一.静态方法的推导 public class MainTest { public static void main(String[] args) { // 正常情况下我们需要通过写一个consumer ...

  7. [转帖]mysql8.0忘记密码如何操作?

    mysql8.0忘记密码如何操作? https://www.cnblogs.com/gspsuccess/p/11245314.html mark 一下 上次竟然不知道怎么弄. 很不幸,刚安装了MYS ...

  8. SQLite进阶-11.Join

    目录 JOIN 交叉连接 - CROSS JOIN 内连接 - INNER JOIN 外连接 - OUTER JOIN JOIN JOIN 子句用于结合两个或者多个数据表的数据,基于这些表之间的共同字 ...

  9. dubbo分布式服务框架-study1

    本文参考“如何给老婆解释RPC”一文进行的... 1.首先了解下dubbo: dubbo是一款高性能.轻量级的开源java RPC服务框架(RPC即远程过程调用,具体解释见:https://www.j ...

  10. 【LOJ】#3109. 「TJOI2019」甲苯先生的线段树

    LOJ#3109. 「TJOI2019」甲苯先生的线段树 发现如果枚举路径两边的长度的话,如果根节点的值是$x$,左边走了$l$,右边走了$r$ 肯定答案会是$(2^{l + 1} + 2^{r + ...