a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 133|回复: 1

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

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
1. 如何查看ORACLE的隐含参数?  
! P$ r. n4 U# f: _ORACLE的显式参数,除了在INIT.ORA文件中定义的外,在svrmgrl中用"show parameter *",可以显示。但ORACLE还有一些参数是以“_”,开头的。如我们非常熟悉的“_offline_rollback_segments”等。  : `/ N2 U) s3 z

) Y; D7 P$ c, R9 F# T5 ^这些参数可在sys.x$ksppi表中查出。  7 _" s" z  V/ B2 N9 O. M
* U( o- p9 `7 n" J- l* e! E
语句:“select ksppinm from x$ksppi where substr(ksppinm,1,1)=’_’; ”  & X8 s; w' t) I" Z( L1 Z7 _( b
9 h8 i* ?9 A$ p; Z/ Q1 |
2. 如何查看安装了哪些ORACLE组件?  
) g# U0 q( b6 K; H' J4 f5 |* A8 y) h9 X# g0 ]$ x. P* T
进入${ORACLE_HOME}/orainst/,运行./inspdver,显示安装组件和版本号。  
6 j/ w/ K( \- C
0 v, Y7 a. S8 c! z9 P8 y6 E6 @3. 如何查看ORACLE所占用共享内存的大小?  : o, ^" r6 G/ v6 z1 ]- k% H

. E& Q2 I: C% I1 |+ S" C6 Q! v可用UNIX命令“ipcs”查看共享内存的起始地址、信号量、消息队列。  1 t; v- U$ X+ i) H

4 `' u9 F9 ^" c3 K/ _( O: T在svrmgrl下,用“oradebug ipc”,可看出ORACLE占用共享内存的分段和大小。  , C2 O& f6 U1 Y; O. s8 d
, D& S% p2 g3 [  t2 j  K$ ?
example:  
/ y8 i3 ]: B0 E& q1 \! u5 {- j) D5 T( j$ a% g) a7 _
SVRMGR> oradebug ipc  5 \7 u( n, Z" x/ z- a1 i
-------------- Shared memory --------------  
6 s4 N/ t; R% c& \9 w) C
8 P" U: H: f3 ?$ USeg Id Address Size  2 @( W* _+ C5 s- f" ^9 `  B
1153 7fe000 784  & U$ G- L( q  i. Y/ [. S7 S6 u3 p$ W
1154 800000 419430400  
7 p  P7 ]1 F% M1155 19800000 67108864  * ]$ p* |1 L. \- d5 ^$ W+ W

6 I4 c) B' ]; W$ j6 ]4. 如何查看当前SQL*PLUS用户的sid和serial#?  / O# t$ }- m3 S

( k5 ?# b# u1 Y9 ~9 S4 d  e在SQL*PLUS下,运行:  / G1 c" q2 J+ W* K. q3 Q: X
5 E7 J5 Y0 Y; H6 F+ S
“select sid, serial#, status from v$session  % B, J2 `% c4 t# X4 X! o
( J8 O! l0 Y7 ?7 |) `) y: A' x
where audsid=userenv(’sessionid’);”  
+ [( M  v% p4 D2 a' C1 S0 s+ ~
5. 如何查看当前数据库的字符集?  
5 @: U3 C8 _2 {4 m" ^
" B& N. a; `2 C+ k+ x" \在SQL*PLUS下,运行:  , e' a/ |  B/ p( a3 \: S
/ A6 t) _, `9 q+ J$ M/ N2 L
“select userenv(’language’) from dual;”  
- O( ^/ Y5 D. `* a& X9 E  |! p+ @+ U, Y: |- f/ j/ B
或:  ) v& q' l2 f- v1 s  R* T3 t

' j1 x: `3 M3 C! |“select userenv(’lang’) from dual;”
回复

使用道具 举报

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

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

6. 如何查看数据库中某用户,正在运行什么SQL语句?  
; K" v& D) F! L* X; C9 b
) T+ Q# X( o/ O! \7 s根据MACHINE、USERNAME或SID、SERIAL#,连接表V$SESSION和V$SQLTEXT,可查出。    w& b+ x4 A/ `* O0 r  @* B
0 Z) }0 D; i  b( e# S# q3 d- R
SQL*PLUS语句:  
+ x6 P6 p# j, h+ z3 v6 I. c4 p& i! Z" D$ O0 F
“SELECT SQL_TEXT FROM V$SQL_TEXT T, V$SESSION S WHERE T.ADDRESS=S.SQL_ADDRESS  
) h8 K1 t7 Z# m# y( `
, p5 l1 M8 x! k( P6 l7 aAND T.HASH_VALUE=S.SQL_HASH_VALUE  5 S  ?2 d) z: g

. C6 ]* M. a+ A% SAND S.MACHINE=’XXXXX’ OR USERNAME=’XXXXX’ -- 查看某主机名,或用户名  2 g5 X: d" M/ N& I8 g9 ~, u; B

