就需要在对象前面写上schema(owner)的名字,如不美观不想写而又没有建树synonym,此时可以经由过程alter session set current_schema=schema_name来改变当前session的schema从而在访谒对象时省去schema(owner);最终能否访谒对象仍是要看是否有访谒这个对象的权限而和schema无关。- g2 `8 p/ c2 ]2 f
0 }5 {: Y N+ e- t# N+ @3 v
深切理解user和schema的区别:
: u6 C2 e! Q( ?" R9 p 2 x- K: `, {$ A5 M# j
user即Oracle中的用户,和所有系统的顶用户概念近似,用户所持有的是系统的权限及资本;
- p0 m/ T2 e9 P; q
% s) v! }) j1 n$ t) L2 t R 而schema所涵盖的是各类对象,它包含了表、函数、包等等对象的"地址地",并不搜罗对他们的权限节制。
" b' A3 T: A& p% _# A" S: m ; `$ D7 G- W- O2 I" X1 |
好比一个房子,琅缦沔放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。
- U/ u) h9 I, A " m5 V& V3 F3 L7 y0 [) d
你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以经由过程alter session的体例2 e: f! y3 e: p1 @0 Q% P* H) a4 U
! ]9 K7 c2 V. ?% c% c* Y
进入别人的房子。
, z+ C7 o0 ?+ s5 o5 }" W5 a # n2 S! ~& W) G
这个时辰,你可以看到别人房子里的家具(desc)。( [8 C! D% R6 }7 N9 V: \2 K
8 F$ T1 t# y. y% G! y4 A' |; M; ] 如不美观你没有出格指定的话,你所做的操作都是针对你当前地址房子中的工具。* O E4 F. p) t, I) h! n
! G3 U. b! ^2 g& \ 至于你是否有权限使用(select)、挪动转移(update)或者拿走(delete)这些家具就看这个房子的
4 g, w' h4 e9 G% l; G 8 O3 t# K# Z( `6 M' h% g9 E Y
主人有没有给你这样的权限了,或者你是整个大喷香(DB)的老迈(DBA)。' v6 n% w6 w( E3 A6 }; z' V2 H
' O% _0 O) {$ \+ A
alter session set schema可以用来庖代synonyms., h' u# A( }+ b' Z% B/ ~
# H* ]/ h O; C, Y: X- l 如不美观你想挪用其他schema的对象(有权限的前提下),但并没有建synonym,, I" _2 Z1 b, O6 v
; y1 ~1 L+ J8 J/ A/ b
同时又不想把其他schema名字放入代滤鱿脯就可以首先使用alter session set schema=. |