|
|
楼主 |
发表于 2018-11-10 22:12:39
|
显示全部楼层
1 Container Database (CDB)( L% a8 ^, W. I' @4 n
) B* W- \$ o, V5 q9 `' t0 N, ^
+ Y) s4 ]9 c) D; ?8 V! A: @$ V( v
# t- m) e# ]' ~/ w E2 ?/ p! Z对于CDB,启动和关闭与之前传统的方式一样,具体语法如下:
8 n8 k* o; Y- m( b* ^+ F) d3 ]4 x$ C9 U
STARTUP[NOMOUNT | MOUNT | RESTRICT | UPGRADE | FORCE | READ ONLY]
0 J: s8 n; [" L% w3 Q" C- ]% {( {; F* u7 y+ J* ]
SHUTDOWN[IMMEDIATE | ABORT]
. m! Q8 j0 @' h: z' l2 |+ R3 {2 L8 [+ O q) b% d
/ \9 S: X* e1 z5 e4 m
% I' t6 Y& [9 r0 m, m7 o - S" y$ f, h5 M4 J! i* k I) v
6 R% p3 _. _: `; j4 r: K
要注意,在12c数据库创建完成后,默认情况下使用sqlplus / as sysdba 登录连接的是CDB。
2 O9 i( P* ~: d- p: z/ w5 G7 u8 Z7 V. e7 ?
; i( D% q* Z0 Q3 Y# @! d
' L! P. r% [" b2 W% V0 o7 w$ c; E
[oracle@Ora12c~]$ sqlplus / as sysdba' {/ M" G9 C5 j a! N% x4 @7 ?* Z
& _' H" t4 f& T* Q# B
6 G5 O d8 Z- Q% Q& ~! u! o
& X) q1 [* }/ U0 h2 V3 u4 QSQL*Plus:Release 12.1.0.1.0 Production on Thu Apr 24 17:50:34 20147 P0 E/ N; ?' L) r! J
3 k+ Z/ p( L6 f1 } 5 ?9 G& v; q0 U& Z5 r
8 L' [# a+ v" p# _8 bCopyright(c) 1982, 2013, Oracle. All rightsreserved.. j, v2 s8 p" {5 d3 j6 W
( y& j1 [# o+ l, U, n 4 ~0 F8 a9 a0 Q6 n) D1 A6 W8 b
: ?) S, I. {& i% Y6 q9 r, @
( ~9 X9 R: J; n% u7 |" h; ^/ l# L0 Z P: N+ h6 | B
Connectedto:& t$ M: R" o2 f' ?9 v; V
( r3 X R/ B* u
OracleDatabase 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production1 s3 x- t, N: e8 i0 ^% e3 P( o
# n! d) m, d, w
Withthe Partitioning, OLAP, Advanced Analytics and Real Application Testing options
; v3 {, r: |! }6 f) Y# l( \- E. @; P4 x- I& a5 [1 ]8 E+ ]
& u" }5 q$ [4 q& R3 B
, k$ z/ N+ s. V+ p0 t, }/ h- kSQL>show con_name2 D$ X& g4 N5 i8 ^/ ^) ]/ t
' [$ v, T) C2 e H' H, c _5 q7 i, ` 1 w9 [' k9 b: |' `5 {9 d
4 F l9 ^. b$ f3 O% J* eCON_NAME$ \) m1 g# P9 ]# X* D
5 l3 l5 O9 ?8 Y, N: k
------------------------------, |, w' T5 V6 f: z
7 e" z. t5 ]! q* NCDB$ROOT
8 h. a5 T0 ?* z0 R5 W# b1 A8 ]$ _8 [0 i) Y
SQL>
; O0 V( `# [ ?7 z4 X7 z5 k3 q5 }0 s& z. m' U! T' x
9 Y3 ]: K5 @2 r d. [
8 W; K) W# Z$ |) DSQL>select con_id, dbid, guid, name , open_mode from v$pdbs;( s3 H3 l6 E' K7 M! [' n2 F/ h
* t+ V/ f7 K% F! p' p! N
) q/ v2 F/ N+ A: H! _
q8 @4 t) g4 S/ y
CON_ID DBID GUID NAME OPEN_MODE% R5 @1 D: o( A$ l
2 {9 r% s" `6 ~' v% c6 u/ y& I
---------- ------------------------------------------ ------------------------------ ----------3 ^4 A' [5 b/ \+ L
- N! q) H) Q8 i0 Q9 S c/ t 2 4088301206 F7C1E3C96BBF0585E0430A01A8C05459PDB$SEED READ ONLY+ N+ w. G9 D, t& c' ~. D
& d* P* s; y$ d# T+ e6 P
3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE% T: R1 |( ^5 f9 ^# D: d
% g' A6 r9 C G; T4 a5 c8 m
! J& }% M1 L/ b3 [7 E
" d( r: g0 I9 H; C3 @5 \我们现在连接的是CDB,即root container。2 n) L+ q5 E! _+ o5 V Z
5 f2 r) E) h% Y& l3 K
! x g* \3 ^- a& L1 ^0 K
/ _. M6 F* d: y3 q我们关闭CDB:
+ P9 x8 B1 ]3 |* n" o
$ Q* T, p6 ^& c. G! T$ gSQL>shutdown immediate, _+ e; @; ?: g
( D; b; Y$ M7 ?. U4 ]) P' i
Databaseclosed., Z; q- v& z @' D( J
5 H& v; J$ x/ [" G
Databasedismounted.
+ @( Q! L* s8 }! M
# ]9 W1 R8 ] \; PORACLEinstance shut down.
' S" d" ?2 H% |' B
& `- e: k& Y* n8 ]5 P, i" k* {
, m! _8 y: m0 N2 L% f2 v! q0 u V# ~3 w5 w" {8 A
我们关闭CDB之前PDB 是没有关闭的,所以这个操作也会把PDB 关闭掉。* L Z" s* }& I5 @+ @7 O
0 y3 S7 L$ F; H# ?# U- w2 t- x3 r
/ _9 g- U2 z5 _( U* ?$ h3 T( |# a, B q4 F# z% j/ O, Z
SQL>startup
2 x+ n, a/ _" f& p( h& y1 s( _: n" f4 n
ORACLEinstance started.& y" ?- C, x/ j. `3 h
7 a( d C9 I) t* b' B5 H7 L ; G0 _: N6 x% B5 g! u q' W$ }0 q
- C% [6 P9 N0 c/ o8 I+ a
TotalSystem Global Area 1269366784 bytes% M% Y/ p' @4 y# j5 s( h
$ X& I! I. T8 s2 I, F
FixedSize 2287912 bytes# z& ^# D/ X( M, Q
e+ l* o1 o6 Z% \7 iVariableSize 788530904 bytes
S7 Y2 \: a/ l) g# J* R% [2 a4 y' w2 `% w- F, G0 x2 S0 _
DatabaseBuffers 469762048 bytes
# P) j/ J1 Y7 D
! |8 [$ |3 d) L! t+ g/ VRedoBuffers 8785920 bytes0 }0 o$ e9 @0 D& Z; l" a; I1 p
; m, O7 w( C4 W- y
Databasemounted.9 X: ?$ o" O( \6 X8 ^, h/ k
6 j; e* h5 i2 }6 }! }
Databaseopened.
% {) E, b: ]2 [4 E# n+ p9 ~5 A4 v& W$ _- C, Y8 J6 Z) a
B. J: }/ B' @2 o3 B2 j1 g
9 L! W# q( @" OSQL> select con_id, dbid, guid, name , open_modefrom v$pdbs;7 g5 E2 Q# j8 B
9 u% |5 d( J$ Y) ~: G4 Y8 P , A8 r1 G" ]7 z+ \& D8 w1 P
: w+ L5 @8 I4 U; E8 w
CON_ID DBID GUID NAME OPEN_MODE7 E. o* K4 B2 F0 S
+ n; u/ `% p& j5 z8 |! p& D
---------- ------------------------------------------ ------------------------------ ----------3 l$ @2 N _3 {/ i; ]
0 d2 g+ |& }4 _- e7 j; X; @ 2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY
: `6 ]- h/ D, y: A8 [/ l( |7 e5 |1 c! I7 w* q/ g
3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA MOUNTED
( ~5 }1 d- y3 C9 H, F4 u) I! u0 h
, O* x5 v8 H& ?# Y2 m- v" |4 h/ F& G9 y
注意这里的PDB,在CDB 启动之,PDB 是自动启动到mount状态,而不是OPEN。 所以我们还需要手工去open它,当然,也可以通过在CDB中配置触发器来自动open。
4 J; S8 V- a* I3 e& `$ x% A$ q$ a8 J! `6 `
8 Y- T0 Z6 v2 O! n; [. e( |- p
& a& H6 u G$ b9 C" @/ K0 H 4 U R# a5 {$ s% q) a! I- S
- }0 o- y4 e A: g9 ` X
2 Pluggable Database (PDB)0 g. l4 r4 ^# r$ U" i) h
]1 |* A0 K+ x 7 V' R8 I6 U, m
- Q/ U }0 l! \) w7 {2 s3 X
PDB 的操作可以通过SQL*PLUS 来操作,也可以通过ALTER PLUGGABLE DATABASE 命令操作。. K5 k: u0 T3 }5 N8 b; H
9 m$ L2 `& D8 S8 y0 [2 a 2 B: c9 g+ Y: ^1 G6 \& M
/ S" W9 O; m! f" J# A
2.1 使用SQL*Plus 命令
3 d$ P3 V: e. y
* T# h6 y9 y4 p. ]' ?2 {* U
* t2 j4 W1 P! R* K/ ?
( a0 y% Z; e0 m; D9 @ 8 ^0 M" F/ V4 C
( i1 |" X" @9 n3 J
因为默认连接的是CDB,所以必须先指定PDB才可以通过sqlplus来启动和关闭PDB,
' G H Y; N; W% t s8 B0 h8 A+ j W6 U; a6 q$ ^( F
2 i% p; ?* N8 |8 K
3 O6 I i! B r& a/ \具体语法和普通实例一样:
( j O6 b h2 n3 y4 R& i
4 H5 i {7 |3 I* E( U ) [3 e! l* S+ h' s5 C& ~# s
9 X. i' n9 A& v; b- [, k
STARTUPFORCE;
8 O8 Q4 T- q8 N& b3 N6 A) p/ ^: e V) x1 x
STARTUPOPEN READ WRITE [RESTRICT];- x+ m7 x, A0 K4 Y1 y8 H
' A* i& g, W$ G, O. o8 w0 P. }
STARTUPOPEN READ ONLY [RESTRICT];+ i) r8 V, b# u$ x
/ m- r" Q& W' n9 N6 Y4 Z$ SSTARTUPUPGRADE;
+ n+ t; r( t$ E# U
1 l A3 I! y0 T: t( eSHUTDOWN[IMMEDIATE];
- z/ g$ B8 A( \) d3 _) @5 V. {/ s! ]1 d0 X4 S
7 A' D/ w* M. `; `* }: N8 v, C! x4 c5 c: j6 v, J G4 W7 w
SQL>show con_name3 M$ a! \# f4 V) e9 O
0 h5 D' T' Z5 D6 |% g
" |# ?2 I$ v. B7 D! n/ B4 f+ L8 V0 u
- q J B; p6 }CON_NAME1 I9 [, k1 t" T( R* k
) u5 L& m( W8 f2 I
------------------------------
/ z8 D. N# }" z9 ~7 V; W
) R, B3 L. E. aCDB$ROOT
0 d6 O) W5 p t1 i# k2 N4 d- i; t3 v% Q6 r# [1 d( b
" ~( k$ y! A: q5 v n. t& ]- k9 M9 M+ K v1 S1 b, F/ j1 m3 ~4 z5 W0 m& e! s
SQL>selectcon_id, dbid, guid, name , open_mode from v$pdbs;# J+ N8 V- ?- j( D4 b! b7 J+ i w
* y3 w+ Q5 U7 ~, h& U& E l \% h9 S5 ^$ n
$ a l. v- V1 \5 t0 T
CON_ID DBID GUID NAME OPEN_MODE
# e' N8 L: u( Y; Q9 Q1 P! }, z3 D3 G' H; q& ~' q, I) M- m
-------------------- -------------------------------- --------------- ----------9 h4 g2 L' V7 a) I# }* \# i
2 Y+ l8 D1 u) {
2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY' [$ G) x0 e3 K N n
% D( f' k7 `! K# |3 U' ?
3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA MOUNTED
2 |$ ?9 m: }7 G* t" ]; k! i
# }) t7 G, R" d' K8 n : h9 Q- C! h; z6 }( x
- H/ ?' G/ x& _注意这里是mount,表示PDB 是关闭的。
5 {3 `( W* s3 m5 c* g+ W9 s3 d1 {2 Y! e- f! d! @5 Z; C
+ I1 o; b2 v5 O# }6 |+ H7 e& ]& n
--指定PDB 数据库:
/ Z; z5 m0 [( A5 p* |
$ ^4 k/ H3 w4 }SQL>alter session set container=pdbcndba;
$ ]* s3 U: ?) F; x+ g
3 M8 d6 L8 _; R1 a% _Sessionaltered.
* |. J. Y1 K2 t4 |9 Q
" `- d# r6 U$ L: g# o
. G; v2 c/ n9 H2 V6 `* u1 L5 A0 ^. b. F* J+ A
SQL>startup
+ ~/ |" X% G' K6 J4 D6 ~
7 r" c$ k) L& O8 Z: KPluggableDatabase opened.
3 N6 q: E& r- A: c2 U. Q
; Z6 C8 ?% ~3 ?9 v4 vSQL>select con_id, dbid, guid, name , open_mode from v$pdbs;$ `4 I* ~* u) g# n% ]1 [4 |3 K
' \6 O8 U R, O( @ 4 a/ d8 @, C! E8 y$ S% R
2 Z) Y/ J) z9 _; e" Z5 e3 f. ]. g
CON_ID DBID GUID NAME OPEN_MODE
3 ~" y" U, r; N9 f% ?2 S* j& N
& @+ Z+ J7 l5 A-------------------- -------------------------------- --------------- ----------8 @. u2 I( ~0 s" V' N" w$ o
% J& O9 z9 u% m' h2 e7 l4 ~$ E 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE
6 m4 B" C6 ]- P/ E, ~ a
0 A! S- g' C4 A: o" W% N( eSQL>
9 h; ~3 m- b7 e
7 }( q: `1 a' m: w6 ^. f * f& Y, W5 _' O0 S) N8 w
9 _( p; D3 }* @5 g启动成功。 当我们切换到PDB之后,就看不到seed PDB的信息了。
/ B* N$ w C2 L, `' J0 m
0 o0 b6 Z3 Y' R! j 0 N" i3 z- O* S
" Q5 \) ~+ x, p5 d4 r; n* L2 Z & Y6 P$ r/ |' i! A5 g4 }
! u7 e$ L- e6 z7 [2.2 使用ALTER PLUGGABLE DATABASE命令3 Y! M. E! v' [3 `
1 @$ [4 _$ V/ l% u% `1 N + Q. M! P$ X, \) J0 Y
" U' a5 b/ h) F; V' v如果在PDB中可以使用如下语法:
1 u, s; g. R8 \3 o
' c( Y9 W5 {1 c5 F% A / T0 C- y: _# E) H4 m
" p: B5 N& H( B3 R$ Z4 S; E& W
ALTERPLUGGABLE DATABASE OPEN READ WRITE [RESTRICTED] [FORCE];
1 ?) q- t+ M1 N; j) x) l) ?) F' v8 R1 C
ALTERPLUGGABLE DATABASE OPEN READ ONLY [RESTRICTED] [FORCE];/ s5 J) W" f+ p4 O6 }: N
# w! }# q- |, K
ALTERPLUGGABLE DATABASE OPEN UPGRADE [RESTRICTED];
1 r# f0 [) A+ G! w5 Q9 L. x
$ A. P3 N3 F- ]- u4 g/ rALTERPLUGGABLE DATABASE CLOSE [IMMEDIATE];
' \" w- w, u+ J- \5 e# L% Z4 C0 `( [; d& T% @
: X T& d `1 ^8 A0 s1 M) f
. `5 @' X! R8 h7 i# V$ c6 M% @4 y6 g如果是在CDB中,可以使用如下语法:6 b6 G& X0 a7 p; z u. j
~5 a# y- D) R% [5 W: PALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN READ WRITE [RESTRICTED][FORCE];
; G6 p: |: J9 W' k# {* f! o7 F# X- r1 q- ?/ \+ c3 C; F
ALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN READ ONLY [RESTRICTED] [FORCE];( u; ]: P$ X3 [7 Q
$ ~8 r; ?1 Y% j" vALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN UPGRADE [RESTRICTED];/ J, q- _' I+ M5 N* Q# {; t
; }/ J j6 I7 R
ALTERPLUGGABLE DATABASE <pdd-name-clause> CLOSE [IMMEDIATE];0 d, H6 f: }0 e( a- p3 H+ K
. G3 b* @6 M4 `( J7 Z; b Y
! s1 i) H, P }2 r
! j+ V7 m7 @1 R' j4 `<pdd-name-clause>表示的是多个PDB,如果有多个,用逗号分开。 也可以使用ALL或者ALL EXCEPT关键字来替代。" x( Y$ |- G! q, e! _
o0 }* {4 F5 b* z
; y7 o Y. E! g! P p
0 z: C# C( o! l XALL:表示所有的PDBS。
j$ @/ x& l5 H" N4 y
; m& ^: }, N( C! h/ _ALLEXCEPT 表示需要排除的PDBS。
6 U# @9 b* a! o7 o
2 T6 F0 C" f" A! z 5 ~) W, H0 ~& F" v& S
2 N2 e$ x! R1 G+ J9 J, B9 i/ \; |如:
* E, N& I, E5 g9 |8 m4 l; |* o, V \; X) [2 X6 U
ALTERPLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE;
; ^& d+ q, n: l* S, x9 {" i6 p! s7 i! `' J& z1 |
ALTERPLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE;# p: Q9 V N2 F; e1 T& \
6 ^$ k5 z; J! Z5 }$ u% t+ g4 L7 k9 ~
4 w4 q5 I; D$ o7 t. F% p5 L# @5 L. p+ Q
ALTERPLUGGABLE DATABASE ALL OPEN;
# q, s/ w7 w% u9 N" J; j4 \8 S% _6 O& e0 y7 M
ALTERPLUGGABLE DATABASE ALL CLOSE IMMEDIATE;) t% u6 B) n4 K, F' D; h/ e
1 `( A* f E9 |6 m+ K5 g& D. O/ s ( ]# h: H3 ^, x* j) f5 X' _' A
0 q6 ~) ?7 T3 e8 d6 TALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;% v. d7 |; d ~! U
3 |0 A/ t: }' k! ]* S5 L
ALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;
/ M6 O( F; ^6 l0 J6 f0 C( D" f% S, @7 z( s1 u
& M6 g1 q# T7 j2 ~5 T, W4 L
0 H% t: B: c9 x& \. j! a示例:
b2 {8 i2 q( v3 y
0 i; G5 S% ?: d& C q( fSQL>alter session set container=CDB$ROOT;
9 ]* z( M S9 K$ V4 [9 v
) x. d: T9 k9 ^4 ~: sSessionaltered./ c- M6 X) y/ ?0 c
9 k8 l: f2 E# K! B- R9 [; X# h
9 \! O" ?7 {. Q
( J5 y- ?8 k) F# P8 ~ jSQL>select con_id, dbid, guid, name , open_mode from v$pdbs;
5 S. g) a" o7 T, J" f9 Y: }$ W6 ]) C, J' ]; [
: m" o8 j5 o2 h7 R
5 \! @$ U5 u ~ CON_ID DBID GUID NAME OPEN_MODE5 d7 Y6 }2 j' s* P+ a( \
0 `' W2 j% A7 Y% ]
-------------------- -------------------------------- --------------- ----------
; G6 N! ^5 I$ _' G& c- K8 Z8 K, ` E
2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY7 j$ u, z, U4 _
( i9 K% W% h, r' E& |
3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE# `& c* U5 Z. `/ s
: Y5 t; X% ]* `
& o/ \; N9 v- t% O. O9 \7 B- D, Y) ~; k2 O& O4 L, Q
SQL>ALTER PLUGGABLE DATABASE ALL CLOSE ;
: r! s0 T5 o4 C( A1 Z
3 F, v# O4 w2 QPluggabledatabase altered.% \: n" v; r# ^$ x
8 U2 t) S; p a; X5 j W0 ~: V
" D' o' H6 c* D6 \/ r l# q
+ c+ m; r; [4 ]/ X) x9 NSQL>select con_id, dbid, guid, name , open_mode from v$pdbs;
" @6 J+ y+ I* v' ]; B P) `/ c6 e1 c
! w( t- _/ G. \; N; J P& {, {- ~
CON_ID DBID GUID NAME OPEN_MODE
: s/ ^1 p. n6 C$ S( w3 b% E% ?* L1 |0 }% R/ O5 h+ {7 f6 |8 D1 H
-------------------- -------------------------------- --------------- ----------
) q" _+ {' m$ S7 A* k, _, ] _4 X
2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY3 ^' _8 @! t( N# M. y( V/ q- V
2 h- H( U6 a" @2 z; F 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA MOUNTED$ G# X( o+ F: z/ o
/ u8 K' s" e# H6 F$ p7 T
& M7 o9 ]9 v9 X) {% z7 x Q0 r2 O
SQL>alter session set container=pdbcndba;( d, g8 s W3 M' x1 a2 E6 T# c
4 {7 O5 {3 p: R " |" X1 }- V$ q6 }# M
5 u* L. N% ~( V R& C! n
Sessionaltered.
1 E: t, n' C/ y9 Y9 h
3 `% h' f( ~5 c Z5 S0 ^) G+ l ~
9 S& }% f/ Y; S' b% r$ u2 p& Y% V
& ~$ N9 n0 n6 M( r4 B1 O; _1 XSQL>ALTER PLUGGABLE DATABASE OPEN;/ n4 b% r9 n: S7 M% }; \
A* Y( \, |& p" a* g# C _6 E
, f) N( l5 v5 ?+ @- M \/ I$ {( c
" Y6 A) e- o0 I! p8 u- x- dPluggabledatabase altered.
* e/ K8 f8 S. M# T$ Q
/ s( S( ]* Z/ [ 0 z2 o$ G7 k2 i# p
. { B ]3 l p0 }$ I' [SQL> select con_id, dbid, guid, name , open_modefrom v$pdbs;
& m" ]. z( Y3 J0 R- q
" Z* p2 q# X2 b% L
$ w7 Z3 [5 }9 y$ `5 m- g+ h. m2 n/ Y9 B' m' v- o* m/ A/ D
CON_ID DBID GUID NAME OPEN_MODE
' C7 a& @5 p( A* O/ L: s0 l9 u1 q* o! ^% j1 [6 [! v. P8 K) J
-------------------- -------------------------------- --------------- ----------3 w l6 m3 M9 z) }
Y8 ~4 q, |- i/ x0 k9 y" t 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA READ WRITE1 F0 n) {' f2 w1 M1 U+ \
* ]0 p3 h! q5 K C& c
* [, v. T7 J* S+ D( o9 R6 m1 ~3 A* R- T* v" f. I! ?4 D
5 S& j1 [; m6 ]+ t+ t( z$ u7 J- V
, z$ V1 `' a i2 Y6 G2 S9 C
1 v) d, Y- g3 H- U q3 K; s8 y W
3 设置Pluggable Database (PDB) 的自动startup- u5 q7 }0 h+ l/ K- R( O
' a% F* g+ l2 C: V
w4 ~% i7 ?. j0 F* p# m
$ K5 J$ h. n, e. a1 ~4 j
默认情况下,在CDB 启动的时候,all 的PDB 都是mount状态,也没有默认的机制,在CDB启动时自动启动PDB。
& b, `9 U7 r8 l N
5 d5 q7 ^. J- d$ Y3 p: Y9 K
* \# Q$ u( W2 R% v: c) o ]2 W# U- M! n2 M: f
但这里可以通过触发器来实现PDB的自动open:% g# u9 {& \; }2 C; D
' K9 i F8 @; g. q; T6 _
! m, u/ ]- v1 G- o! C T9 V% H4 C8 ]$ V/ X2 @, P
CREATEOR REPLACE TRIGGER open_pdbs1 X' f7 f0 u. B+ e
0 i- y+ Q5 l2 F$ v AFTER STARTUP ON DATABASE
0 K; z8 a* S% S- Y
* Q/ [8 v9 c' ~) HBEGIN
$ j% c& {* d8 o6 p3 N1 v. N
7 X8 s1 ~ D4 N9 S. t" k EXECUTE IMMEDIATE 'ALTERPLUGGABLE DATABASE ALL OPEN';
' ]: D4 h! ~# Z" B! `+ A, f' y+ z4 U" n2 ?
END open_pdbs;0 q* ^& y0 Y* x
3 R7 m' N, Q5 I( _% |6 m3 A
/, A% Y; }5 v: P; c7 T. {; q! |
% m6 V5 o* O |( `* j7 _
# A7 ~) E( I& h% n' Q/ `4 E, X, B t$ L% e9 x
示例:
1 L3 e7 n8 {! Y* J! o _
# H ]+ q, H0 Y, ?" mSQL>show con_name
( d5 \6 A& [5 D8 x( F6 i
; K$ C: _2 U2 d$ H7 ?
8 I0 I. T8 ? e$ J$ r) k& I0 a1 \8 y8 U
CON_NAME8 K$ H6 C- H# g2 p
/ G8 v* V* n/ S+ d) n- W------------------------------. l) T8 _$ p* A
+ J4 _0 t# ~4 A9 Q+ i1 \PDBCNDBA
9 t5 `5 @# m* ?4 o& a: \" {: w
7 U% y! A& z- o; ]* e. iSQL>alter session set container=CDB$ROOT;8 F, a" o$ P5 @, e
5 g8 J5 f% K4 P* g
. n7 g% O( v. f# M V5 T
* ]9 v$ e+ ] s+ n0 ]& v6 @6 s
Sessionaltered.
3 T5 I+ l0 [9 E4 h& R7 x7 @" v% f- {" `- U; i4 z
# ^; ~- q; q) ~6 U# n9 A( a1 G) B+ u: c( V+ T
SQL>CREATE OR REPLACE TRIGGER open_pdbs
2 n& U2 d7 h5 L7 \& }, |( {, ?( }2 O3 X' w
2 AFTER STARTUP ON DATABASE
8 W# b' m8 x$ x; b# x' j8 g3 O
2 O, z# F6 F2 y 3 BEGIN
3 `- l6 x7 t5 u i+ G. C
( s( W4 n' [ V* _ 4 EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';* j% m; k e9 s1 Z
+ \: o, r- L; `# o5 x9 C
5 ENDopen_pdbs;
3 @2 J/ T5 y$ x) ?! i
$ j t3 ]$ b0 p# B8 W! s 6 /, h' u3 _# s' c+ v" a6 s
' t+ t2 J* h" B+ f
, c1 _( p# B. R, g- |6 n8 W9 f6 W- |7 g& h n/ j5 Z
Triggercreated.
- c$ u3 P7 V, x3 K3 C$ M
W: p5 u) C- @/ Y5 A* L$ T
# s, A2 b2 A. |) y% K |
|