如何分析存储过程中Sql语句(Oracle 9i\Windows)

   Oracle中如何分析存储过程中的sql语句?先看看如何分析语句吧。
    在Oracle工具中找的分析工具:Oracle-OraHome90->Enterprise Management Packs->Tuning->Sql Analyze
    开始登陆:
 

 
   开始查询分析吧。首先来个最简单的,类似于hello word!
    selece count(*)  from t_atzb; 不错执行完毕,并出现相应的统计信息。
 
   不过偶的很多算法在存储过程中呢,如何执行呀?先将存储过程中的Sql语句挑出一些来分析一下。
   第一个:
None.gif insert   into  T_QB192_168_0_52 (F_TPBH,F_FQXXBH,F_TZWZBH,F_UPTIME,F_FEATURE) 
None.gif  
select  t_atzb.F_tpbh,F_FQXXBH,F_TZWZBH,F_UPTIME,       F_FEATURE_DISPERSION(f_bSpatial0,f_bSpatial1,f_bSpatial2,f_bSpatial3,f_bSpatial4,f_bSpatial5,f_bSpatial6,
None.gif      
8936 , 494300 , 2695000 , 158200000 , 99580000 , 886300000 , 31650000000 ) v_Feature 
None.gif   
from
None.gif   t_atzb 
inner   join  t_atpb  inner   join  t_ab  on  t_atpb.f_bh = t_ab.f_bh  on  t_atzb.f_tpbh  = t_atpb.f_tpbh 
None.gif   
where  t_atzb.F_TPBH  <> ' 210200200610000101 ' ;

    其中凡F_FEATURE_DISPERSION是自定义的一个函数。所以执行时发生错误:
None.gif 出现错误在 gmjora.es 上:
None.gif
None.gifXP
- 21016 : 出现数据库错误:
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ /* OracleOEM */  EXPLAIN PLAN SET statement_id  =   ' VMQ: 18899 '  INTO plan_table FOR SELECT t_atzb.f_tpbh, f_fqxxbh, f_tzwzbh, f_uptime, 
None.gif       F_FEATURE_DISPERSION(f_bspatial0, f_bspatial1, f_bspatial2, f_bspatial3, 
None.gif       f_bspatial4, f_bspatial5, f_bspatial6, 
8936 494300 2695000 158200000
None.gif       
99580000 886300000 31650000000
None.gif
None.gifORA
- 00904 : 鏃犳晥鍒楀悕
None.gif
None.gif
None.gif  原因:      试图访问 Oracle Expert 服务资料档案库或可优化的目
None.gif             标数据库时出现服务器错误。错误文本提供具体的
None.gif             Oracle Server 错误消息。
None.gif
None.gif  操作:      如果错误中指明了一个环境问题 (例如: 例程未启动),
None.gif             请解决该问题。

还出现乱码了,总之不能分析了吧,不知道还有什么方法?


在网上搜搜,试试这个吧:在SqlPlus中分析Sql语句。
1>打开D:\oracle\ora90\sqlplus\admin\plustrce.sql文件
后复制以下几句话:
None.gif drop  role plustrace;
None.gif
create  role plustrace;
None.gif
None.gif
grant   select   on  v_$sesstat  to  plustrace;
None.gif
grant   select   on  v_$statname  to  plustrace;
None.gif
grant   select   on  v_$session  to  plustrace;
None.gif
grant  plustrace  to  dba  with  admin  option ;
2>以sys用户登陆SqlPlus,并执行以上语句(以前没有plustrace的话drop时会提示错误,没有关系)。
3>将产生的plustrace角色赋予一般用户bmrsauto.
None.gif grant  plustrace  to  bmrsauto;
4>打开文件:D:\oracle\ora90\rdbms\admin\utlxplan.sql
复制该创建表语句:
None.gif create   table  PLAN_TABLE (
None.gif    statement_id     
varchar2 ( 30 ),
None.gif    
timestamp         date,
None.gif    remarks          
varchar2 ( 80 ),
None.gif    operation        
varchar2 ( 30 ),
None.gif    options           
varchar2 ( 255 ),
None.gif    object_node      
varchar2 ( 128 ),
None.gif    object_owner     
varchar2 ( 30 ),
None.gif    
object_name        varchar2 ( 30 ),
None.gif    object_instance numeric,
None.gif    object_type     
varchar2 ( 30 ),
None.gif    optimizer       
varchar2 ( 255 ),
None.gif    search_columns  
number ,
None.gif    id        numeric,
None.gif    parent_id    numeric,
None.gif    position    numeric,
None.gif    cost        numeric,
None.gif    cardinality    numeric,
None.gif    bytes        numeric,
None.gif    other_tag       
varchar2 ( 255 ),
None.gif    partition_start 
varchar2 ( 255 ),
None.gif        partition_stop  
varchar2 ( 255 ),
None.gif        partition_id    numeric,
None.gif    other        
long ,
None.gif    distribution    
varchar2 ( 30 ),
None.gif    cpu_cost    numeric,
None.gif    io_cost        numeric,
None.gif    temp_space    numeric);
5>以bmrsauto用户登陆sqlplus。粘贴该语句并执行。
6>在sqlplus中执行代码:
set time on                                   (说明:打开时间显示)
set autotrace on                           (说明:打开自动分析统计,并显示SQL语句的运行结果)
set autotrace traceonly                 (说明:打开自动分析统计,不显示SQL语句的运行结果)

不错吧,可以分析含有存储过程的sql语句了。

参考网站: http://fengyu.china.com/plan.htm



转载于:https://www.cnblogs.com/xinyuxin912/archive/2006/10/24/538885.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值