Oracle12cCDB和PDB数据库的启动与关闭说明
在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 sysdbaSQL*Plus:Release
12.1.0.1.0
Production on Thu Apr 24
17:50:34
2014Copyright(c)
1982,
2013,
Oracle. All rightsreserved.Connectedto:OracleDatabase
12c Enterprise Edition Release 12.1.0.1.0
- 64bit ProductionWiththe
Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsSQL>show
con_nameCON_NAME------------------------------CDB$ROOTSQL>SQL>select
con_id, dbid, guid, name , open_mode from v$pdbs;CON_ID
DBID GUID NAME OPEN_MODE----------
------------------------------------------ ------------------------------ ----------2
4088301206
F7C1E3C96BBF0585E0430A01A8C05459PDB$SEED READ ONLY3
426143573
F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE |
我们现在连接的是CDB,即root container。
我们关闭CDB:
|
1
2
3
4
5
6
7
|
SQL>shutdown
immediateDatabaseclosed.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>startupORACLEinstance
started.TotalSystem
Global Area 1269366784
bytesFixedSize
2287912
bytesVariableSize
788530904
bytesDatabaseBuffers
469762048
bytesRedoBuffers
8785920
bytesDatabasemounted.Databaseopened.SQL>
select con_id, dbid, guid, name , open_modefrom v$pdbs;CON_ID
DBID GUID NAME OPEN_MODE----------
------------------------------------------ ------------------------------ ----------2
4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY3
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_nameCON_NAME------------------------------CDB$ROOTSQL>selectcon_id,
dbid, guid, name , open_mode from v$pdbs;CON_ID
DBID GUID NAME OPEN_MODE--------------------
-------------------------------- --------------- ----------2
4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY3
426143573
F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA MOUNTED注意这里是mount,表示PDB
是关闭的。--指定PDB
数据库:SQL>alter
session set container=pdbcndba;Sessionaltered.SQL>startupPluggableDatabase
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 WRITESQL> |
启动成功。 当我们切换到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 ONLY3
426143573
F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITESQL>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 ONLY3
426143573
F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA MOUNTEDSQL>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_pdbsAFTER
STARTUP ON DATABASEBEGINEXECUTE
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_nameCON_NAME------------------------------PDBCNDBASQL>alter
session set container=CDB$ROOT;Sessionaltered.SQL>CREATE
OR REPLACE TRIGGER open_pdbs2
AFTER STARTUP ON DATABASE3
BEGIN4
EXECUTE IMMEDIATE 'ALTER
PLUGGABLE DATABASE ALL OPEN';5
ENDopen_pdbs;6
/Triggercreated. |
浙公网安备 33010602011771号