a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 161|回复: 1

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

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
1. 如何查看ORACLE的隐含参数?  
- W, V3 i4 q. U- HORACLE的显式参数,除了在INIT.ORA文件中定义的外,在svrmgrl中用"show parameter *",可以显示。但ORACLE还有一些参数是以“_”,开头的。如我们非常熟悉的“_offline_rollback_segments”等。  / X( F% `/ ?6 v  v' \. r* C

; f$ ]* |, ~) T9 w这些参数可在sys.x$ksppi表中查出。  ' \5 k( w: i4 Y
) x6 I% n$ C2 S" D9 n4 B' W8 F
语句:“select ksppinm from x$ksppi where substr(ksppinm,1,1)=’_’; ”  
! L4 |! q5 t( t! n! ?, `3 o8 j+ ~& o; |9 ?. Y
2. 如何查看安装了哪些ORACLE组件?  
' n6 S0 ~: Y% b% N9 Q1 x( I: i4 A7 g4 c, G
进入${ORACLE_HOME}/orainst/,运行./inspdver,显示安装组件和版本号。  
; T4 F1 o* h* E0 W# U6 m
+ |) Z! s# S  i3. 如何查看ORACLE所占用共享内存的大小?  & K6 p% W# ]) D4 B/ `! A6 E& S
; [- F% f8 C2 m, n, X; p
可用UNIX命令“ipcs”查看共享内存的起始地址、信号量、消息队列。  
3 ~; x7 B/ A7 [3 q4 u& N* ?" o( {" [" p1 }# h. b0 O
在svrmgrl下,用“oradebug ipc”,可看出ORACLE占用共享内存的分段和大小。  
- d0 B/ M' w: I/ m( W: X5 ~
2 r5 \  x0 ?3 ]0 hexample:  
2 s+ l4 g- \( P/ l% o& s' `. X
) Q' e4 T" }  A$ dSVRMGR> oradebug ipc  ) c# l& f; i/ C' u. h5 c% ~# C) U6 K
-------------- Shared memory --------------    G7 m- _5 N5 ^+ S* C' e0 i( V( v
$ {1 f$ x" `# ]
Seg Id Address Size  6 J0 s# _9 ], L& ?7 }3 c
1153 7fe000 784  
0 |$ ^' f8 w: a% s# C1154 800000 419430400  
9 Y4 }1 p9 c, M% G$ f1155 19800000 67108864  
) q$ l+ L" D. c. V" U7 z% z. k  L/ ]2 ]+ s: H7 c0 }& g; Z: k& p
4. 如何查看当前SQL*PLUS用户的sid和serial#?  
+ O- `6 X, N, m7 C4 W% P
$ i. \/ s& z& I( V5 S" q/ i$ [& p在SQL*PLUS下,运行:  ' q% {. Z& {% `5 U" W! m

