|
|
楼主 |
发表于 2018-11-10 22:12:39
|
显示全部楼层
1 Container Database (CDB)9 [ \" q0 s1 v
' H/ ?5 r: `# `, J7 G: @7 Q5 L! D/ i : V9 K3 ~+ A+ R7 q+ H
: D) z7 s0 y! O. Z% f
对于CDB,启动和关闭与之前传统的方式一样,具体语法如下:1 s& }, f' n( ?. L/ |8 P
, A( v4 J+ g+ c9 `" C. E
STARTUP[NOMOUNT | MOUNT | RESTRICT | UPGRADE | FORCE | READ ONLY]
' L3 U! u8 U( ~ c+ P% u* Y2 H9 ]
5 k q1 t* ~) i: ~4 a9 ~' ^: T5 B+ _SHUTDOWN[IMMEDIATE | ABORT]$ F1 q( Z" p2 S; }( x3 g: P
/ Z# T/ W! T; L: f. c1 }
0 ~* g# Z C9 t2 L1 _
% ]# |0 N7 _' C3 _6 D w" O1 [1 C( _: e6 ]' k( S, z
i% ?- c* u# |1 a1 e2 i
要注意,在12c数据库创建完成后,默认情况下使用sqlplus / as sysdba 登录连接的是CDB。
/ \( n% J* W0 n8 H O- U) H4 `5 X% T, X* a
, V, K! q* M( ]. l6 ?
/ J, {: B, _+ U( t9 p1 v
[oracle@Ora12c~]$ sqlplus / as sysdba
! E5 o, L+ o# m# ]; s8 k# Y6 K% v& |4 }
/ Z" t2 m. p( Z. z) t
* H' G) p- J* B* k L. @SQL*Plus:Release 12.1.0.1.0 Production on Thu Apr 24 17:50:34 2014; c5 t" k Y; F+ f
! w* Y3 p: d0 K$ }
% T) _2 E2 ^7 I
/ z2 C" x8 }, `4 u1 D
Copyright(c) 1982, 2013, Oracle. All rightsreserved.! J2 X6 G3 G( s$ Q/ g( W
/ t ] G: b4 w; u6 Y- P 5 G r) b7 M2 J2 s
% t5 |* S( E8 S$ q! r 6 r* ]* X: U" L6 c( f: t
! N" A$ A5 ?8 }4 H- |( mConnectedto:
* x I2 D, L* L$ k v' V, _" B, I+ p% u
OracleDatabase 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
0 `' _3 i- D' a. f& A: T( m! f9 t& e" w9 ?. q7 |" W) _, \
Withthe Partitioning, OLAP, Advanced Analytics and Real Application Testing options$ u, }% D8 W: a9 [ ~2 P
$ S x# l" S3 ^5 l- H$ z+ t4 p# X
" {- O" H0 L7 ~3 p" w1 K8 |
* Q, Z& y1 H+ ^ @+ u
SQL>show con_name
' r& Z* u9 P# f1 g$ O- Q5 I3 q. z q
! G9 h" \. `) a) h5 J$ Q- X! c0 o# u
CON_NAME
6 G- _ E1 [, K6 ^" |) i5 j& B5 m: ?) I+ z
------------------------------4 P+ j5 ?2 p: \) D0 n
. c6 O8 B% ^7 f. E; ~; r3 G
CDB$ROOT
/ S- @/ s, r, r5 q3 ~6 S# c
* k" ]3 R0 x4 o9 ~: `3 D' V. ~SQL>
, l# A; p* W) k, G& @: W3 T2 L" `7 F( x
6 { w: E% z0 Q Z+ a0 k# n
' |' W: x( I* ?) N, |
SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;1 X' b7 |; ]$ J; F3 Y
# `1 _- Q5 C% T& W. F
' r& ^8 p0 u1 X4 w: `
" g& m% p" ~# g8 p CON_ID DBID GUID NAME OPEN_MODE; E; ?; B0 K% O/ f3 f2 O
' d: R7 E* J% C e* U! L
---------- ------------------------------------------ ------------------------------ ----------; x, d4 N. Q! [
5 C6 A' x: _5 J1 Z! V# O
2 4088301206 F7C1E3C96BBF0585E0430A01A8C05459PDB$SEED READ ONLY t$ N) e: k! w1 T1 K$ ]
% k. p( S& {2 C/ J, r! \+ o; N( q 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE/ v# k1 N- V' l
. q7 V2 e9 A2 |. C; d
+ J9 D8 _2 L- C0 G3 _3 h( b$ P+ |' |5 d
我们现在连接的是CDB,即root container。
Q+ B6 _4 S; ^1 J! a; T h& f/ b4 J+ B( N; v! _
5 x% D4 o K8 p. b& S3 G- }
N, B# e# J% W" N
我们关闭CDB:4 D# R% G) ^9 i! C4 f0 [
. s. ]2 i+ `6 Q9 k, q8 Y
SQL>shutdown immediate
: E7 n, P P# c5 z5 g# w0 R2 L7 [
Databaseclosed.
# z+ Y' b: q" U; e" C: {
( F; T U: g$ n0 P4 p! `Databasedismounted.1 \; ~9 \0 [5 ^ p+ b1 |" \" |6 t! G
& {2 _( | h, Z' t+ R9 t+ qORACLEinstance shut down.
. v3 C( f) N2 P0 V. }! K0 @5 d, [) F: m5 Y7 v) h
7 ~" w! z5 d$ @3 k7 ~
9 e$ R6 }% _" i
我们关闭CDB之前PDB 是没有关闭的,所以这个操作也会把PDB 关闭掉。0 @. s4 I ?! \- j) g
% s" T' k, ~! ?: f8 B9 G6 F! h) F
5 F* [, B6 o- f
; f1 l! ^5 M; d7 HSQL>startup
) p; a& G# d% T' C. q4 `+ q
1 N. e' m; @. k2 |ORACLEinstance started.
! J0 ]+ l( h- p, |9 ^* j8 ~2 _- ?) [# j- Y$ M
5 k; S4 G+ c1 m! j/ n! o& _$ J; I( z' i( Q% O! g8 ?
TotalSystem Global Area 1269366784 bytes% K( w, t# e4 |- ^/ R
: O- T) k' T& o% U9 v! GFixedSize 2287912 bytes
# x( [: X* L; k! `
5 m! d8 T2 q( N& h0 fVariableSize 788530904 bytes
3 m: u0 ~) y+ w. y/ H. ^
9 Y7 G! _( I) x) tDatabaseBuffers 469762048 bytes! }8 k: a/ w3 D
3 U2 R t7 B" ^$ q
RedoBuffers 8785920 bytes( s# a6 K, U3 |* J( z
% T2 y3 C2 }, L) z3 lDatabasemounted.6 k1 \. z @" S: l
3 L, l) N$ L- s5 l+ l1 {8 |Databaseopened.
3 U& p X# s5 s9 _3 Q+ \- m" a7 E" A b2 p3 v. {0 N3 T f
' |1 X" ~. p3 S3 O/ y8 a! Y2 O
5 r( \, {( D" v. U
SQL> select con_id, dbid, guid, name , open_modefrom v$pdbs;
; X" w/ @* [! D) q- i |! t. K3 _& Y# k* T0 y: E3 l
8 A% V6 Y2 p% m4 K& V1 q
+ H' g& `" S2 a/ n, G/ B9 G CON_ID DBID GUID NAME OPEN_MODE, Q, M% C* x, k+ B) p0 A, C
+ v( f$ o1 u0 d! F
---------- ------------------------------------------ ------------------------------ ----------! b1 Y% D- t$ `# m+ G
) C# F9 c6 @9 J/ c$ i9 L, u" h1 h
2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY
3 h3 }" d! l$ [! Q. U
1 ^5 J3 t' h$ s0 N, s" ^+ ^1 q 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA MOUNTED" L7 Y$ f4 F6 o3 I4 h
6 f9 t! q: t" C0 T5 ~* ^
. @% @, i2 F5 n6 C" A) n" h
( {% | l6 U4 o( ^$ ]注意这里的PDB,在CDB 启动之,PDB 是自动启动到mount状态,而不是OPEN。 所以我们还需要手工去open它,当然,也可以通过在CDB中配置触发器来自动open。
+ t; Q7 ]4 V. q
3 z2 w0 R6 d# I; l; I
" M, K1 a& L+ E3 G; {- F
0 v6 t# m* s- ~" e6 |! e6 r! Q8 A 1 J! s" T. H2 [
& a% O( K d0 V2 Pluggable Database (PDB)
# U- \: t( C) Y+ T1 I2 C
, G% _" T7 Q/ e+ t
2 P/ r" F7 H% S6 T9 Y' T' C+ E5 c9 N/ C' k
PDB 的操作可以通过SQL*PLUS 来操作,也可以通过ALTER PLUGGABLE DATABASE 命令操作。
8 b* S0 @; A6 u/ \4 W# ~4 |0 G' E3 C( r1 T! G3 c* ^* r
& k0 l p5 }, w* O/ q) D' T& e/ _1 E. z/ z) |
2.1 使用SQL*Plus 命令- q; F/ ~! y! X9 _( u
, l8 A" M- c% Y: W z2 v
" t: z4 |3 J' J6 a+ r. r
6 u* C" w5 \4 P& C" n & p% I6 F( e& O' p2 A8 T
2 ~; L3 C# G: p) {; d' u9 {3 [
因为默认连接的是CDB,所以必须先指定PDB才可以通过sqlplus来启动和关闭PDB,
! x% x# J7 E" M6 u5 o) {. H& J" s' l3 [, {$ y" g) [' f
$ x( r) _8 V0 U4 J1 P. W- t! \
) X8 c3 z+ w+ k1 `( j8 m" d1 Y4 E( F
具体语法和普通实例一样:6 A3 l1 G% x. f5 w/ w, L
( r, L& G r5 m% N
. |* Z& j7 I& w* z" f
+ m: i% c- f4 N: cSTARTUPFORCE;) B- N" `2 U3 `; i6 P
9 k2 F5 H, G' _2 aSTARTUPOPEN READ WRITE [RESTRICT];2 T0 j- n% ?6 S) {! P6 U) n3 ?
, A: u4 I- h% p- d# T2 \( U
STARTUPOPEN READ ONLY [RESTRICT];. y7 o9 b; o* y9 @0 \# S5 C* a8 y
8 T A9 i1 ]+ j; A: \" g& K
STARTUPUPGRADE;! w' @2 `5 g# q# q; n1 E
4 r8 u/ y; ?8 g% d+ B0 Z
SHUTDOWN[IMMEDIATE];* R0 r7 M, I. x- l0 |, M0 @
9 o z% S! a8 h" g
6 v1 V+ x( [# [% x$ @: n3 I" L
, `9 @7 z, r4 G4 {4 q* lSQL>show con_name' I& Q C/ u7 i, ]; g9 C
7 N5 K6 F; p/ s) K/ v% N% s8 _
0 Y( h: X3 g' V3 a2 I4 N- e3 @0 [
8 q0 ~( b+ w& _% {
CON_NAME
) ?+ t8 {* q( x( j8 J" q, A% n& |$ y% ^
------------------------------1 W9 q& F! ?6 R% v! }
$ `1 Z5 }( b/ c% C- s3 s& l$ X
CDB$ROOT
g" }4 l7 s3 R
* L7 m. x& N% I6 M( E' J, n$ o( B# B 2 Q+ L4 g2 Y* {8 }
# Q; J% I1 F) F
SQL>selectcon_id, dbid, guid, name , open_mode from v$pdbs;
" r" M& `2 H' u( p X2 r+ \7 S& u
- C7 H l# r+ T5 s7 d/ X " i$ B$ X+ E, y6 L! M
" M1 ^9 D0 T7 w* N CON_ID DBID GUID NAME OPEN_MODE
# U; e! ]2 `, J4 @ [6 U, r. Q' E$ ?: V/ o% J
-------------------- -------------------------------- --------------- ----------
: ^" ^% l A& n; \
3 ^1 c% z( x( y% T4 k2 d: G! K 2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY
5 |: u& ]$ n2 D4 c" F- m, ]0 }7 S
9 \; M: K% x2 Q3 \ 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA MOUNTED, M" ]9 Y0 Z# D/ V! i
* i) f m s3 p) E+ v' A% J1 o % q, u) K5 z. t/ H1 b
* K, r, Q( o' H0 p5 K注意这里是mount,表示PDB 是关闭的。
. F4 }: D* ?+ E# S" X3 r8 _, ?* n9 ]0 L" a, u- ^, L
" R, }* ~6 z2 e% H3 p, q0 b( c
; L5 w" }, G2 ]2 H1 g, W1 E--指定PDB 数据库:0 @! `, E! ?( l+ a; Y9 M( M
1 M- q5 H/ |% ]. B" rSQL>alter session set container=pdbcndba;4 m. b% y k, c2 k. k& v
) z' N4 {* P+ Q1 T; M: m2 D/ Y
Sessionaltered.( [% k2 ^& ]5 k' ^" W i, [2 B( K
2 v4 _ S5 H+ b# {8 I
j/ i8 e, F1 D ]
9 x. q5 I3 g( S* }
SQL>startup" f0 c( B3 n) ]6 z/ R
$ }- u, j' W% M5 c$ xPluggableDatabase opened.4 Q- K- X/ e; f! I Z
9 L4 U0 K8 p7 @& |SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;; X, D' E8 @) \( W
* E% P* _/ F" y" Q) [( @+ H
6 _, N% o( j8 \1 @ L0 K
0 x' Y) E& O6 O0 \8 n) \! ] CON_ID DBID GUID NAME OPEN_MODE& W5 {0 Z& V7 y& _
& K" S2 Z# l9 O8 P; f-------------------- -------------------------------- --------------- ----------+ }! y2 g4 I0 Y9 X B% U
4 r u, L6 N8 R1 r 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE8 L4 Z3 p7 U' F
6 z6 O" Q& \8 NSQL>
0 P1 B$ N4 n. Y$ Q2 _
! w, l3 d/ ?0 L! [
3 @: J; }8 W# l% f/ k
3 `/ Z3 ~: ^0 Z" d% D启动成功。 当我们切换到PDB之后,就看不到seed PDB的信息了。" [- A& M, w( z, L" s
( j* @/ H- ?& i
9 b0 a) ^0 F& S, u1 U
, S$ l9 Y' u" f3 L4 i9 c/ ` R % }4 C5 l5 n4 o6 N+ L1 w
& Q& @9 ^4 c# u6 z Z
2.2 使用ALTER PLUGGABLE DATABASE命令+ A, ]7 F( U- l+ `' i7 E, ]
/ }+ N% F7 j5 G* M9 m" u, ^! a7 @# e
8 @, q& s! {- F$ @) P9 e) I0 H
4 E: f, x. H _) i. y( _
如果在PDB中可以使用如下语法:
! \* z* K: Y* K2 r8 Y* L+ |7 Y4 V' O5 a: u/ r+ `2 \$ W5 p
, [0 j6 Q6 Q V- }4 U
, ^6 u4 G _8 l- sALTERPLUGGABLE DATABASE OPEN READ WRITE [RESTRICTED] [FORCE];. R! [3 u( u2 Q# |4 a8 o7 [
% o/ Y5 T) d" mALTERPLUGGABLE DATABASE OPEN READ ONLY [RESTRICTED] [FORCE];
+ G) m- S i7 z1 m5 k) K3 m& i! h+ s5 U
ALTERPLUGGABLE DATABASE OPEN UPGRADE [RESTRICTED];! ]/ y+ O, t$ ?/ B
3 j" D/ [5 b) o& J! P' a
ALTERPLUGGABLE DATABASE CLOSE [IMMEDIATE];" }9 `$ S! _0 w7 n, i
* [7 D/ y9 w) c* B9 u ) c. Q0 D, t4 i
1 {( l! K, t1 Z" U; [如果是在CDB中,可以使用如下语法:! t' D1 y5 H/ W/ E
3 h/ m- E6 W! ~4 |% y: j- CALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN READ WRITE [RESTRICTED][FORCE];; B* W) }4 y, L: G! S( ?5 b
9 i& H: @9 j1 N$ H5 sALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN READ ONLY [RESTRICTED] [FORCE];" p( ?" N! e1 F# W/ Q
3 ]; d+ ^6 h4 @1 ?( XALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN UPGRADE [RESTRICTED];
# R. J/ @! X h- Z/ |; p6 x8 ]2 B1 b
ALTERPLUGGABLE DATABASE <pdd-name-clause> CLOSE [IMMEDIATE];
3 }. K$ k( b9 D, x
7 v! }4 B, x: r2 ~ + H( {/ S7 o9 [* [5 T2 [
1 e% R' [. ?% y/ Q% H7 J. b<pdd-name-clause>表示的是多个PDB,如果有多个,用逗号分开。 也可以使用ALL或者ALL EXCEPT关键字来替代。9 V3 l3 x5 I5 |
& i5 p3 g* P9 ]
4 j9 _% g# i0 A
; O0 p. z$ ~4 ?ALL:表示所有的PDBS。
; I) H% G. ]* t( o1 e
, j" L* G! p( t# M2 q' a) S1 ^ALLEXCEPT 表示需要排除的PDBS。3 Y( G% ~! I4 {$ _
/ f9 C) E4 v% O: @, {
8 v4 ^6 \% S; B% D5 ?" e! ^8 t) s$ h7 O: ^7 x( f, \; E
如:1 @4 P, H2 V% q' y9 T" n% C
3 y2 W3 s+ ~3 ^ALTERPLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE;
# `! ]' _$ L) I$ n7 H; A! K. Z! M) w& r [% N" p1 `& v) ^
ALTERPLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE;
8 M5 w9 x* W2 z- ^7 E; V4 g- F( E. p- i! y7 x6 J8 }% V
) ^+ |. |* U. z& P5 u4 k
8 O0 l, q ^# T8 D, E3 f8 LALTERPLUGGABLE DATABASE ALL OPEN;5 k Z( H! L" T; O, c7 i% s
0 N% S0 P# ]+ T lALTERPLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
7 c: ]* Y5 m. _7 C8 P
2 C$ O* `+ C( ^4 ~, \ 9 _7 L, v+ @8 t! {6 ^- ]
+ m3 v5 \ D0 y& b# u C4 G
ALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;$ H% `( X0 n* Z3 d$ M
6 u! p% o$ `: U# Q( B1 C, m' {- z
ALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;
; b. s: W! [1 U7 m; w+ h9 W0 y8 i8 t/ M2 Z4 S# i
. q7 R2 T+ v+ }8 x2 x: W
# |9 g4 K' ?) N! _. P% O! `
示例:7 @+ y. x/ J) e5 ?: _& W3 G
/ Z- t" i0 e O9 A$ VSQL>alter session set container=CDB$ROOT;
# F9 S/ m! U6 I
+ z! s2 p6 n% _; F/ Z$ x! g4 {Sessionaltered.+ Y: X/ v! `6 K& J* ?) d: u { n
1 V8 m. y) v5 z
# _7 g: i3 L+ |9 @7 M' X) L5 }3 d5 f+ J. B7 V9 i2 T7 T- a, c' m9 l
SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;
8 v; l }1 ^5 ?7 z+ }. j$ w- ]1 c. y6 |" k R" L
9 e/ D4 w3 }$ s7 o* ]2 z/ U& f! s; @0 ~
CON_ID DBID GUID NAME OPEN_MODE: \0 l4 c# [( O1 O6 \
$ K3 _% G2 }+ E5 [( x-------------------- -------------------------------- --------------- ----------# ?/ J4 Y; t& g3 d" ]
+ i7 f+ Y& q3 B' M 2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY
' J6 r# \7 B8 U2 _: x" E' e
+ N' `2 X. \' N 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE
5 w* S; W7 ?+ @" m" e1 m$ z9 d& Z
+ k/ D0 W4 _+ c5 }
: s6 a6 f6 c# zSQL>ALTER PLUGGABLE DATABASE ALL CLOSE ;8 t. g- V$ H( y8 v
& ]: Y" S' r( s
Pluggabledatabase altered.
/ L3 k, J- }; z# S6 V
6 f2 e' w: W5 q& o% t0 b" G
7 Q2 Y& _, `7 I) x1 u4 \3 N! h$ m1 |+ B/ k, J
SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;
- ^# ^2 T, e$ t6 S3 I
8 Q) C/ ?/ q6 O. F 0 G {/ _6 I _: b
( x& u) |0 L+ ^% M1 n6 @& c CON_ID DBID GUID NAME OPEN_MODE& y7 I) f' b+ c) U+ z, D
! i7 N! ^1 T& R-------------------- -------------------------------- --------------- ----------
4 h, x) J6 M' k; D" @$ C) ~4 h) l) K) P, X* q
2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY
, G# R: [2 j: Q! V( k, D; N) L/ E% G/ J% [4 ?
3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA MOUNTED
3 B( D. A/ g% R# I( z0 \- B6 C0 q7 g2 v6 q- |0 F7 c l
2 D, w; M$ c& U; n5 v+ ?
/ R. D0 e5 ^" n* oSQL>alter session set container=pdbcndba; |& s/ g' Z3 ?# @: ?' y- f i# D
( @# p3 t G* y- X+ f$ P) R
( x- u+ Y& P3 I8 s, X1 v8 H2 V$ K9 H! o O* m
Sessionaltered.
. a5 I }$ S K/ G. C/ P! P- i e* b" a+ }! v- d
6 ?6 q# c4 G/ J" f
0 h* X# l; t3 {* bSQL>ALTER PLUGGABLE DATABASE OPEN;& |. p9 b$ m& _" n" q0 Z5 K
( b( E) D; g7 I! L, a7 M6 Q
1 I6 b" ?. I. L5 w& G6 u
. L( I8 X' H* j' s8 ~4 }; [, YPluggabledatabase altered.
6 S; D" ?2 s i# |! D6 H1 v% M( x* o, r/ h) W Z
! I' ^& A- P% R. B7 i4 _
3 Z+ s# q/ t x5 ^% O2 T$ |6 @SQL> select con_id, dbid, guid, name , open_modefrom v$pdbs;, X1 I# q* P/ P5 {
/ A, x; z6 ~4 I! M4 p
5 h' M e/ I N" Y
5 g0 D1 V- m4 M7 t CON_ID DBID GUID NAME OPEN_MODE
# }# g9 M; q" N/ h# Q3 m: H3 O5 v) Q I3 C
-------------------- -------------------------------- --------------- ----------
1 m1 K" D- u9 y* @ c, y0 @
6 l% S9 @+ _+ F, f 3 426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA READ WRITE
' O0 E4 V- F! Q- _
1 x6 l8 U, g6 j
/ M }+ U N9 |: y3 ~6 ~9 J1 V5 l, {) r* e6 c0 p' C
8 T% R1 C; J3 t; i$ J
1 s1 y, h. j: \. q% o* ^
" o* p/ _* Q6 y. m) m2 b o9 @, l3 o
3 设置Pluggable Database (PDB) 的自动startup
3 r5 C+ l$ ^2 j* S% h' M9 m2 [, l" r4 k& v" W5 ~: L" o) G( }
* Y9 b) Q8 X& V* R
: U& H" B9 j1 j( W% U/ S
默认情况下,在CDB 启动的时候,all 的PDB 都是mount状态,也没有默认的机制,在CDB启动时自动启动PDB。
8 A6 H- e* N' z1 a$ v
$ N3 x2 t d7 F: p $ V2 u. X% `* Y0 H! @( J6 U4 |
; W+ @: n& E; K" R8 \; h: e; [但这里可以通过触发器来实现PDB的自动open:$ h; Y$ g) e7 X* c: t9 C
. o5 v1 A1 t5 R" c! Z' \ 3 M% F6 N- ^; Q3 }
$ n; g& c" t7 M) QCREATEOR REPLACE TRIGGER open_pdbs4 Q1 U8 ?8 d& }7 R1 O; Q2 I
$ n4 h8 i" o2 _/ Z' B) D) M AFTER STARTUP ON DATABASE
+ N6 ~' ^2 o, P& q1 s( ~$ {* w
7 C) {# |! K! O7 e `& zBEGIN
8 K+ X) _7 I& W$ I
0 O4 V) E1 u6 o8 C EXECUTE IMMEDIATE 'ALTERPLUGGABLE DATABASE ALL OPEN';: c# e, v4 @' X) Z9 ^6 W( K
5 J" E+ ?6 {/ _
END open_pdbs;
5 E7 ?, U$ n% E) c! a: N( r: Q9 k9 V( v& K$ p
/' U1 Y* ?' b# c! S
8 k7 n9 A6 ^8 s) Q3 B/ U
0 f L( q4 Q2 _) G& m* J! g5 _! n( F4 v5 i- m& T. G
示例: Q% X! r5 L1 |. W7 H
. N2 W {# @( G' I3 H
SQL>show con_name
: l' u- T" e, o1 v+ R" v* ?
. r: Y: T) V3 \% K+ P0 Q }3 Z3 [
- t, d- s9 u. [3 i8 _1 M" @& M- p# L9 B
CON_NAME0 ^" q! G/ Y! d V: h) y
) O; e7 I5 r. @9 z8 ]! n6 Z$ m
------------------------------# p7 V* o. r. K+ F
% o+ ?4 S8 N5 Y |# M* d9 j3 @
PDBCNDBA
8 J: x G+ E* D# J+ W. J8 y1 j Y1 X7 o" N5 Q; k# u
SQL>alter session set container=CDB$ROOT;
5 T5 L. z* n- Q: U: G5 a7 C7 U ]4 J( w0 f$ J8 _
, K: w6 O! j9 g+ v
7 s- m n6 ~- ]/ u* f2 j: _6 k
Sessionaltered.
( M$ J: `$ w' K# L- @8 V- R
/ _0 s0 `1 x; g3 l p3 I 9 Q- S+ Q; t% y
0 F& {) }. A% z: R% x
SQL>CREATE OR REPLACE TRIGGER open_pdbs# K) ]8 D% u) @ X3 r* T
9 M: }5 L, c2 y6 K" X4 b. @- v
2 AFTER STARTUP ON DATABASE
' @" a) V! |/ e& H$ ~9 b# _4 V
. E4 o4 T. I6 y# ~1 w# B 3 BEGIN
* x* h0 L3 i T: T" F" l' A) S+ p. I* C" } C3 ?& c
4 EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
/ Z& J$ Q$ {+ F4 I) [/ T& h2 [6 R+ o% ?' T$ ~1 l
5 ENDopen_pdbs;
k' ?: [! P+ n2 D9 r3 y6 j* m1 p1 X" |% Q2 U
6 /( y2 t! R' L2 F9 X+ l7 G
- O& `# Z+ x) |- l0 e
8 V9 N. E8 I3 q7 d( N$ Y
) N" b5 ~+ M; u9 t8 z" S( cTriggercreated.
2 P$ R/ V0 K7 X4 v A. O' c4 X& m# y& |, ]& ?1 B# i$ z1 Y- w
, ]# A+ L7 D9 N- R
|
|