找回密码
 注册
查看: 4471|回复: 1

Oracle12c创建新用户提示公共用户名或角色无效

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-11-10 21:51:32 | 显示全部楼层 |阅读模式
 今天将备份的数据库还原到一台新的电脑上,首先要创建用户,执行如下语句:
create user fxhyidentified by "123456"default tablespace USERStemporary tablespace TEMP;
0 ]) k% E  B5 A  }% }
  结果出现了一个错误:
  
  我们可以看出提示的是:公共用户名或角色无效。这时候我就郁闷了,呃,查资料,发现创建用户的时候要以c##开头,也就是刚才的创建语句应该这么写:
create user c##fxhyidentified by "123456"default tablespace USERStemporary tablespace TEMP;

) V% M5 I2 p# I1 G! l2 i+ U& P7 k
  就这样试了一下,果真创建成功了,可是为什么要这么做,有些不明白,然后继续查资料,原因是这样的:
  Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。
  
; [' E% m& s7 @4 y
  CDB组件(Components of a CDB)
     一个CDB数据库容器包含了下面一些组件:
    ROOT组件
       ROOT又叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。
    SEED组件
        Seed又叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库。
    PDBS
         CDB中可以有一个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDBS,这里指大多数常规操作。
  这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个PDB是一个容器。每个容器在CDB中都有一个独一无二的的ID和名称。
  怎么查看数据库是否为CDB?
    执行下面这条语句:    
select CDB from v$database;
5 ~. Z) W: P* k' E% X& V
    如果得到的结果为YES,那么就是CDB的数据库,否则,则不是。
  怎么查看当前的容器?
    执行下面这条语句:
show con_name;
' _. J2 s8 _+ b! M3 n* i
    执行结果如下:
     
  怎么查看CDB中的PDB信息?
    执行下面这条语句:      
select con_id, dbid, guid, name , open_mode from v$pdbs;