1 }; f6 U4 O0 c/”  
6 r% l. F! [$ T" a) C( L* Y4 l, p
7. 如何删除表中的重复记录?  : Z+ z/ i! v' _) J" U+ K" x+ N
3 j  b4 U* I( j1 y$ x$ s
例句:  
$ R% C) g& T4 W/ X" S& m# d1 r' Y
/ I: s7 b( I, ~3 H( k9 v, B! K, JDELETE  * B6 }1 s6 D/ p8 r5 j- ^
FROM table_name a    s4 E3 }$ {/ m: O7 _! k0 X$ l0 c
WHERE rowid > ( SELECT min(rowid)  
6 Z8 T) Q& L. A. L& Y6 \( Y1 DFROM table_name b  
, T: @: w* n1 F. I0 W) r' IWHERE b.pk_column_1 = a.pk_column_1  
/ ]9 d* p& J) z/ J$ tand b.pk_column_2 = a.pk_column_2 );  
4 n( y) w" Q  X% b( g; O+ \+ `
- d6 ]8 Q9 h$ N' `* R9 V2 l# r8. 手工临时强制改变服务器字符集  " }) i! W* z7 I9 F1 s# l& y
6 E1 ^/ ^$ G4 g! ^
以sys或system登录系统,sql*plus运行:“create database character set us7ascii;".  
. D9 A  V. P: G0 Q& S有以下错误提示:  
" z; U6 V" W9 p; g0 S$ {: }! Z* create database character set US7ASCII  
5 T  p# r1 [3 pERROR at line 1:  
) Y/ N+ u+ K5 YORA-01031: insufficient privileges  / P$ s& [1 {; b, u, S- N
实际上,看v$nls_parameters,字符集已更改成功。但重启数据库后,数据库字符集又变回原来的了。  ' R4 x; ^# }: s6 ~
该命令可用于临时的不同字符集服务器之间数据倒换之用。  0 ~: G7 e9 e  [8 |# F
8 I9 s- e. C# D/ i
9. 怎样查询每个instance分配的PCM锁的数目  
2 M) z! i3 f2 P0 n( z/ u$ _! a4 v. b+ ~( x, {1 f# U; V8 W1 o
用以下命令:  
3 i7 P$ Y0 @5 b' f( m& {6 k6 b' j1 t1 l) ?+ N! R/ |  y
select count(*) "Number of hashed PCM locks" from v$lock_element where bitand(flags,4)0  ) L2 D) H, M- g! ?$ B* u

; \* T2 u1 ^# \1 u( R/ h% k/  
! I2 K/ K2 w$ `( d. V5 h- Y8 T
" W* y# O$ S' l1 nselect count(*) "Number of fine grain PCM locks" from v$lock_element  
" a2 U; V8 Y/ G. N8 Y2 x5 {) j8 ^5 ~9 b, N: G9 I% b
where bitand(flags,4)=0  
. g$ s5 |4 v* R; u0 ~- p  J
9 ]9 z9 S" {) l2 `1 _- _  O/  4 D; `' `8 K6 L& J$ L; z

3 c8 `% {  f6 ]" k3 K% V1 A10. 怎么判断当前正在使用何种SQL优化方式?  2 n  v% b$ X  B* _; F
$ }6 b+ l- R/ K  L1 H* m
用explain plan产生EXPLAIN PLAN,检查PLAN_TABLE中ID=0的POSITION列的值。  
$ N* K5 S+ X. c6 s/ S$ `9 V
. L8 v- P/ z( u4 ue.g.  , D, `& |8 G+ i$ T8 h' U  C! Y0 x

- |, L! f$ {* Q$ b) c4 t! Xselect decode(nvl(position,-1),-1,’RBO’,1,’CBO’) from plan_table where id=0  
3 X3 l  m( E# Z6 d; \, g$ o6 M
* \+ J! b- X2 R7 U; c# b/  , |' R, h; r. [  p4 u+ o
. a7 }$ ]* ]2 F' X* E8 m! W
11. 做EXPORT时,能否将DUMP文件分成多个?  
/ W. s/ E' S$ ?; d9 a
( c8 R7 x" Q6 q3 BORACLE8I中EXP增加了一个参数FILESIZE,可将一个文件分成多个:  
2 [# {. P5 `; Y: Y+ g2 p6 N1 x* i; W
EXP SCOTT/TIGER FILE=(ORDER_1.DMP,ORDER_2.DMP,ORDER_3.DMP) FILESIZE=1G TABLES=ORDER;  
8 [; _+ @5 u  _
# i1 L6 k! z; a0 e$ Y% C8 r其他版本的ORACLE在UNIX下可利用管道和split分割:  + A8 u  o9 u7 V" T. f& E
+ ]; a8 @# p/ E- W, Q
mknod pipe p  $ g- x' B; O: q( {% h0 N* s' b- x. y
. |2 R0 A1 ^/ l; [
split -b 2048m pipe order & #将文件分割成,每个2GB大小的,以order为前缀的文件:  
4 p+ ~& V" c+ |7 `- F/ }0 M9 I* @$ W1 f, R2 E' }# ]
#orderaa,orderab,orderac,... 并将该进程放在后台。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 17:31 , Processed in 0.170559 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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