- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
 |
< ><FONT color=#f70909>关键字 <a href="http://hackbase.com/hacker" target="_blank" >数据库</A> 对象
1 X+ r5 s! Y/ S/ O/ D) A% ^原作者姓名 Fang</FONT> </P>1 x5 ]9 b. Z% D
< >SQL SERVER
/ p* K( J4 Z. \* ~, A取得<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>名的方法9 ]) x P' Q5 g0 v
系统存储过程sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helpdb</P>" `/ @& p: R9 C; B. {
< >或者</P>; _9 Y$ _" Q+ i2 U% }
< >USE master</P>( Z+ U, J& V6 d$ S: q
< >SELECT sysdb.name AS dbname, xlogin.name AS owner FROM sysdatabases AS sysdb LEFT JOIN sysxlogins AS xlogin ON sysdb.sid = xlogin.sid</P>
# s- y) @' E, j( M7 V* E< >
( r7 ] U. S5 ]: Rsp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helpdb获得的内容更准确:第二种方式无法获取Windows NT登陆用户。</P>/ ?' u7 x3 |# V; v$ s. S5 v
< >取得表的方法) e: @; e5 E) f9 o" E
系统存储过程</P>
8 Z2 c* O+ D7 s" ?( w) G< >USE xxx</P>9 P; G2 \6 [$ j
< >EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>help</P>5 l$ h# C7 R$ U) {, ~4 k4 Y/ V
< >或者</P>1 k' V9 l) j) \$ F
< >获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的用户表:</P>
9 s" `; w n, N& o. W# [% o% W& f< >USE DBAudit% Q8 l4 _! h2 b+ k
SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'U'</P>
, K" C% m6 Z' k: u# O8 Y/ d( ^< >获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的系统表:</P>
3 p% g! w: b0 @% c8 S5 v< >USE DBAudit
( N; R0 H2 Z6 e6 n) TSELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'S'</P>- b4 [2 f( Y1 B3 b" ^6 w0 R
< >或者统一使用:</P>0 r. v$ A9 {. K/ N% {7 h a h
< >USE DBAudit</P>
0 u T1 a( W, o9 I< >SELECT sysobjects.name AS name, sysusers.name AS owner, type, sysobjects.id AS id FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'U' OR type = 'S'</P>6 T& x0 k8 B7 V# W0 s
< >注:</P>7 `+ u; I& c- L& {
< >sysobjects中type字段类型解释:</P>
$ Y! h" b5 W) ]< >C = CHECK 约束</P>
1 X' W# Q+ V% v- c< >D = 默认值或 DEFAULT 约束</P># l6 K& F8 l5 U( ]7 t( b& a, k
< >F = FOREIGN KEY 约束</P>
/ }7 h K+ o+ i< >L = 日志</P>
8 v8 w) |: x6 z, Y. }. @% x% K< >FN = 标量函数</P>. `7 m+ Z0 L+ ~2 O# {% k2 n
< >IF = 内嵌表函数</P>
0 J$ l" s- V* c< > = 存储过程</P>
& a$ i& ?+ i/ J9 P6 c" K/ F< > K = PRIMARY KEY 约束(类型是 K)</P>1 h! v g3 U" w6 o3 F3 [
< >RF = 复制筛选存储过程</P>
+ I& T3 Q- Z1 ~2 U; W<P>S = 系统表</P>" s7 o. s4 L0 r8 w2 ]
<P>TF = 表函数</P>1 n2 O; @) [0 E; ?7 { Q
<P>TR = 触发器</P>
" e7 _+ y/ D4 q. J9 C<P>U = 用户表</P>1 K+ R$ y" d; B% J! t$ o) z
<P>UQ = UNIQUE 约束(类型是 K)</P>. y% F1 T$ U n
<P>V = 视图</P>0 ~) x; q7 ?0 v# C: e5 Y8 `+ a' a
<P>X = 扩展存储过程</P>3 K5 }2 p+ p' Q8 k9 \! Q+ P# G
<P>取得列的方法
# Z; {$ ]' |! m. l7 x8 e系统存储过程</P>% R L) M, G1 Z
<P>USE xxxDatabase</P>) l# P7 ~+ ?; J. U2 j
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>help xxxTable</P>; [/ j" U: X4 M5 o
<P>或者</P>3 {& }/ b- ]/ |: q
<P>USE xxxDatabase</P>
' q9 X# t& @& r, _, m, C7 w: |2 f<P>SELECT syscolumns.name AS name, systypes.name AS type FROM syscolumns LEFT JOIN systypes ON syscolumns.xtype = systypes.xtype WHERE syscolumns.id = xxxTableId</P>7 h& \7 ?4 W- X& P- w4 A1 S" k
<P>这两种方法都可以取得包括视图的列。</P>
0 S* h3 ]* o1 C: G" Y* W. Q& k* l* S' W<P>取得视图的方法6 `; P8 r. y( m% ^) ~
系统存储过程</P>
) g4 l7 I3 C8 H9 C<P>USE xxx</P>
9 h% H9 i7 y( c6 k3 k- [( D<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>help</P>
7 H0 b, b# c4 k7 s' @<P>或者</P>) P# s/ ?& ^1 Y D( j) Q; Z& Z# ?
<P>获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的视图:</P>
9 a5 ^! I7 J+ i* G" D% A' F* D- w<P>USE DBAudit</P>! L2 C6 d" p- F" c! j2 Y
<P>SELECT sysobjects.name AS name, sysusers.name AS owner FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'V' </P>
$ C9 e+ _& d' E! r7 |2 o' w<P>获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的视图的内容:</P>% e; | Q0 E- Y" o0 e4 r% V
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helptext xxxObject</P>
b- t4 ]; E8 I$ |<P>取得存储过程的方法
% \6 s/ M; |! w+ M系统存储过程</P>
2 b b8 i- V) G<P>USE xxx</P>2 S* A j$ W, ]; {9 n
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>help</P>
: S; @ k" l2 u, {! o9 q<P>或者</P> T) h1 B1 ?" ^+ ^; k
<P>获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的存储过程或者扩展存储过程:</P>
7 E/ P) w% ~9 X; R<P>USE DBAudit</P>9 _( d7 y4 k6 F& R; W
<P>SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'P' OR type = 'X'</P>
: }0 O; q" x u( p( y! S. P3 x<P>获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的存储过程或者扩展存储过程的内容:</P># {9 F% ^$ i& D
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helptext xxxObject</P>
2 c: e! K& n+ J<P>无法获取加密的存储过程。扩展存储过程只能得到dll程序名。</P>0 |3 J5 s8 P" u7 y
<P>取得函数的方法( V; L9 D; \4 b" ?6 P- ^8 e" b# f0 v9 G
系统存储过程</P>4 E: g8 H+ F) v& }2 I
<P>USE xxx</P>7 Q: v7 R5 h: _& r1 |; F9 {
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>help</P>
/ a5 L$ f6 `2 L5 J+ Z<P>或者</P>
/ {1 F8 G; V; H4 p<P>获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的各种函数(内嵌函数等):</P>* C! B! x" ]$ d2 P' N! J- v' B
<P>USE DBAudit</P>0 u! z' h3 b6 S* b9 x; {" p8 r, m
<P>SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'FN' OR type = 'IF' OR type = ‘TF'</P>" T) K* \* l Y7 n
<P>获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的函数的内容:</P>
2 h- @) {# s5 N2 u- l<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helptext xxxObject</P>/ {6 @! _+ ?0 d6 L! X
<P>只能获取用户定义的函数内容。</P>" M2 J& \" C K7 s1 b' O; j4 `
<P>取得触发器的方法
1 w' d! `: U( `系统存储过程</P>' J' O c2 D7 E
<P>USE xxx</P># [9 Y* s$ R8 _) }) |
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helptrigger xxxTable</P>
3 G8 k; d/ o, W: _8 [) I" D<P>或者</P>
! Z$ L5 i9 K( E1 o- c<P>获取指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>的表的触发器:</P>
4 b5 x! B6 U5 b: X; {+ b; v$ y<P>SELECT sysobj1.name AS name, sysusers.name AS owner FROM sysobjects AS sysobj1 LEFT JOIN sysobjects AS sysobj2 ON sysobj1.parent<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>obj = sysobj2.id LEFT JOIN sysusers ON sysobj1.uid = sysusers.uid WHERE sysobj1.type = 'TR'AND sysobj2.name = 'xxxTable'</P>. F% \3 s1 g2 }# u
<P>取得索引的方法, F1 L+ M1 w* Z5 z( e e
系统存储过程</P>7 ^+ W* h9 i2 b; H+ @
<P>USE xxx</P>: @( e0 {: A3 H
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helpindex xxxTable </P>! ?/ j' Q2 v& H7 U3 M2 `
<P>用户( `0 H9 D) E* X, w1 c& s
系统存储过程</P>
% \5 O% A8 w" U9 U$ K M<P>USE xxx</P>" j" p; f# U+ U* {
<P>EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helpuser</P>7 u0 } G) h/ t4 o( M
<P>角色# y: }/ ]. m7 W
系统存储过程</P>: m: n* } C) W, B0 h7 \
<P>USE xxx; P; L* O9 g( m+ x, i: C# _
EXEC sp<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>helprole</P>
2 d3 N" j1 i7 P3 [4 i
) i+ w" {4 ?1 v/ B l+ P( K' z: S<P>ORACLE
1 {8 V% r( ]# h3 H9 B4 F特殊6 p2 X5 N& v# K) I
Ø ORACLE只能连接特定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>,不能自动扫描<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>对象。</P>6 G) M7 K* ]) {- P# \6 _' e
<P>Ø ORACLE表必须用用户来区别,否则表可能重名。</P>- n) L+ O. @- j5 l# D6 g# D: X/ a5 M
<P>Ø ORACLE不能区别系统表或者是用户表,因此只能由管理员选择扫描某些特定用户的表。</P>8 H: N) _; r! B! ^, U- l; w
<P>取得<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>名的方法1 L0 [$ D3 I7 `$ W6 _
只能由用户指定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>,不能自动扫描到特定<a href="http://hackbase.com/hacker" target="_blank" >数据库</A><a href="http://vip.hackbase.com/" target="_blank" >服务</A>器上的所有<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>。</P>
+ z& P, t: p7 e<P>取得表的方法/ ?9 ~) a7 P/ N: y: ]" d* m
存储<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>表的系统表/视图主要有:</P>
4 P ?& r! e5 U9 Z* ^* ?4 @) m/ x<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TABLES</P>' S- ]: K/ b4 w8 Q$ A5 n
<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的对象以及相关的表。</P>6 D0 R1 |+ I7 U5 R" v
<P>ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TABLES</P>1 \* E% v9 V( [1 W
<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户可以访问的对象以及相关的表。</P>$ ^6 p. h1 l+ y# W! j* ^' x
<P>USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TABLES</P>- d- l1 A/ n! U3 I0 d# l+ c$ Y; h
<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中当前用户拥有的对象以及相关的表。</P>& M* V$ r+ l) u
<P>3 A, Z6 n7 ?3 R& h1 }' g
DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> TABLES</P>
, c6 V c6 x" w( e0 L<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有相关的表。</P>) d0 o- `& d! }5 a$ X* u
<P>ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> TABLES</P>
8 L- u! |5 s8 _" e<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户可以访问的相关的表。</P>
) C: d: b' K2 q- O4 ]<P>USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> TABLES</P>
' M& F* S! H* v+ v! s7 z1 M<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中当前用户拥有的相关的表。</P>
" v" t+ [0 b# d<P>
B! e% W2 V3 P. A因此,可以从ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TABLES中取得隶属于指定用户的表:</P>
: m6 A8 `& A$ } S! P, W1 A; H1 [+ \<P>SELECT TABLE<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TABLES WHERE OWNER = 'DBAUDIT';</P>
; S' x) f( Z4 _: m<P>取得隶属于指定表空间的表:</P>9 }+ E }! a! F* q' f, F
<P>SELECT TABLE<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TABLES WHERE TABLESPACE<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME = 'DBAUDIT';</P>' N& K6 b r8 w* |6 j4 U4 |
<P>
* z) K/ Z2 R1 M. ?7 ^ ~, @也可以不指定用户名,从而取得所有的表。</P># U% I9 n# v+ X& ]/ d, e
<P>SELECT TABLE<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TABLES;</P>
. U6 c% e- O9 V. Q: ?; v* W<P>取得列的方法! i! y4 g; w7 e# i9 c9 t: `% H* x1 Z
存储<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>表的列属性的系统表/视图主要有:</P>
' {( Y7 K7 o: ]( z$ t* ?<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TAB<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>COLUMNS
* i6 K$ ~& l) N8 e+ K2 \描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的表的列属性。
# w/ N% d3 s# xALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TAB<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>COLUMNS: N" A7 t' v. I4 V4 O
描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户可以访问的表的列属性。
^2 z |9 R, {9 [8 ?USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TAB<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>COLUMNS! E- A0 X: H% q
描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中当前用户拥有的表的列属性。6 \4 ~* i9 `: R; B
ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TAB<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>COLS</P>
& X; Z, t1 E/ i/ `) U5 |<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户可以访问的表的列属性。</P>
j0 l% O" a, F+ I1 } ?<P>
0 ?% Q- N. h( m( E( [3 i+ R% N因此,可以从ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TAB<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>COLUMNS中取得隶属于指定用户的表:
1 x' v1 T7 C4 O4 \4 HSELECT COLUMN<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TAB<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>COLUMNS WHERE TABLE<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME = 'TASK' AND OWNER = 'DBAUDIT';</P>* v& W& S) d* T2 ?% V4 ~# v, d
<P>取得视图的方法
* v, o8 P8 \ d8 ]3 G7 C存储<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>视图的系统表/视图主要有:</P>$ M% F$ U9 |/ D+ R
<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>VIEWS
0 Q1 `* M4 O( F7 v0 z描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的视图的属性。( R2 J) d h( }3 x
ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>VIEWS8 X" ~% b7 V' V- M5 W+ }
描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户可以访问的视图的属性。* X" C5 t! n9 q4 k$ q" y$ v* l0 U1 O+ Z
USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>VIEWS</P>
9 e, `6 e( V8 |4 a$ ^1 e0 ^<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的当前用户拥有视图的属性。</P>) P' p% W" T% m) J j
<P>
2 d; }& Z# ~ z1 `# |因此,可以从ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>VIEWS中取得隶属于指定用户的视图:
% W, a$ m* X9 e6 Y+ E, B6 jSELECT VIEW<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>VIEWS WHERE OWNER = 'DBAUDIT';</P>) ~. u9 A8 ?5 L2 V N4 i$ I
<P>取得存储过程的方法5 H# x* Y1 k( o5 `3 j
存储系统对象的系统表/视图有:</P>
) R x$ Y; ]8 ]% N% N<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS</P>
0 A$ A4 y, O. r# t! D<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的对象。</P>! h' K4 j6 Y+ `/ W4 m& d# d2 ?( h. o3 u
<P>ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS
! v8 i1 h" A% S( P/ e9 v描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的可以访问的对象。, w' w5 e$ L: N% d8 R
USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS</P>9 x* d2 f) b- l% n
<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的当前用户拥有的对象。</P> X" x# _6 {; j s
<P>SYS<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS</P>
6 y4 }, s) O% A3 \- I) }2 [6 U: {<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的系统对象。?</P>% V; J" q4 q/ F* t% m* g' F6 y
<P>* k, X, ]) a; P
对象类型有:</P>
" B+ k" J# r, f( V3 @' K<P>CONSUMER GROUP</P>
, Q( ]4 A! J3 E* j/ E4 l9 ~<P>CONTEXT</P>
! q" o) g2 k% R+ u) S; f( V8 f7 X8 R; o<P>DIRECTORY</P>
- \3 S. C/ B+ z w8 S<P>FUNCTION</P>: h/ c. l' Y3 i$ _/ V, ^
<P>INDEX</P>! {5 q6 k9 Q" a
<P>INDEX PARTITION</P>
- [& }$ u( s; U& [6 I, ^% s6 \, w<P>INDEXTYPE</P>
9 _) U; J9 j2 e6 j! b) @8 R<P>JAVA CLASS</P>) [, k1 ]. N& e( E& j5 h( R* J: s6 O
<P>JAVA DATA</P>
8 h7 U r+ I' V) @1 I9 g& R2 e<P>JAVA RESOURCE</P>1 D. \, f6 ~7 p9 H$ e. H7 x- \3 ~
<P>JAVA SOURCE</P>: w5 {( v% {! e4 W! d
<P>LIBRARY</P>, E- P4 L# _! @4 g" g9 ]3 H* ^2 k5 G
<P>LOB</P>
8 F! O& n5 W2 J! z0 H2 m N<P>MATERIALIZED VIEW</P>
% X- J$ @5 n$ o q, ~1 R- s- P0 ?<P>OPERATOR</P>
2 ]0 v1 a0 T$ R. Q# C) z$ b# g" s<P>PACKAGE</P>
1 E+ n# O# v9 M7 |; t<P>PACKAGE BODY</P>/ x* N1 c3 I9 J7 Z3 P
<P>PROCEDURE</P>
" `! D$ Y4 v: R. Y9 S<P>QUEUE</P>5 K B7 }! Z4 o
<P>SEQUENCE</P>
4 W# F/ L0 t7 \* x9 \. N<P>SYNONYM</P>% W% B* I3 n- ~; g) {
<P>TABLE</P>
o; r8 u% b; v, z1 H<P>TABLE PARTITION</P>
, J7 M% k6 m3 W8 R8 b# J<P>TRIGGER</P>
5 @5 ^" F% }9 [( l0 T0 n<P>TYPE</P>% U8 @- G( u5 ^: H2 T, N. l
<P>TYPE BODY</P>
7 _5 h5 |& S8 A6 a8 s3 g<P>VIEW</P>
9 O% V) z+ y. Y, Y0 I3 Z<P>
6 u0 |! q' @6 Z# o {7 T因此,取得存储过程可以用:</P>" o% I3 `1 d: X' V4 Z. c
<P>SELECT OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS WHERE OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TYPE = 'PROCEDURE';</P>
) D6 r5 `- m) h+ r2 h$ i! z<P>取得隶属于某个用户的存储过程可以用:</P>
3 I8 [5 s2 `6 T4 j4 p+ f5 d<P>SELECT OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS WHERE OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TYPE = 'PROCEDURE' AND OWNER = ‘DBAUDIT';</P>- I. |$ X6 X7 B) |
<P>
, @$ E% T' ]6 o同样,取得其他的对象也可以用这个方法,包括表,视图等。</P>3 h* _/ n! K, L4 F
<P>取得存储过程内容的方法# b/ o0 q5 O* ?$ x0 N
对象类型为类型、类型体、过程、函数、包、包体,JAVA源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>的所有对象的源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>都存储在几个系统表/视图中:</P>4 g' e. l0 [! y0 O R5 T
<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>SOURCE</P>; h9 a+ E- h0 C2 @
<P>存储所有<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>对象的源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>。</P>' |& ?5 t0 K) o! Z
<P>ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>SOURCE- J8 r7 S1 @9 i
存储所有可以访问的<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>对象的源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>。
_% J( W) i! pUSER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>SOURCE</P>, R9 s* I6 r/ k A
<P>存储所有当前用户拥有的<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>对象的源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>。</P>* C7 A8 h% w2 Q& R
<P>/ r: \, U! J, m5 g
因此,取得存储过程源<a href="http://hackbase.com/hacker" target="_blank" >代码</A>的方法:</P>; u5 v; u% _4 v
<P>SELECT TEXT FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>SOURCE WHERE NAME = ‘XXX' AND TYPE = ‘PROCEDURE';</P>( D5 E8 i& V/ b
<P>取得函数的方法/ O7 V8 q8 B! D7 \! T6 M
同上,取得函数可以用:</P>+ i3 g' a2 t7 f, g X4 V5 J
<P>SELECT OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS WHERE OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TYPE = 'FUNCTION';</P>
) r! T f# j2 e/ G. D: d<P>取得隶属于某个用户的函数可以用:</P>4 W( Y" Z W& i: A
<P>SELECT OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OBJECTS WHERE OBJECT<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TYPE = 'FUNCTION' AND OWNER = 'DBAUDIT';</P>
+ k7 c' q7 n+ m: O5 w<P>( Z* x4 _- c5 l/ d5 b" \2 V
取得函数内容可以用:</P>
/ m: v! t) ?. d9 p8 M<P>SELECT TEXT FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>SOURCE WHERE NAME = 'XXX' AND TYPE = 'FUNCTION';</P>( r# J* |/ o# ]* o, D3 e8 i
<P>取得触发器的方法
9 U6 j/ m% x( W8 G1 p8 G. T存储<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>触发器的系统表/视图主要有:</P>
1 o; Y) Y( l) c: Y5 J( m& @4 u9 ~<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TRIGGERS
. Z- T& F2 ~9 W& R: j. L% F! b1 z描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的触发器的属性。; |! q0 I) @0 t% T$ W3 z
ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> TRIGGERS
( x$ u8 y5 M# T7 A$ }描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户可以访问的触发器的属性。+ l! n5 e: p* @- n
USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> TRIGGERS</P>
7 t- i3 b2 J: N<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的当前用户拥有触发器的属性。</P>
" a- n$ O% z) J# B, F+ o8 H<P>
# o$ {5 l1 x/ n6 _8 ^3 N+ m3 g- C' P因此,可以从ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> TRIGGERS中取得隶属于指定用户的触发器:4 ]/ o7 z+ P3 [( S4 \+ A, ]
SELECT TRIGGER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TRIGGERS WHERE OWNER = 'DBAUDIT';</P>
$ u# g1 X; P+ S. R8 \7 t7 K<P>+ X9 p( c6 B0 Y8 N& W
取得触发器内容的方法:</P>
, Y! @8 [! M7 J* x2 W3 P<P>SELECT TRIGGER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>BODY FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>TRIGGERS WHERE TRIGGER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME = 'XXX';</P>1 z0 k+ x' a% e3 E) W
<P>取得索引的方法
% _3 J- p( A) F存储<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>索引的系统表/视图主要有:</P>
5 R8 P4 i$ B; B6 w<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>INDEXES5 i. G! }) o7 o
描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的索引的属性。" D( j/ q d/ M; J, X0 i, C
ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> INDEXES
. m! O1 ^4 ~- z$ T描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户可以访问的索引的属性。; E, ~6 R. r- k) _( i
USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> INDEXES</P>
0 G4 m: g# J! s<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的当前用户拥有索引的属性。</P>/ S# m/ L" W3 f% |$ x
<P>& Z5 `0 S4 {3 _/ e" h& J% ]
因此,可以从ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A> INDEXES中取得隶属于指定用户的索引:4 y4 }' |& J# {. r* E
SELECT INDEX<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME,TABLE<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>INDEXES WHERE OWNER = 'DBAUDIT';</P>
2 \- q) F9 d ]0 _) m4 }<P>0 }$ Q0 }# U6 W% ^( {* J" ]
取得索引相关的列的方法:</P>3 S5 `& S8 i7 m7 @. @, X
<P>SELECT COLUMN<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>IND<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>COLUMNS WHERE INDEX<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>NAME = 'XXX' AND TABLE<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>OWNER = 'DBAUDIT';</P>& c5 m2 ?* h* t5 ~
<P>用户# m/ A r+ a1 |; [3 R! |
存储<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>用户的系统表/视图主要有:</P>
# r6 y+ \( F3 x B# K4 b- M<P>DBA<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>USERS
! W! p3 b5 t3 k1 x描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户的属性。
" r/ \: { F v) ` _+ ^ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>USERS
, l+ ?& L0 W+ P) s) s4 |2 S! S; j描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中所有的用户的属性。* w9 y* T% C! |" {: J
USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>USERS</P>2 _8 q- Z2 M5 ]4 S8 x
<P>描述<a href="http://hackbase.com/hacker" target="_blank" >数据库</A>中当前用户的属性。</P>
* r1 x1 ?/ S# D+ C2 T1 Z<P>9 \* P" R6 A, ~% K" D# `
因此,可以从ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>USERS中取得用户:7 X( k# P1 L& ^% c$ i& U
SELECT USER<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>ID, USERNAME FROM SYS.ALL<a href="http://hackbase.com/hacker/tutorial/200502019779.htm#" target="_blank" >_</A>USERS;</P> |
zan
|