a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 92|回复: 1

[综合] Oracle辅导:Oracle专家高级编程学习笔记(1)

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
Expert one-on-one oracle是Oracle专家Thomas Kyte的大作,洋洋大观,总共有1329页,啃起来颇费力气.故作此笔记,记录精华所在.   一.准备工作0 Y2 o+ e% F% I3 v* Z
  1.建立基本调试环境
7 ]; Q* D7 F0 O6 ~" q: X5 N  Create demo schema(建立演示模式)/ Y! |6 w3 z5 O' l# V
  sqlplus>start $ORACLE_HOME/sqlplus/demo/demobld.sql
/ _: d8 N$ q% d* `: }1 t, y
; {: ?7 |* \' ]/ e# ~* R  2.建立login.sql
8 P+ I/ I' A' }- K5 I& ^  define_editor=vi
+ v- k9 }6 m% k8 b: A5 V; ^  set serveroutput on size 1000000
. Q, f0 i. v4 [2 L' m6 f  set trimspool on3 H, `* X& _0 d
  set long 5000 g) u9 |7 r4 c' I8 C6 }8 p
  set linesize 100
* c# A/ R. W3 h& v) Q7 V" d' b, M  set pagesize 9999
% g) _2 h0 j8 g3 W0 Q" @  column plan_plus_exp format a80
" U8 u3 e  b  |; }  column global_name new_value gname
$ c5 h! _  r2 N4 n$ G' a  select lower(user)||'@'||decode(global_name,'WEBDB.FANYAMIN.NET','webdb',global_name) global_name from global_name;; m& k3 f$ m% c5 S
  set sqlprompt '&gname>'! w( `: n" H7 k' M
  set termout on
& O9 L3 h/ A8 c2 P  3.在sqlplus中配置AutoTrace
0 o% ~2 {8 n9 C4 V# j+ M  1)cd $ORACLE_HOME/rdbms/admin. ^7 w. r+ ^0 j
  log into sqlplus as system(connect system/manager@webdb)
8 z! b) N! [$ h% [) r  run @utlxplan( z" b# _8 r" O$ e% b3 J) Q6 A- E
  run create public synonym plan_table for plan_table;& e9 p5 |( A- H" J8 ~, \
  run grant all on plan_table to public; % @8 R/ v% C3 U: d: G# U
  2)cd $ORACLE_HOME/sqlplus/admin% t; b! @. X! }) G& ~
  log into sqlplus as sys(connect sys/change_on_install@webdb)
7 U: a9 a% }$ \3 e; c' h- ]9 p4 S1 j  run @plustrce
: `2 u! F, y( u. {0 ^& |0 h& _  run grant plustrace to public;. {  u2 A% o9 G, T
  二.内容
5 P) [6 ]. B8 q* M, x# \( Q4 c  1.开发成功的Oracle应用程序  R$ z7 \3 `7 {8 k3 q3 Z* V6 ~/ m! V
  一条简单秘诀2 W4 g( Z/ T) T. H+ l; K- _" K
  if(possible) 就用单条SQL语句完成- u+ t) F8 U( W- ~
  else if(possible) 用plsql程序5 O: B) e. t6 r' o+ B
  else if(possible) 用java存储过程
, @; W1 x9 g  W3 c% A! d* ?. g  else if(possible) 用C外部过程
% O& l7 W( `! p" b/ ^+ L2 ~; j  else 考虑是否真有必要这样做  U4 x% E. _' q( |; u
  两个指导方针
/ s: ~; E7 {8 _" j( j- m! t
) Z! t1 ]( {0 _6 k% Z  1)不要在MTS下运行长事务alter system  flush shared_pool;
6 S; r0 V& G: n( |* W  system@webdb>set timing on
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

Oracle辅导:Oracle专家高级编程学习笔记(1)

执行这两个sql文件,一比较,发现使用绑定变量后,速度快多了</p>  --bindtest1.sql, did not use bind variable
) U! C& m0 g' \) r% Y  K* L% Z5 X   declare& s' B8 w: s8 e' E: M3 K4 X
   type rc is ref cursor;
0 O) i  ?' f' c) |/ b( D   l_rc rc;
7 h  f+ h1 ?3 @% e   l_dummy all_objects.object_name%type;
! Y/ L  X7 ^$ }  P3 v   l_start number default dbms_utility.get_time;" S2 I3 k& R/ l- c
  begin% R: _9 h6 O! O0 t! G' r
   for i in 1..1000
5 c  m. J4 a, P  \, w   loop2 z% N3 n/ a! f0 K
   open l_rc for7 O! K$ H2 a, M# {
    'select object_name from all_objects where object_id='||i;' H# V- x0 [3 T& S& u3 U+ C4 f
    fetch l_rc into l_dummy;/ @/ ^/ H- j4 ]3 s
    close l_rc;' c# n/ H$ H1 B/ F& n2 ^$ T
   end loop;  }0 ?$ P$ V" G
   dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');3 u- [% p# E* L6 N% R3 d
  end;9 B9 V1 L9 P: Q, [% v# c
  / $ ?0 G9 w# V) c; d
  --bindtest2.sql,  use bind variable
% M/ E6 n" V5 b9 e) c' d; {  declare
* c* c! ?7 U, a( l7 }8 }   type rc is ref cursor;, E5 j+ S& }. |2 P. N8 l' h% n: S' f
   l_rc rc;3 v/ M( q; b1 {* q
   l_dummy all_objects.object_name%type;) E. Y" L  N' h9 V& C0 S1 s& y
   l_start number default dbms_utility.get_time;/ Y& n# p  o7 N
  begin
9 J, x5 z2 f' e   for i in 1..1000& Z- ^* h* \$ V% U% h/ l* @; b: h
   loop
/ u" H! B6 n% h0 d! A    open l_rc for - w: x. A6 R$ d! w$ Z  i
    'select object_name from all_objects where object_id=:x'
4 n1 t* f; `3 w( Z" r8 d$ y+ L0 ?    using i;
  }1 {$ p! ^4 w    fetch l_rc into l_dummy;* u2 z1 V1 c8 [* d9 [; O! T/ B3 ]
    close l_rc;" J1 w7 ?5 N# O
   end loop;% L; X& n$ S0 d, ^0 I
   dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');5 ~. k% r7 ]! d  z* x7 [: S
  end;
$ D  Y4 @3 p4 w* \  /
: @; T; Z/ h/ @/ N5 d  Y# E4 @' a  Oracle封锁策略% v/ h+ C7 Y  Z$ n
    Oracle体系结构的3个主要组件:8 H4 V% [" m$ B2 W( g% i& Q+ \+ h
    1.文件:组成数据库实例的5个文件(参数文件,控制文件,数据文件,临时数据文件,重做日志文件)
* W. {8 }' ?8 {4 q9 Y    2.系统全局区域SGA( System Global Area): Java池,共享池等
7 b! U9 P+ `) E3 J( q    3.物理进程与线程: 在数据库上运行3种不同类型的进程(服务器server进程,后台backgroud进程,从属slave进程)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 12:25 , Processed in 0.409100 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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