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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

- Z- ^+ e! K2 p- H
  就这样试了一下,果真创建成功了,可是为什么要这么做,有些不明白,然后继续查资料,原因是这样的:
  Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。
  

8 |+ t$ P  W; ~. Q; W/ R
  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;

3 b( j# X; f& u8 Z# Q! d  B6 e9 A
    如果得到的结果为YES,那么就是CDB的数据库,否则,则不是。
  怎么查看当前的容器?
    执行下面这条语句:
show con_name;
# d/ [' p# }+ U3 @% ~& F
    执行结果如下:
     
  怎么查看CDB中的PDB信息?
    执行下面这条语句:      
select con_id, dbid, guid, name , open_mode from v$pdbs;

$ Z( C5 T( k* |
$ W5 t9 ^' i5 }' l; {   执行结果如下:
! L- ~, V, v- \' s( t
+ S: b$ _' N/ d/ S   

# r( N  D& O# | 启动PDB数据库的方式:; a% A( \- M+ d
  . h8 L  r5 c! g- z) r1 T
   执行下面这条语句:
8 [1 m3 \5 Y" R# f 3 v8 R6 Q0 K0 ~+ f2 V) h6 s& F$ }
     
alter pluggable database PDBORCL open;

9 Z/ Y  ?1 D& G: l' D9 p, {0 O$ a) {9 o  j" W  }# E& i
   执行结果如下:
5 R  m7 F0 f5 P' B* ?
关闭PDB数据库的方式:
% y0 u. e2 l1 s# O; z4 P. h- p2 A  # |( T4 a' ], t. q) V1 }
   执行下面这条语句:5 @7 o9 U  a/ P: x$ C# V- e
 
alter pluggable database PDBORCL close;

- L2 T) q$ L4 _6 R0 j: [& i  @  G# X3 m0 Q' ~9 l
   执行结果如下:
  在容器间切换:   
alter session set container=PDBORCL;alter session set container=CDB$ROOT;
8 J! t( O( |/ ~* B. l3 R  i/ F
--------------------------------------------------------------分割线------------------------------------------------------------------------
那么说了这么多,怎么就可以创建用户而不用加c##了呢,我在这里创建一个新的数据库,步骤如下:
  打开 Database Configuration Assistant
  
  出现如下界面:
  点击“下一步”出现如下界面,在创建数据库的时候将“创建为容器数据库”项取消勾选。
  这样新创建的数据库就可以使用了。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 23:03 , Processed in 0.023013 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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