1 {: C1 ?+ k  {# |+ A; O9 _# f$ a, ]& y, B+ c( P
   执行结果如下:+ a! r, _) W+ o4 g/ x  p( m

5 x, K& c- h5 l! x6 s   

5 C" R" {' f- c+ h 启动PDB数据库的方式:+ g" i( C6 F& ?$ K4 ^( i
  7 U- ?, S6 P5 C$ X
   执行下面这条语句:9 B9 ^' d# P; J5 n- j6 N7 A' h
 , t- N% M5 x: e( H
     
alter pluggable database PDBORCL open;
9 z: f5 Y3 n/ e' L6 M* S

% v' W5 i4 L7 G2 K, Y   执行结果如下:

% ?8 d- v/ O% r' U  v# F" E关闭PDB数据库的方式:& |$ e8 y& j8 S1 E% ~
  ' K- t6 A1 ^4 @0 |/ u! l; S# }
   执行下面这条语句:
2 x% e/ q2 F- }' Y- g" U) |' r 
alter pluggable database PDBORCL close;
7 v2 o/ V# s$ b3 t3 n
; x0 N! `. e6 `1 y" E! U- C
   执行结果如下:
  在容器间切换:   
alter session set container=PDBORCL;alter session set container=CDB$ROOT;
: B7 {- s7 ~6 N& H' e) M, O
--------------------------------------------------------------分割线------------------------------------------------------------------------
那么说了这么多,怎么就可以创建用户而不用加c##了呢,我在这里创建一个新的数据库,步骤如下:
  打开 Database Configuration Assistant
  
  出现如下界面:
  点击“下一步”出现如下界面,在创建数据库的时候将“创建为容器数据库”项取消勾选。
  这样新创建的数据库就可以使用了。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-11-10 22:12:39 | 显示全部楼层
1  Container Database (CDB)
1 r7 c2 `( N/ _3 `/ [
( S. r4 i( Q( n6 w# N  ? 
3 d$ ^, {4 K1 M- G4 Z
9 N; Z5 k9 ?) ]4 D8 U对于CDB,启动和关闭与之前传统的方式一样,具体语法如下:
) N$ s! g; K/ Y. r/ x6 a7 n
( F# W! n: W, m  L- a' U% E9 ]STARTUP[NOMOUNT | MOUNT | RESTRICT | UPGRADE | FORCE | READ ONLY]
7 n5 z( Z: X1 H7 ~3 f" j' p% L' C" p7 X6 i: t
SHUTDOWN[IMMEDIATE | ABORT]
3 F2 e! ?) X8 D1 _3 y7 x: W& s3 q1 Z4 i: y: v) s9 M8 n9 k
 
7 v7 o* D+ G( a; ?5 s  c
9 {0 n. ?; g) s* F. ?) x( I * y& L0 I4 Y8 _: R
" T4 G; k2 I4 `$ J2 l- |8 p
要注意,在12c数据库创建完成后,默认情况下使用sqlplus / as sysdba  登录连接的是CDB。. v4 ^8 ^/ S& d3 i
6 V% H/ Z% C( [, `' x
 0 n. s3 t0 G# W3 w
* n/ [5 ~( y2 Q- q
[oracle@Ora12c~]$ sqlplus / as sysdba
0 D- p+ b+ |' T
, M/ c7 Q2 a% {. e: J 
( i! Z. c, `) R! g$ \/ _! k8 l0 ^1 o- R0 M# w7 i
SQL*Plus:Release 12.1.0.1.0 Production on Thu Apr 24 17:50:34 2014
& x- Y( r0 J5 G( C2 e0 f9 g0 {+ K: G2 v
 
* u& v) p, Y2 k- o) _3 H* e+ ?; ^' r" V. a- w1 M2 O+ }8 L
Copyright(c) 1982, 2013, Oracle.  All rightsreserved.
- J% b$ k8 J- r7 W% l" @/ d
7 F. @4 x2 G2 f; {2 Q0 i: `4 g' n2 q 
1 C2 l0 l! e$ H* f) q6 J9 a- @" a, K
 * _" Y. U+ W/ d, }+ l4 x
1 \2 r2 ?3 j! W# @6 S) U/ {! V  {
Connectedto:
6 \; x6 l' ]3 V4 B  G. E+ J5 P. z0 x3 Z
8 ?4 |5 u5 X' S# Y4 [( x, `OracleDatabase 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
. Y! N/ d/ C( y( _6 z4 p+ S3 h" v- U( \, f
Withthe Partitioning, OLAP, Advanced Analytics and Real Application Testing options
  `2 }* d% [* d* a  F
; w- b) Y  h1 [. h 
# Z3 w: E- }2 K* @+ i' o
0 w; K! B7 Y" G( b0 z  p- KSQL>show con_name- c8 g  Q- t( m( }3 |

0 U. F3 w% ]" v) W+ T0 |: | ) _2 o' h8 Q1 N7 F
' b7 k1 g5 \6 |* C
CON_NAME4 Y9 N7 q6 M& L9 r
$ M( p3 o; E& V+ ~) Q: J
------------------------------/ s: t. {  f% x: F3 A

1 [( H7 j3 p9 xCDB$ROOT+ h' D6 C$ i& O" t, A

( L; G+ _& q5 HSQL>( S2 k4 ^, j0 t  l4 t# ?! J

- |: M( l1 d' F( v % T' E4 O, z- E

% q6 k7 v5 F1 e3 ]SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;9 E0 Q" x" B/ p/ C) t1 M) `4 d

3 |' W5 a7 Y" ]' ?2 b4 [0 _ 9 P1 U0 v0 e6 m' N/ p: Q; m
' x  j3 B3 l) l1 u- p' D8 Y
    CON_ID      DBID GUID                            NAME                          OPEN_MODE* R& X# ~, p! L1 `  ]- e/ H; G
) Z' e( B4 `7 E! i, ?( u3 |
---------- ------------------------------------------ ------------------------------ ----------. B9 G, }( y' t! y+ T: ^6 @
( _" C! I2 h9 b; G  u/ Z; V. S  V# a% S
         2 4088301206 F7C1E3C96BBF0585E0430A01A8C05459PDB$SEED                       READ ONLY) r! n! I7 N. ]; Z, m: q* g3 T
% j( ]8 h" K# o/ x& F
         3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA                       READ WRITE
, {4 C% {) U$ u' Y: Z8 E5 V/ G9 u% b1 D- \. U/ h. A5 A& e( O
 
1 T8 y  F" d. _& p# d$ J, Y: w: X5 I  d" I7 F
我们现在连接的是CDB,即root container。( ?3 K* v( e  D+ F

0 X. y1 r/ |+ [3 o $ X* }/ j7 ~  X' g# i

4 G" q7 G2 h9 a5 H5 v  z7 s我们关闭CDB:' P) {3 A" i6 e8 K* o. [

( e  b8 v% p0 W+ Z5 wSQL>shutdown immediate
0 I# P% U  u  H7 ^) G. n( W
, ]7 T1 K! w& P% i" A% |% jDatabaseclosed.
, n+ u/ V+ P4 T4 n" `- H
: ?; f" P. M/ ~Databasedismounted.* e; F4 l. \: I2 p' v6 k4 c4 p( Q

4 o# G" _- y9 B. P' G) D* j9 sORACLEinstance shut down.
% A. n  m  U/ p+ ]7 a6 m, v; D7 K4 h  h! z7 ?4 U
 8 K1 L4 h" e% [( y

, }) z# o5 I+ I, o# n, S( b我们关闭CDB之前PDB 是没有关闭的,所以这个操作也会把PDB 关闭掉。& {1 M* h* q  `& M) K- X/ X% O! c2 S

& `+ m, i/ j7 \5 c1 ] % \, r# ~- A/ G  w. Q- H
( i0 x5 a# `  c- ]) R1 f9 j: x1 ^
SQL>startup4 A( y5 }# N. U  E; R' L5 j

2 w: A0 b6 u/ m1 d0 k6 ZORACLEinstance started.# |6 I" t% }2 E) l8 L! m- t- U

5 E' t& j1 i/ U, U ) p$ Z7 ]7 H3 E

; X6 J! e5 Q8 ]TotalSystem Global Area 1269366784 bytes
1 n; W9 L9 n- {5 g
  i3 D5 h/ U& M1 _; ^8 }* Q  xFixedSize                  2287912 bytes$ ~. _7 j/ \% Z; Q. M. E+ [

+ R1 Y7 |6 t6 D! Q4 t6 a0 B  x: KVariableSize             788530904 bytes
2 }( Q! l9 |  y5 m9 _9 O! y; P( l7 u5 O# r; b3 v- U# m
DatabaseBuffers          469762048 bytes
# K; y. O: o/ q# `4 D7 C) ?8 S6 W) G7 n, |" p, G
RedoBuffers                8785920 bytes
  W* l5 O: C4 R8 B
" [$ [! h/ m0 h1 R) [' sDatabasemounted.
! N4 P% ]& T1 d0 \, Y; M; K/ c
Databaseopened.: `8 Y4 b; M8 j0 Y
- d- S4 e: q5 T1 |: S
 * K' n6 u% Q) B/ [3 S6 u5 g
/ d3 c  Y# T3 u4 ?1 ]" Z
SQL>  select con_id, dbid, guid, name , open_modefrom v$pdbs;
5 Q" Z& L& }' ]0 r) w# x5 C3 N
7 N- W. N, j- ], f9 |. H& @& b 
3 d- k' b$ d3 c" g' h! N3 V) K" L$ _" a# o7 n
    CON_ID      DBID GUID                            NAME                          OPEN_MODE3 y& U" ^+ N; n7 s& h- V0 T- W7 d

/ ?, K6 k( s4 I8 k4 e5 q---------- ------------------------------------------ ------------------------------ ----------
; c4 i5 a1 g* m: b) G* W
0 c3 P. Q3 T% w- b& c0 c         2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED                       READ ONLY' i# h1 g& v3 ~* ~, @+ t
/ z) E  i6 y! W" e$ h( c
         3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA                       MOUNTED
; }( y9 V/ \( r
+ L0 B0 a2 x7 Q; n 
( b" p  x* A. M! K
/ w* b6 {+ v4 d4 i) k% f注意这里的PDB,在CDB 启动之,PDB 是自动启动到mount状态,而不是OPEN。 所以我们还需要手工去open它,当然,也可以通过在CDB中配置触发器来自动open。
8 g: j+ M* L$ l( U5 ]' u8 p7 @( y1 ~2 d# C
 
! S: x# i. F+ d# X9 a/ y. G! G
. k6 O  C2 P. f/ B5 W2 e, j; z: y 
. Y+ F' W' _2 k- {0 Y# |) k" M1 L2 d( A) I
2  Pluggable Database (PDB)
  N  S% {) Q2 L+ Z) Y, [6 s) X
 # n, B: A9 G$ T4 ?5 Y% @; m5 ^6 Y

1 P7 X9 J. i7 j% @& m4 N( U/ rPDB 的操作可以通过SQL*PLUS 来操作,也可以通过ALTER PLUGGABLE DATABASE 命令操作。+ s5 ?9 `. {% W$ N0 r. r% f

: [% l4 F8 a: [: K7 p 
$ V" E& ~8 \& f9 D6 Z9 d, H$ B7 R3 R/ k
2.1             使用SQL*Plus 命令1 A; H. C# B8 {  W. \# Y9 b
3 [) o5 S  @, o; p# q7 \+ c
 
5 }8 k* b2 J. }
, B5 I6 s8 S$ V( Z ( n0 e" H) k8 l  N: d

: f. T  m: a% T" l4 w, |因为默认连接的是CDB,所以必须先指定PDB才可以通过sqlplus来启动和关闭PDB,
; b7 S4 ^. |! K7 k; K" _0 s2 X- L
: R, K  I, z# l0 A- X- J. Q 
0 K8 v9 X( `3 v  I) v0 o, B, _- n" j* f& ~- N4 v( X
具体语法和普通实例一样:
3 s/ b3 d1 Z/ j8 u; v7 s8 w
: z8 f, n, `( p. _  Y  r  S 
! ~, G: i/ p1 m7 e0 S
4 J+ o. |6 F2 r0 I' ?+ s: X. eSTARTUPFORCE;5 R- q$ Y: q, ]6 @

' N" t9 H* y- O8 q. Z' p3 I- O1 o8 H7 USTARTUPOPEN READ WRITE [RESTRICT];5 x% m" w2 W# A) N) Q1 Z( n0 L
2 j4 v& e4 S8 J3 j
STARTUPOPEN READ ONLY [RESTRICT];8 J% p% T" X. i- J, m6 P

6 K/ d5 m1 a0 Q$ F' MSTARTUPUPGRADE;
6 s0 n: f; d7 ?5 i- x8 s* {! G( `) P, j6 f
SHUTDOWN[IMMEDIATE];7 @- w( [$ P1 l9 L% A& \
" E' w, j" g4 Y- j
 
/ |* E' A4 C8 K  j$ K+ o$ t
# Z0 R1 Z* z' N6 d" @; {7 K8 KSQL>show con_name
7 K) _- e3 u$ M9 T" [6 j# o
7 H; o, X6 y- @4 ?; U8 s 
- e1 W- O8 |( q5 H$ M
/ c; _  I6 z% u0 MCON_NAME
: }# f, P! g: \5 I) k- W9 V& h) y+ h4 M; R/ Y/ V% F. p
------------------------------
7 F9 r1 H7 H5 F9 s/ {/ {" z. P4 ]1 Q; C, I
CDB$ROOT( a1 ?# t0 g; d$ M6 c3 f+ L
& a& n* e& `/ O3 j
 
6 O* n# c- s0 ?4 _% A
) P( w  u* d. Y* x! z! w. @  c% gSQL>selectcon_id, dbid, guid, name , open_mode from v$pdbs;5 D% b8 @5 v+ F: J' S
: n9 t  }: B, Z( _$ k# ]! d6 C
 7 K' j) O" J0 l" g- J/ |

. H" l; e: A5 D" f2 H    CON_ID      DBID GUID                            NAME            OPEN_MODE
$ b1 ?0 W3 G6 p7 D0 w( V& o
: n1 y3 a: x% _' [+ r) ]" q-------------------- -------------------------------- --------------- ----------
  D4 A% ]: Q1 [- G5 l; y7 Z* w7 C/ _. a1 H9 j+ l: |* N5 W
         2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED       READ ONLY/ B: E* _9 ?: I5 s! |& \& t
+ v- k2 o6 ~0 M
         3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA        MOUNTED
6 f* N7 O" a6 x* Y  ]# I& Q/ T+ ^% z  K. s% d4 {5 ]# `
 
: i4 H* U. u1 D# n; E4 d& Z7 g% z% R& @) v
注意这里是mount,表示PDB 是关闭的。
7 J% l# B5 x6 q+ N( B2 H7 |+ B1 j1 F- S( I9 N3 }
 
0 c0 I( S: [$ l( a/ N; @( T' P2 \
--指定PDB 数据库:
' x1 G8 `& Q7 S* }8 F6 L  J! Z; h3 A, s; s
SQL>alter session set container=pdbcndba;* j: Q$ ^6 o) B

$ C. ]# [. ]( B7 Y! C: wSessionaltered.5 Y7 Y7 k& L! w. u' j
( \: I4 {7 y" H2 ?- j
 - }% B/ t8 W6 E$ _9 p- b( g% P: b
' s' N/ q& N6 ]  ^7 d, I
SQL>startup# x4 B- ~6 P- M7 i
4 c' V# p6 X3 I* m) s( i. l. {. G
PluggableDatabase opened.
, c5 A6 h  R. C5 ~: o7 S  ~7 p, F; R: Q8 t1 C* k) E6 O( f
SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;
. u# @* m" x3 q; h" H* K8 _4 t5 @
( {3 s! w0 R# x   m) H- F/ F5 F9 C
; a+ R" A( [- Y8 R  J
    CON_ID      DBID GUID                            NAME            OPEN_MODE
% Z4 `  b: M1 r! S8 n8 Q) I* F6 P* x* w
-------------------- -------------------------------- --------------- ----------. {! w2 v2 \2 D% z: g

% e' p; A6 y  m         3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA        READ WRITE
. v" G( T% @6 _+ g. d5 J' t, b- L" o' j; |# t% ?9 w" `7 M& h: ?6 q
SQL>4 b# t" x* ^* B  J* {: B( b7 }
0 g( B6 b- m& v  d6 _9 F5 L4 @
 4 l! J! R5 p9 e1 ?  y5 N, z
# T9 d  n. q( p9 b$ |- D6 \7 P0 |
启动成功。 当我们切换到PDB之后,就看不到seed PDB的信息了。+ |, f! |9 F% z4 S0 v
3 O9 _* g- E4 C/ a$ b  B9 x: X
 ) U0 k, |) V8 O9 z9 L" t

. x& E6 O0 j- j; o# ~* u: Z 
6 Q: P  D7 O; h' F- f/ U+ R. u- P9 I- z/ a" z6 k
2.2             使用ALTER PLUGGABLE DATABASE命令0 c# P5 s0 k0 f6 s

3 F! a6 b; A7 n! e- ] 
5 j' e3 ^, L% ^& W
+ T) h; ~) T) r) ^7 U- K# g如果在PDB中可以使用如下语法:2 [7 \9 a2 M, e# A3 J! |

' ~; I8 K3 {: W ; U" r  o1 R/ R$ d
. F4 }8 Y/ Z; g
ALTERPLUGGABLE DATABASE OPEN READ WRITE [RESTRICTED] [FORCE];
, N) Q( @2 j: x: I+ v$ v* J+ r7 n4 v. a1 a4 i% q" k9 Y
ALTERPLUGGABLE DATABASE OPEN READ ONLY [RESTRICTED] [FORCE];
. x: {5 Q8 i5 {  d( y/ v( c( t
) ~' ~% z. d" P* o+ u# g$ EALTERPLUGGABLE DATABASE OPEN UPGRADE [RESTRICTED];/ L# \# z% R/ c
8 z: P, E1 T/ A6 e8 s
ALTERPLUGGABLE DATABASE CLOSE [IMMEDIATE];2 s. l! e1 x6 B& D' }

5 k- v* g6 J* q/ L9 f5 l4 M7 `4 @ 
% a* ]; u- U9 W/ B# g' H
9 R$ l# l  V$ h6 \/ }如果是在CDB中,可以使用如下语法:6 F- s7 c& J9 f( F8 S% I3 F: |
: t9 E( g0 V3 C6 T
ALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN READ WRITE [RESTRICTED][FORCE];
9 ?/ H# E9 t6 }% J3 g- \
# U# C, A9 F7 f1 G( I  jALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN READ ONLY [RESTRICTED] [FORCE];" q/ O. Y* e. Y6 Y3 E& X
& F; }+ {) c5 z( N" m" M& d
ALTERPLUGGABLE DATABASE <pdd-name-clause> OPEN UPGRADE [RESTRICTED];! }- a0 ^, ^: F- l% ~7 k) v  [
1 i, X6 W- r" }$ I- h$ x$ b
ALTERPLUGGABLE DATABASE <pdd-name-clause> CLOSE [IMMEDIATE];3 C+ N) ~$ F* }' h& P+ i7 `7 i4 w

! U' @+ ]1 {. @- w( M. g7 t. ~ 1 @% b) ^& ^) G$ D# C

, b0 ~0 K5 J5 P$ Y# F<pdd-name-clause>表示的是多个PDB,如果有多个,用逗号分开。 也可以使用ALL或者ALL EXCEPT关键字来替代。$ H6 A: }6 R( z8 Z. ]

. U% k0 x, Q0 w4 {) e( x: Y 8 Q) o5 u" X5 u, Z3 v

5 I0 d- h, }, l" yALL:表示所有的PDBS。
* K( ~+ i+ s. j; N4 r3 M# n9 X! x" W9 j2 O2 J+ s) z
ALLEXCEPT 表示需要排除的PDBS。! h0 I. p2 _! |
+ w% W8 n% n' |
 
0 S9 u% i+ s* ~: M4 N. e7 F" x5 b# P  f. D
如:7 r  B0 W/ L3 X5 [
# n# B- B  ?* J  \/ J
ALTERPLUGGABLE DATABASE pdb1, pdb2 OPEN READ ONLY FORCE;
5 V+ e5 x" ]) P; ?; B
4 J+ f" Y" g( vALTERPLUGGABLE DATABASE pdb1, pdb2 CLOSE IMMEDIATE;+ `( a7 G6 ~0 L( j, K' P" L- Y" j

2 a0 y) [9 u: v1 K. p. J6 Y 
6 Y" V6 c: e8 Y/ U/ z, d: l
& C0 |8 }4 o1 G" OALTERPLUGGABLE DATABASE ALL OPEN;; v  F. k4 A, c" h+ P

) z/ w5 e5 x: X5 S, j4 N& GALTERPLUGGABLE DATABASE ALL CLOSE IMMEDIATE;& b9 ?. @* \" w0 Y: ~* t( d7 d+ S, v
9 _; Z. v1 P4 B
 
5 D3 N5 d1 @7 w. S, M
, v3 g7 R$ \5 ^, D# cALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 OPEN;
, p% b- b: \5 x# a+ X1 N, s
3 G" b: q" @" b" ZALTERPLUGGABLE DATABASE ALL EXCEPT pdb1 CLOSE IMMEDIATE;
6 K# I& |/ L0 |
. m/ ]+ ^5 T/ h$ y 
% L! O$ _6 ~, d% Z% d5 _% v9 {- B2 C- B
示例:% p- {* K2 s+ ^- N0 y  k
$ j! ]1 x* n% q! ^
SQL>alter session set container=CDB$ROOT;: w. G* G  W6 Z+ W) [

% y" z5 _4 R0 M& \+ ~Sessionaltered.
' K7 P0 P3 N, M) j, O
/ t% u1 D# U9 v$ d3 z+ R; y / Z. y5 @# K/ ~, \1 H0 Q3 y" `

! M& T. t6 a- i. B- c+ q6 B) [SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;: D- N  ]. e. \( |
% |; j  z1 _; Q
 
, C+ V) |  |9 W9 E. }
4 o, M! A' X2 a2 i% W    CON_ID      DBID GUID                            NAME            OPEN_MODE' [' B- M1 M1 l1 w2 a! w6 ~1 \3 w' a

" R9 Y1 W; W! Z+ v2 j6 v-------------------- -------------------------------- --------------- ----------
; x) N& x# @$ ~
& @5 J9 T1 x, o( b6 D$ k- n         2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED       READ ONLY
& o0 X2 E, }3 t4 p: W: L% m
5 G6 M2 H- u7 u  \) _9 C         3 426143573 F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA        READ WRITE. E4 y/ b* v0 O0 ~+ N0 l

$ h5 c$ G6 K. P; r9 S/ _7 ] % y9 D3 L9 x$ `  S" }0 h+ ^

" ~2 s7 ~) ?, W  A% oSQL>ALTER PLUGGABLE DATABASE ALL CLOSE ;
. h% I; A) c8 p# v: w" B: ]! p" U4 u' d! U2 F" y2 G' x  l1 t
Pluggabledatabase altered.
  _& [( s' Z, @0 P8 |, Y& O7 ^* H) Q) m$ y9 l
 
" d2 O/ x% X) a7 T: o7 P
1 W5 ?& k& B: C; j: }SQL>select con_id, dbid, guid, name , open_mode from v$pdbs;0 l: Z/ R) b1 s3 x% \

; V! e) D7 p& ^. l4 Z( d  w 
3 l7 g* O$ @- z7 A' |# d% [. G/ q! q9 Z$ m8 r* C
    CON_ID      DBID GUID                            NAME            OPEN_MODE1 M" e- g% m3 s4 j9 l$ I
/ k/ K' `+ T1 X% Y7 T
-------------------- -------------------------------- --------------- ----------
' c9 J; F: X, t7 q* \' i! X! u
1 T8 K: X" Z' v1 M2 {         2 4088301206F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED       READ ONLY* E& k4 @: x# |; G: Y% }% W4 C
/ I7 [% q- x3 B) a1 z9 j+ s
         3  426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA        MOUNTED
0 ?- z) [8 K* C' r$ g: j& T( k# j* T7 L( A/ T/ z/ B3 T( z; r
 + U2 ]3 z7 t: i# M

$ n) g4 P. [+ X4 K8 r1 [SQL>alter session set container=pdbcndba;* v  h3 u+ x# H

7 V- l7 R' j; G, F6 m4 Y/ X: e1 I* r 9 S0 T& ^6 t8 ^; J* @. S) g
4 L/ B( v$ t5 g- @8 d. {/ \: {
Sessionaltered.
* j# ^; C2 Z8 i9 F. d. O* `
3 W* T. L+ G3 k4 e' t$ P : O2 Z3 n8 d, W% h- e( w& ^0 a
/ h3 v9 S. n1 E6 d) Z
SQL>ALTER PLUGGABLE DATABASE OPEN;. Y1 T2 n7 ?  |; _
& h1 e/ g) Y2 G3 d: h# Z/ s6 C
 
% ]8 T- p% H3 z1 F9 Z4 R5 {4 T7 Y6 J- L+ y$ H4 N: B) g: J
Pluggabledatabase altered.: f) x3 s0 b. [1 a; w

( w6 Y! z$ E- {( `# Q5 o " g8 o" J- I1 n3 a2 f

6 S6 h7 r, Q0 d& g/ b8 ], _SQL>  select con_id, dbid, guid, name , open_modefrom v$pdbs;
" G! G1 `5 o, m  i6 u/ ~: U
  u) |2 n# V( H8 t5 y+ x& l . u' _- @1 e( [

5 N& G9 n; `( Y! Q4 r) T' V    CON_ID      DBID GUID                            NAME            OPEN_MODE
& n4 G5 ^( S* b4 z3 G! c) ~* }: K9 [' E9 d1 K
-------------------- -------------------------------- --------------- ----------
4 w* r8 s6 S: ~5 X4 W) O  T, W* I3 h
         3  426143573 F7C209EB1DFC0854E0430A01A8C0B787PDBCNDBA        READ WRITE
4 h2 G6 X* [% Y' ^# C+ A) s1 g  @! _! @  p# M
 
2 a6 ~# b( C# F8 P& o4 P+ k/ ]& j* ]1 W: g$ o
 
6 A) A5 I- u' _  y. _' ]3 p: ]
' D+ m9 ]/ Z/ N( z% \" ]3 S, V 
" C. z; _' s  _. ~" q; u8 U9 [" a3 I( W! B/ W; |9 i- j( U+ o
3  设置Pluggable Database (PDB) 的自动startup
, o  ?2 b$ u& c# D1 S
+ L- b2 K8 r. a1 D3 _4 e 
$ P9 }# C; z& _0 I3 ^+ S" k2 r7 U
默认情况下,在CDB 启动的时候,all 的PDB 都是mount状态,也没有默认的机制,在CDB启动时自动启动PDB。
8 z6 S& C! O; D0 s4 o
! F& U3 d1 R3 L% `, p$ j 
& {0 S# f/ c9 C1 o2 \1 H' P/ }) N2 B
但这里可以通过触发器来实现PDB的自动open:' N% Y5 y+ V& K/ v) e
) y2 T  \+ w% m4 T
 & P4 |3 a' B( L

! b9 x/ {% {9 ICREATEOR REPLACE TRIGGER open_pdbs
: D) [/ H$ O" C6 V, i" d1 [4 r
9 e. B+ m3 Q& y' j/ x0 h& S) `  AFTER STARTUP ON DATABASE* d$ f: t% k8 X& Y+ K, W) m8 |

9 [# e: l8 f- k6 pBEGIN
7 {/ }, G% H9 U$ D$ C- L5 Y2 i! q( r1 {8 c9 r/ I- J2 P
   EXECUTE IMMEDIATE 'ALTERPLUGGABLE DATABASE ALL OPEN';
) R1 \: _1 e1 z1 c8 C' I/ b( C+ I/ o2 c- U( h8 ?3 ~
END open_pdbs;
9 t3 w) i: ?! G
- o5 L% D) _& f. U/
: i- ~( K2 Q. @0 E  M7 G( V. J6 k, O. h, Y
 
5 Q: B' b# ~* M5 {' I0 P( J7 @+ U, r3 Y1 i6 i
示例:" h8 X4 ]) X, d" z

% C, {' H4 z8 B3 j$ d% B1 ISQL>show con_name
1 G( _& W- f0 C; p  w; q* h4 J4 s# w
) C3 K8 a' z+ [: A; @9 X( m" t4 m 
+ a3 ~: Z7 ]& U% t) ?: {" f  u( v& Y: U1 ^
CON_NAME
5 P1 H8 j# P" c7 _. J& l3 n: `
5 \5 h2 m5 Q+ ^+ |------------------------------5 ~2 Z# H4 z- r/ D! ~/ d) |' J

. C: L7 [- h' O5 XPDBCNDBA
9 e. |+ `) \8 k8 U6 j& C- D" G
3 G7 }4 Q& b$ y2 f+ q2 OSQL>alter session set container=CDB$ROOT;
0 {$ ?2 w  N0 i8 l9 X5 e6 U# I) N+ Y& e. ~
 ) T+ ?- K( K0 K! T& ]1 O* V

$ w- f3 ^: H) F! d, wSessionaltered.
  K- }1 H% L2 ]) @
& a( E: l5 Y* b* z9 O. x- w8 k 
, E; @% m& u, I* i+ U7 ?/ t$ w% E/ h" \  K& k, R
SQL>CREATE OR REPLACE TRIGGER open_pdbs7 k" k# k( _# |' P8 Y; |0 x; |
3 d% ^* C( J; @2 M: z
  2   AFTER STARTUP ON DATABASE
; h6 k- ~8 S4 U/ _3 Q3 z( f+ A& B( B
  3 BEGIN
7 {1 X* }: K7 m" p8 b
( a2 _' Q1 m, x4 D  4    EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';% Y4 X$ ?9 C( }  i9 Y1 e

/ q/ B) @5 H# M/ d+ r  5  ENDopen_pdbs;
2 r) H- [% U$ ]: c  f& D* R% o$ E7 `& s  U0 e
  6  /
  I% v5 P# b: W# X$ ~2 r4 \. t( [, v
 
6 ?  {3 N( F' u7 e0 }7 |7 C
# M& V* `1 B0 N/ s  v1 }$ OTriggercreated.+ M5 Y, ^: b7 p$ E9 G4 P: [1 E
! I9 }, [2 `2 V7 L" u) s6 V2 @
 
- d% z. {+ v1 v6 q9 Y9 U# y6 g8 p/ }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-11 23:55 , Processed in 0.021160 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表