/ g( T4 y& c' k5 E7 A% _“select sid, serial#, status from v$session  
5 _1 `9 f' ?/ G* j# n  j% h+ l6 q+ b
% Y3 X3 W" R! s+ wwhere audsid=userenv(’sessionid’);”  
/ j; _* v1 }7 y( S: j! ]/ C- [# E9 `
5. 如何查看当前数据库的字符集?  4 _# [2 U* ~  q( O

! l: i' ^. O+ L' H# g9 m9 e在SQL*PLUS下,运行:  9 k1 \' K4 f* f8 ^0 j! l

! I- u7 c- V% Q; K; ~“select userenv(’language’) from dual;”  / E* i( n4 q, V7 @+ ]$ D1 J( M
: D# O) `6 N8 W/ I/ C7 h6 Z9 h
或:  + y1 O' w* P% |# j) v+ m

9 H( X! U  J/ A: E“select userenv(’lang’) from dual;”
回复

使用道具 举报

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

应用技术:Oracle技术和脚本

6. 如何查看数据库中某用户,正在运行什么SQL语句?  
7 t( q# s6 ]$ X0 \0 U7 a# d4 c7 \5 f! ?) z$ m3 V; m
根据MACHINE、USERNAME或SID、SERIAL#,连接表V$SESSION和V$SQLTEXT,可查出。  
; [' Z7 Z7 ^# e
! e* N/ c0 B/ Y: ]; c) p0 t" |SQL*PLUS语句:  - `) g  z7 v8 s8 ^1 c# }3 e& K) Y

! L1 j' z' K2 l  Y+ U* _1 [( I" p“SELECT SQL_TEXT FROM V$SQL_TEXT T, V$SESSION S WHERE T.ADDRESS=S.SQL_ADDRESS  : l6 b( n) H% U7 J3 B  ~% P

1 J- `% ^9 V( d. A  i( o. lAND T.HASH_VALUE=S.SQL_HASH_VALUE  - g5 l5 L* ^0 O4 B: f* }; p
9 D" M: e: v& d' \( F( c# k6 ^
AND S.MACHINE=’XXXXX’ OR USERNAME=’XXXXX’ -- 查看某主机名,或用户名  , s2 `& p- U& L/ |

  y; X# e! K" E7 ]+ @2 _4 \/”  . y9 x7 }2 F4 w

( g8 p) i1 o7 L1 l7 O, r7. 如何删除表中的重复记录?  ) ]- H; t+ S# o+ H0 k: l

, R: x& {, L1 u( O# x/ `: S例句:  ; T% S9 e. y$ l7 `# V: L

  l. T8 @0 s5 }) x. N5 _DELETE  
. F# L, p! R6 m* v% v, xFROM table_name a  
7 E& J' k4 r! k9 F. P8 hWHERE rowid > ( SELECT min(rowid)  7 Y+ D& i! a+ t9 p
FROM table_name b  5 W7 N5 E2 U" E9 q  k6 s
WHERE b.pk_column_1 = a.pk_column_1  
; `# r2 T5 _8 w$ Q( Uand b.pk_column_2 = a.pk_column_2 );  
9 H* B1 E, P7 A1 G6 y+ X) _' ]  D: @) `, Z
8. 手工临时强制改变服务器字符集  
! N. w$ ^; F# F9 g
; i5 E0 E8 S/ N' E以sys或system登录系统,sql*plus运行:“create database character set us7ascii;".  2 l) R3 ?) C2 N6 _1 u: W9 a% Q/ l
有以下错误提示:  # e* ]: e; D0 c; ]$ F, Z
* create database character set US7ASCII  
0 s4 Z9 P* x2 Q7 S1 ]7 h9 ?ERROR at line 1:  6 W: q. M2 L5 X& f( k
ORA-01031: insufficient privileges  # `& y. U, G" K% [2 U9 x% r( T
实际上,看v$nls_parameters,字符集已更改成功。但重启数据库后,数据库字符集又变回原来的了。  
$ y2 j# W1 g5 r% x- X! |  e: Q该命令可用于临时的不同字符集服务器之间数据倒换之用。  + ^2 o5 ?  B$ A, @9 m/ N! _
+ v' @" ~! j) L- E- P! Q
9. 怎样查询每个instance分配的PCM锁的数目  ( [7 H3 J& y. r9 C

  U8 U6 e1 M8 H8 p. l* [用以下命令:  
- ~9 x( u/ j. |- C
: o# r  k9 A+ F8 A+ Bselect count(*) "Number of hashed PCM locks" from v$lock_element where bitand(flags,4)0  
( f! ?' w, V7 f& W4 c/ a! z
2 m- s8 F( d4 L+ E/  
" u: B+ E2 H- ]' X% U! J  T# a, U+ j8 Q2 d" f
select count(*) "Number of fine grain PCM locks" from v$lock_element  # \: h& g4 W1 `. G
4 n7 a# T  M- ]' v4 Z1 A, Z( a( R
where bitand(flags,4)=0  : @+ l2 A1 y0 E6 ^% ~
9 [! F% a6 B2 }, {& |1 a
/  * M9 a3 T0 n* E% m$ A
0 o& K8 \& f) l; o9 r4 m, q0 M
10. 怎么判断当前正在使用何种SQL优化方式?  
/ ?: w9 `- n" q3 [& d: Z, U% x0 L7 {$ M( @/ |, f* ^  ~" j  j
用explain plan产生EXPLAIN PLAN,检查PLAN_TABLE中ID=0的POSITION列的值。  
% q2 D9 q" k) [, V# j9 C$ T3 E
# A: r. v) H4 O  h+ k, Y/ H( k+ xe.g.  & Z! W( K1 {0 k. V# A$ P! w

2 x( d7 v$ w9 P  ^  L2 q8 x5 Cselect decode(nvl(position,-1),-1,’RBO’,1,’CBO’) from plan_table where id=0  1 C3 Q/ ^% ^) k( R0 m- z1 y

4 x5 g1 \$ i, D/  
: e8 O, O1 X  C. k: P+ ]
3 j: f$ ^( N8 j, `: [$ [* C11. 做EXPORT时,能否将DUMP文件分成多个?  ; F. l/ K7 \0 B
$ E8 A  M# i2 J7 X+ o; Y7 t% s/ e
ORACLE8I中EXP增加了一个参数FILESIZE,可将一个文件分成多个:  ' o2 Q# p- j6 g3 E, m8 x4 g
! ^8 H* j( ]! W* H! e: C3 E7 u
EXP SCOTT/TIGER FILE=(ORDER_1.DMP,ORDER_2.DMP,ORDER_3.DMP) FILESIZE=1G TABLES=ORDER;  
" k- }' g5 z# y. g: W; M2 i: b$ L; ?7 `4 Q
其他版本的ORACLE在UNIX下可利用管道和split分割:  
4 B9 ^6 D! y. X. i4 b. W( Y
# m7 F* S3 a' v5 F( m' r: imknod pipe p  
) N. k, M6 J! Q" k
  t. k6 ^1 f1 ?3 ]8 Z& dsplit -b 2048m pipe order & #将文件分割成,每个2GB大小的,以order为前缀的文件:  3 l; N. P; i- `, {* j
& E" F3 m& v* D; H! g8 d) Z
#orderaa,orderab,orderac,... 并将该进程放在后台。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 06:25 , Processed in 0.219020 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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