a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 165|回复: 1

[综合] Oracle辅导:oracle中的Schema分析

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
在一个数据库中可以有多个应用的数据表,这些分歧应用的表可以放在分歧的schema之中,
( h, S& a$ o0 a8 N    9 W8 T' L! T- n6 u* q
    同时,每一个schema对应一个用户,分歧的应用可以以分歧的用户毗连数据库,6 K3 S1 i2 V" i% S3 H
    ; \9 ~8 o) E- Q
    这样,一个大数据库就可以按照应用把其表分隔来打点。' v( F# b# B6 U% e& ]8 s
   
6 r" C6 Y, z, F7 Q1 q5 m: d    分歧的schema之间它们没有直接的关系,分歧的shcema之间的表可以同名,
% D5 Y8 d) N$ K# P    0 m6 P, @7 j- p9 J
    也可以互相引用(但必需有权限),在没有操作此外schema的操作根权下,
  Z) R4 F4 B& Q) x" _+ c      m. G' }( r% A1 a" w" n2 ?
    每个用户只能操作它自己的schema下的所有的表。分歧的schema下的同名的表,
' I" t/ m% b& O& k    + A* D/ K7 X' J- n% t+ P
    可以存入分歧的数据(即schema用户自己的数据)。
, }( t- H5 R$ [6 f+ ?5 B   
9 o; G+ _- e+ X2 e: \- m9 s( e    Oracle里schema几乎和user/用户是通用的。schema是指一组数据库object+ i6 G) P0 D5 r: D6 T# y8 n
   
) j* s# }3 f% G8 u$ |4 q# ?; `$ [    (好比:表,视图,包,序列,等等),而这些object是属于用户的,8 P3 \' |$ _* z: v, a1 @
    , P. g+ w! O! Q3 ]1 T1 z. S
    属于一个用户的所有object就叫schema.
9 Z2 v5 J: E5 P% C  T  M   
+ m. G7 k4 }" i    如不美观你使用Oracle的企业打点器Enterprise Manager,你会发现琅缦沔的用户就叫schema.9 s4 O6 T$ z( g0 r( T% u. u# `
   
) B; Y5 M, L/ r9 }* C) F$ n    Schema 中辞意思是 方案。 "方案"只是 Oracle 一个分类,分歧用户有分歧的方案。
% i0 N1 ^3 x; q1 Y5 |/ d' f5 {    2 p7 T  G  r+ d# t4 D
    拿 DBA Studio 来说吧,在左边分了四大类:(例程,存储,平安,方案)* V6 O' q- z% A5 R# t/ N
    5 Q" p! [' X6 {0 j( Y! W- p' K
    例程: 是打点库的启动…之类的。 www.2cto.com
0 c7 m  \4 N9 X. ~0 ?6 U& Z   
' `, e, O+ s7 B8 _/ x: E9 U# _' \    存储: 打点表空间,数据文件之类。
( l& R. a# f. M: @/ D' d5 B0 C   
. Y  m* \; o, ], f) `    平安: 就是打点用户(密码,表空间分配…)
/ j5 ?5 T6 G: m" [9 f   
: m7 ]+ A, A( \0 u) B    方案: 有(表,视图,存储过程…),分歧用户有分歧的案。
3 q+ G8 V; t# A( @! f  Y) B3 T   
$ X- N2 t2 @% l& F/ v$ l    如: 在"方案"->选你的"用户名"之后,才会呈现用户名相关的表。) K/ Y+ X1 L9 ^: g1 ?
   
- L3 S( U) q/ t# r. \! q    ----------------------------两个不轻易理解的概念──user和schema
# s' X/ a& `' v/ C8 W  G+ G    " q7 b$ N" B1 G# G, ]
    user是节制权限的,而schema则是一个容器,非所有者如不美观需要访谒这个容器下的对象
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

Oracle辅导:oracle中的Schema分析

就需要在对象前面写上schema(owner)的名字,如不美观不想写而又没有建树synonym,此时可以经由过程alter session set current_schema=schema_name来改变当前session的schema从而在访谒对象时省去schema(owner);最终能否访谒对象仍是要看是否有访谒这个对象的权限而和schema无关。
- ?# e; n' ]" F' L. T! _( b   
  k: V* y; m( i    深切理解user和schema的区别:
5 d  R. e( ]) [8 [3 }   
. m% \4 T% X; S+ k7 X* v' t! c    user即Oracle中的用户,和所有系统的顶用户概念近似,用户所持有的是系统的权限及资本;$ Q$ u' e6 D2 V  s, W% P3 S
    5 E" d# p1 t0 o/ S# v0 ?
    而schema所涵盖的是各类对象,它包含了表、函数、包等等对象的"地址地",并不搜罗对他们的权限节制。
  X( y  T& D. J5 b    ! ^  X; O+ _" t' |
    好比一个房子,琅缦沔放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。; M* X; i+ e' P
    - f, s0 G4 p" \4 I' o5 _4 B
    你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以经由过程alter session的体例1 E  s8 [/ M0 i  e( ?+ ]
   
, B. R6 H- s! ^& |3 B3 l    进入别人的房子。
7 X# k2 f& _, z/ R" m/ _   
9 v! \# y5 `5 e3 D6 D    这个时辰,你可以看到别人房子里的家具(desc)。
, y- e4 t9 p$ q& }9 I   
6 w4 Y, e2 M# ]2 ~- Y( s    如不美观你没有出格指定的话,你所做的操作都是针对你当前地址房子中的工具。
/ J$ F! E8 \% s# e) E  x2 t. u2 h3 C    ) {+ ]3 [! q  B' K8 p- a! I* }
    至于你是否有权限使用(select)、挪动转移(update)或者拿走(delete)这些家具就看这个房子的
( q/ H, r1 k% h0 f' m9 c5 B: {) R    " B) u5 C% S8 r. k
    主人有没有给你这样的权限了,或者你是整个大喷香(DB)的老迈(DBA)。
+ _0 [! x8 Q  j+ y    7 `6 S9 {8 ]2 L9 ]" M9 U
    alter session set schema可以用来庖代synonyms.
$ e* d$ p6 H) X/ g! M    + c7 h: a- T! [
    如不美观你想挪用其他schema的对象(有权限的前提下),但并没有建synonym,' \3 A& Y+ Y( h( `) P3 j! q
    $ c7 W% q! ?9 H$ \5 _  d$ ]' ^( y
    同时又不想把其他schema名字放入代滤鱿脯就可以首先使用alter session set schema=.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 18:16 , Processed in 0.430711 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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