计算机等级考试 水平考试 微软认证 思科认证 Oracle认证 Linux认证

外语类四 六 级 商务英语 公共英语 GRE GMAT 托 福 雅 思

资格类:公 务 员 报 关 员 司法考试 导游考试 会计职称 注册会计师

学历类:考研入学 自学考试 成人高考 法律硕士 MBA/MPA

首页>>Oracle认证>>:Oracle专家高级编程学习笔记[1]

Oracle专家高级编程学习笔记[1]

  Expert one-on-one oracle是Oracle专家Thomas Kyte的大作,洋洋大观,总共有1329页,啃起来颇费力气.故作此笔记,记录精华所在.

  一.准备工作

  1.建立基本调试环境

  Create demo schema(建立演示模式)

  sqlplus>start $ORACLE_HOME/sqlplus/demo/demobld.sql
 
  2.建立login.sql

  define_editor=vi
  set serveroutput on size 1000000
  set trimspool on
  set long 500
  set linesize 100
  set pagesize 9999

  column plan_plus_exp format a80
  column global_name new_value gname

  select lower(user)||'@'||decode(global_name,'WEBDB.FANYAMIN.NET','webdb',global_name) global_name from global_name;

  set sqlprompt '&gname>'
  set termout on

  3.在sqlplus中配置AutoTrace

  1)cd $ORACLE_HOME/rdbms/admin

  log into sqlplus as system(connect system/manager@webdb)
  run @utlxplan
  run create public synonym plan_table for plan_table;
  run grant all on plan_table to public;

  2)

  cd $ORACLE_HOME/sqlplus/admin
  log into sqlplus as sys(connect sys/change_on_install@webdb)
  run @plustrce
  run grant plustrace to public;

  二.内容

  1.开发成功的Oracle应用程序

  一条简单秘诀

  if(possible) 就用单条SQL语句完成
  else if(possible) 用plsql程序
  else if(possible) 用java存储过程
  else if(possible) 用C外部过程
  else 考虑是否真有必要这样做

  两个指导方针

  1)不要在MTS下运行长事务<45s
  2)使用绑定变量

  system@webdb>alter system  flush shared_pool;
  system@webdb>set timing on
执行这两个sql文件,一比较,发现使用绑定变量后,速度快多了

  --bindtest1.sql, did not use bind variable
   declare
   type rc is ref cursor;
   l_rc rc;
   l_dummy all_objects.object_name%type;
   l_start number default dbms_utility.get_time;
  begin
   for i in 1..1000
   loop
    open l_rc for
    'select object_name from all_objects where object_id='||i;
    fetch l_rc into l_dummy;
    close l_rc;
   end loop;
   dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');
  end;
  /


  --bindtest2.sql,  use bind variable
  declare
   type rc is ref cursor;
   l_rc rc;
   l_dummy all_objects.object_name%type;
   l_start number default dbms_utility.get_time;
  begin
   for i in 1..1000
   loop
    open l_rc for
    'select object_name from all_objects where object_id=:x'
    using i;
    fetch l_rc into l_dummy;
    close l_rc;
   end loop;
   dbms_output.put_line(round((dbms_utility.get_time-l_start)/100,2)||'seconds...');
  end;
  /
  Oracle封锁策略


热 点 导 读

 

特 别 推 荐

 

最 新 文 章

 

最 新 文 章

·通过分析SQL语句的执行计划优化SQL
·如何学习Oracle?分清几个概念是关键
·Oraclesqlplus编辑命令
·ORACLE常见错误代码的分析及解决
·启动Oracle时常见疑难问题分析
·在Oracle中返回多个结果集的方法
·通过JDBC连接oracle数据库的技巧
·Oracle非法数据库对象引起的错误
·Oracle最新技术网站
·史上最强的几道oracle面试题

2003-2005 www.51kao.com 考试信息网