6. 如何查看数据库中某用户,正在运行什么SQL语句? 8 W" O J) {4 x5 i
6 o# s# k; A9 U" F5 ?: i4 Z
根据MACHINE、USERNAME或SID、SERIAL#,连接表V$SESSION和V$SQLTEXT,可查出。
; Q6 k7 {# [$ J$ n. F
$ S+ j4 f; W! Q: E, \2 e( B3 gSQL*PLUS语句:
7 h$ l9 R' M2 d# s) ~
" r8 c- D X: e. m8 ~“SELECT SQL_TEXT FROM V$SQL_TEXT T, V$SESSION S WHERE T.ADDRESS=S.SQL_ADDRESS F" c- T$ J* W' H3 H
! p* K3 s( O7 V0 h0 Z2 NAND T.HASH_VALUE=S.SQL_HASH_VALUE ( u* T1 b% _: J( ~
0 Y7 ]/ o* b+ p0 `6 JAND S.MACHINE=’XXXXX’ OR USERNAME=’XXXXX’ -- 查看某主机名,或用户名
9 D, J3 S( k5 T' {" M* L a0 o6 r; d
/”
8 Q( F' P: v* j6 H1 g3 C0 P9 F/ L" ?) E8 P0 w; S/ P& o
7. 如何删除表中的重复记录? # y v6 q# `* v
" W s( V/ p6 L4 g8 a& n3 g9 B7 N
例句: $ j; A& m' J6 j# X
, `7 P; y, C O/ R4 ?# V
DELETE
1 f) Y6 e2 X/ p1 ] VFROM table_name a
* b9 ~5 D# }( AWHERE rowid > ( SELECT min(rowid) 4 ]3 l* Y0 N+ T
FROM table_name b 7 j0 l; q( m! i) O- f; Y
WHERE b.pk_column_1 = a.pk_column_1
6 e; W4 H7 l4 J4 ~5 ^4 H, C: Band b.pk_column_2 = a.pk_column_2 );
# M0 B' f" W% H2 V$ o8 N: b1 }2 F8 A) B2 V2 ^3 L! L
8. 手工临时强制改变服务器字符集
( ~4 l9 k ~; D; E2 K, b% G
7 L" {: t+ M" Y* }. D, |以sys或system登录系统,sql*plus运行:“create database character set us7ascii;".
/ a: G$ C X" @有以下错误提示:
3 c7 X% |2 P% C! ~7 B7 g* create database character set US7ASCII 5 l2 J* N5 e' \/ { l8 l
ERROR at line 1: 7 K$ ?; i" S% z8 b; }# E9 R; w
ORA-01031: insufficient privileges
8 z+ S7 x( c. C5 D7 a& i实际上,看v$nls_parameters,字符集已更改成功。但重启数据库后,数据库字符集又变回原来的了。 V5 v2 T9 T" ~+ f) [0 y# q# F
该命令可用于临时的不同字符集服务器之间数据倒换之用。 : b/ w& E0 t0 E1 ]
- m) l- W/ V' [9. 怎样查询每个instance分配的PCM锁的数目 : h9 g( T6 [/ B
' O6 w0 L0 a6 w" C r# ~用以下命令: 5 n+ `' h* r _6 s' w3 `
6 ^3 |* R8 h) l+ `$ J0 \, d
select count(*) "Number of hashed PCM locks" from v$lock_element where bitand(flags,4)0
5 C0 Z: l9 H- z: P. S# Z, K6 _* t7 }9 ?% ~
/
. f4 `5 }3 Q$ d1 T) P; y9 Y5 q. H/ x/ \9 }
select count(*) "Number of fine grain PCM locks" from v$lock_element ' B. F* p: T8 p+ v& [" W
2 n2 A. t) Q; A' i; Xwhere bitand(flags,4)=0 9 e( j7 L$ d3 D; W9 a
1 w/ z+ y; \" y" e
/
! _" r5 U+ c* F2 H& E
7 K# z# b/ L& k$ s10. 怎么判断当前正在使用何种SQL优化方式?
$ x+ V# k( K+ {( h- ]4 M" g9 l) `
用explain plan产生EXPLAIN PLAN,检查PLAN_TABLE中ID=0的POSITION列的值。 * D6 L) z( h# I2 U* N) W- h! n
1 B3 H+ S Y* p, {3 Q, W/ X% Re.g.
4 a; l h7 o2 f4 s5 p3 z; i( r+ a( ^2 Z
select decode(nvl(position,-1),-1,’RBO’,1,’CBO’) from plan_table where id=0
/ Y$ U$ ~. m u p/ f9 [
. h0 V' v. p) X$ a1 [+ W+ `/
! Z$ s! ~$ y' H: P1 D
: E6 v s& Q8 F7 ?6 Y11. 做EXPORT时,能否将DUMP文件分成多个?
/ N2 y# y. s9 k7 ~ `- R* H. I3 ]$ m9 y/ ~
ORACLE8I中EXP增加了一个参数FILESIZE,可将一个文件分成多个: 5 J8 e* Z" N6 B( h* `% _7 Q+ }
! v0 ^3 L5 N( @$ O' {5 z. {EXP SCOTT/TIGER FILE=(ORDER_1.DMP,ORDER_2.DMP,ORDER_3.DMP) FILESIZE=1G TABLES=ORDER; 7 @) Y( T! N4 ~6 E; f
* w( k# l6 y& x8 I# [其他版本的ORACLE在UNIX下可利用管道和split分割: 8 x9 Q6 W4 M) Q' }" O" _( S
- ^; _# T$ v6 |4 D T, h, U
mknod pipe p
' I. E) X, F" H8 Z; Q& o0 w, U$ R# [2 i6 W
split -b 2048m pipe order & #将文件分割成,每个2GB大小的,以order为前缀的文件:
; k/ f1 v C% `( G
3 E6 V6 w( V) c9 C* a#orderaa,orderab,orderac,... 并将该进程放在后台。 |