如何分析預存程序中Sql語句(Oracle 9i\Windows)

來源:互聯網
上載者:User
   Oracle中如何分析預存程序中的sql語句?先看看如何分析語句吧。
    在Oracle工具中找的分析工具:Oracle-OraHome90->Enterprise Management Packs->Tuning->Sql Analyze
    開始登陸:
 

 
   開始查詢分析吧。首先來個最簡單的,類似於hello word!
    selece count(*)  from t_atzb; 不錯執行完畢,並出現相應的統計資訊。
 
   不過偶的很多演算法在預存程序中呢,如何執行呀?先將預存程序中的Sql語句挑出一些來分析一下。
   第一個:insert into T_QB192_168_0_52 (F_TPBH,F_FQXXBH,F_TZWZBH,F_UPTIME,F_FEATURE) 
  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,
      8936,494300,2695000,158200000,99580000,886300000,31650000000) v_Feature 
   from
   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 
   where t_atzb.F_TPBH <>'210200200610000101';

    其中凡F_FEATURE_DISPERSION是自訂的一個函數。所以執行時發生錯誤:出現錯誤在 gmjora.es 上:

XP-21016: 出現資料庫錯誤:

/**//* OracleOEM */ EXPLAIN PLAN SET statement_id = 'VMQ: 18899' INTO plan_table FOR 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, 8936, 494300, 2695000, 158200000, 
       99580000, 886300000, 31650000000) 

ORA-00904: 鏃犳晥鍒楀悕


  原因:      試圖訪問 Oracle Expert 服務資料檔案庫或可最佳化的目
             標資料庫時出現伺服器錯誤。錯誤文本提供具體的
             Oracle Server 錯誤訊息。

  操作:      如果錯誤中指明了一個環境問題 (例如: 常式未啟動),
             請解決該問題。

還出現亂碼了,總之不能分析了吧,不知道還有什麼方法?

在網上搜搜,試試這個吧:在SqlPlus中分析Sql語句。
1>開啟D:\oracle\ora90\sqlplus\admin\plustrce.sql檔案
後複製以下幾句話:

drop role plustrace;
create role plustrace;

grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$session to plustrace;
grant plustrace to dba with admin option;

2>以sys使用者登陸SqlPlus,並執行以上語句(以前沒有plustrace的話drop時會提示錯誤,沒有關係)。
3>將產生的plustrace角色賦予一般使用者bmrsauto.grant plustrace to bmrsauto;

4>開啟檔案:D:\oracle\ora90\rdbms\admin\utlxplan.sql
複製該建立表語句:create table PLAN_TABLE (
    statement_id     varchar2(30),
    timestamp        date,
    remarks          varchar2(80),
    operation        varchar2(30),
    options           varchar2(255),
    object_node      varchar2(128),
    object_owner     varchar2(30),
    object_name      varchar2(30),
    object_instance numeric,
    object_type     varchar2(30),
    optimizer       varchar2(255),
    search_columns  number,
    id        numeric,
    parent_id    numeric,
    position    numeric,
    cost        numeric,
    cardinality    numeric,
    bytes        numeric,
    other_tag       varchar2(255),
    partition_start varchar2(255),
        partition_stop  varchar2(255),
        partition_id    numeric,
    other        long,
    distribution    varchar2(30),
    cpu_cost    numeric,
    io_cost        numeric,
    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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.