a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 134|回复: 1

[考试辅导] Oracle应用技术:Oracle技巧和脚本

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
1. 如何查看ORACLE的隐含参数?  " d) W* X% s0 r7 F  {  w$ w
ORACLE的显式参数,除了在INIT.ORA文件中定义的外,在svrmgrl中用"show parameter *",可以显示。但ORACLE还有一些参数是以“_”,开头的。如我们非常熟悉的“_offline_rollback_segments”等。  
2 n1 ~" p4 I7 q8 I" A- Q, N2 [
3 m1 ~, C9 @5 ^4 g& |3 `4 d8 m这些参数可在sys.x$ksppi表中查出。  " H9 f0 [+ b7 p9 p# w. u0 U6 x
# O2 T" D- U4 i/ b- C3 h
语句:“select ksppinm from x$ksppi where substr(ksppinm,1,1)=’_’; ”  # E! b  N9 k, T* D" j8 n. m$ E- Q

2 ]4 ?. k) K9 H2 N  z8 q( |2. 如何查看安装了哪些ORACLE组件?  ! L7 @2 z  q2 Q. B2 }, d- s7 ^
5 o1 B9 T3 M7 q, I6 E8 z! T- u
进入${ORACLE_HOME}/orainst/,运行./inspdver,显示安装组件和版本号。  
% b" \  d4 j  C: ?) [  w
, ^" a( t; w0 ?' ]6 W' Q! d( W! u3. 如何查看ORACLE所占用共享内存的大小?  
8 A) q* Z' ~% t4 l1 f8 B
% @, n, T/ P/ `+ x# y可用UNIX命令“ipcs”查看共享内存的起始地址、信号量、消息队列。  4 [0 x2 f7 _" f; i+ }: I
4 K/ g) l: c' H8 O% r
在svrmgrl下,用“oradebug ipc”,可看出ORACLE占用共享内存的分段和大小。  9 r% z: c% A. I" X4 y6 @0 s, L

4 d' N5 O  ~7 w- s" V, f- Fexample:  1 ]2 t0 R0 X. c* `$ e7 z: V
1 N( h7 H: a$ _4 z$ h6 c
SVRMGR> oradebug ipc  8 W& {% ^8 i  E' I! q6 B) e4 u
-------------- Shared memory --------------  
. v; r- r' e. I) c
1 U6 I8 l" m5 j5 q5 Q" I" N- A0 uSeg Id Address Size  - M! O0 X6 a) ]/ z  N0 X' B
1153 7fe000 784  + z0 d1 x1 t/ I1 K, p! ^
1154 800000 419430400  
- Q" w7 A# m# E+ U1155 19800000 67108864  
8 Z& x6 u$ J2 l' a7 O6 H  s/ r* |. O! W+ l% D" m: G* \
4. 如何查看当前SQL*PLUS用户的sid和serial#?  
2 a1 T8 ]& @& U/ Q* w- W" w) ]+ \4 t. g, F/ C
在SQL*PLUS下,运行:  
: i4 \: o4 V. ]0 h$ ~
1 d9 Y; q5 X) o# B- H8 X“select sid, serial#, status from v$session  
" D, l$ Z$ T  O/ G1 r# U/ f! c, k- A6 x% n+ c& \* E
where audsid=userenv(’sessionid’);”  7 q. W1 s: y2 u* \

5 X) N% N! a3 g6 G+ l5. 如何查看当前数据库的字符集?  / X0 @4 z( w* R' ~: |
0 o% c" d( P0 X: }2 ]* D# h* ?- X
在SQL*PLUS下,运行:  # d3 h- E9 c! L( K% V4 K3 V3 q  ^7 R
* ]& g6 s6 c8 x2 o& i% c1 N6 H/ Y# M- j
“select userenv(’language’) from dual;”  
& a6 W5 D6 T5 a
5 L) ?  q- b. E' \或:  5 A" K/ T# P! o& T) h' }: }% ]5 y
( h/ e+ ~% A" @3 t
“select userenv(’lang’) from dual;”
回复

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:20 | 显示全部楼层

Oracle应用技术:Oracle技巧和脚本

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,... 并将该进程放在后台。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 11:20 , Processed in 0.487198 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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