SQL Tune Report–sqltrpt.sql

来源:http://www.cnblogs.com/kerrycode/archive/2016/03/09/5260039.html
-Advertisement-
Play Games

ORACLE 10g提供了一個腳本sqltrpt.sql用來查詢最耗費資源的SQL語句,其輸出的結果分為兩部分: 15 Most expensive SQL in the cursor cache 15 Most expensive SQL in the workload repository 另外...


ORACLE 10g提供了一個腳本sqltrpt.sql用來查詢最耗費資源的SQL語句,其輸出的結果分為兩部分:

    15 Most expensive SQL in the cursor cache

    15 Most expensive SQL in the workload repository

另外可以根據輸入的SQL_ID,生成對應執行計劃和調優建議,是一個不錯的調優優化腳本。其實是sqltrpt是SQL Tune Report的縮寫。這個腳本位於$ORACLE_HOME/rdbms/admin/sqltrpt.sql。 具體腳本如下所示

Rem
Rem $Header: sqltrpt.sql 11-apr-2005.11:01:39 pbelknap Exp $
Rem
Rem sqltrpt.sql
Rem
Rem Copyright (c) 2004, 2005, Oracle. All rights reserved.  
Rem
Rem    NAME
Rem      sqltrpt.sql - SQL Tune RePorT
Rem
Rem    DESCRIPTION
Rem      Script that gets a single statement as input from the user (via SQLID),
Rem      tunes that statement, and then displays the text report.
Rem
Rem      To tune multiple statements, create a sql tuning set and create a
Rem      tuning task with it as input (see dbmssqlt.sql).
Rem
Rem    NOTES
Rem      <other useful comments, qualifications, etc.>
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    pbelknap    04/11/05 - remove linesize 
Rem    kyagoub     07/05/04 - kyagoub_proj_13448-2
Rem    pbelknap    06/29/04 - feedback from rae burns 
Rem    pbelknap    06/17/04 - Created
Rem
 
SET NUMWIDTH 10
SET TAB OFF
 
 
set long 1000000;
set longchunksize 1000;
set feedback off;
set veri off;
 
-- Get the sql statement to tune
 
prompt
prompt 15 Most expensive SQL in the cursor cache
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
column elapsed format 99,990.90;
variable newl varchar2(64);
 
begin
  :newl := '
';
end;
/
 
select * from (
 select sql_id, elapsed_time / 1000000 as elapsed, SUBSTRB(REPLACE(sql_text,:newl,' '),1,55) as sql_text_fragment
 from   V$SQLSTATS
 order by elapsed_time desc
) where ROWNUM <= 15;
 
prompt
prompt 15 Most expensive SQL in the workload repository
prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
select * from (
 select stat.sql_id as sql_id, sum(elapsed_time_delta) / 1000000 as elapsed, 
     (select to_char(substr(replace(st.sql_text,:newl,' '),1,55)) 
     from dba_hist_sqltext st
     where st.dbid = stat.dbid and st.sql_id = stat.sql_id) as sql_text_fragment
 from dba_hist_sqlstat stat, dba_hist_sqltext text
 where stat.sql_id = text.sql_id and
       stat.dbid   = text.dbid
 group by stat.dbid, stat.sql_id
 order by elapsed desc
) where ROWNUM <= 15;
 
prompt
prompt Specify the Sql id
prompt ~~~~~~~~~~~~~~~~~~
column sqlid new_value sqlid;
set heading off;
select 'Sql Id specified: &&sqlid' from dual;
set heading on;
 
prompt
prompt Tune the sql
prompt ~~~~~~~~~~~~
variable task_name varchar2(64);
variable err       number;
 
-- By default, no error
execute :err := 0;
 
set serveroutput on;
 
DECLARE
  cnt      NUMBER;
  bid      NUMBER;
  eid      NUMBER;
BEGIN
  -- If it's not in V$SQL we will have to query the workload repository
  select count(*) into cnt from V$SQLSTATS where sql_id = '&&sqlid';
 
  IF (cnt > 0) THEN
    :task_name := dbms_sqltune.create_tuning_task(sql_id => '&&sqlid');
  ELSE
    select min(snap_id) into bid
    from   dba_hist_sqlstat
    where  sql_id = '&&sqlid';
 
    select max(snap_id) into eid
    from   dba_hist_sqlstat
    where  sql_id = '&&sqlid';
 
    :task_name := dbms_sqltune.create_tuning_task(begin_snap => bid,
                                                  end_snap => eid,
                                                  sql_id => '&&sqlid');
  END IF;
 
  dbms_sqltune.execute_tuning_task(:task_name);
 
EXCEPTION
  WHEN OTHERS THEN
    :err := 1;
 
    IF (SQLCODE = -13780) THEN
      dbms_output.put_line ('ERROR: statement is not in the cursor cache ' ||
                            'or the workload repository.');
      dbms_output.put_line('Execute the statement and try again');
    ELSE
      RAISE;
    END IF;   
 
END;
/
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. Name Conventions 命名規範 1) Classes 類 a. 類名只能包含數字字母 only contain alphanumeric characters b. 允許但不鼓勵使用數字 numbers are permitted but discouraged c. 不能使用下劃
  • 我不過略有一些討人喜歡的地方而已,怎麼會有什麼迷人的魔力呢? 一.語法 JS只有一個數字類型,64位浮點數,所以1和1.0是相同的。為什麼這麼設計:防止短整型的溢出。 二.對象 1.通常將一個對象的值賦給另一個變數的賦值方法 if(car.name!=null){ a=car.name; }else
  • 網頁字體: font-size: 16px;font-family: "Microsoft Yahei", Arial, Helvetica, sans-serif; 網路常用來顯高大上的名言警句字體 font: 12px "宋體", Arial, Helvetica, sans-serif; 普通
  • 有沒有辦法讓程式員徹底拋棄書寫SQL思想,完全的使用面向對象思想開發軟體呢? 需要一種可行的ORM框架。 什麼是ORM? 不同的資料庫使用的SQL語法不同,比如PL/SQL(Oracle)和T/SQL(SQL SERVER); 同樣的功能不同的資料庫有不同的實現方式; 程式過分依賴SQL對程式的移植
  • MySQL 教程 MySQL 安裝 MySQL 管理與配置 MySQL PHP 語法 MySQL 連接 MySQL 創建資料庫 MySQL 刪除資料庫 MySQL 選擇資料庫 MySQL 數據類型 MySQL 創建數據表 MySQL 刪除數據表 MySQL 插入數據 MySQL 查詢數據 MySQL
  • 目前為止,學習編程一年有餘,寫過管理系統,寫過商城,寫過桌面,接觸的多了,亂七八糟的點太多,一堆前段框架,後臺類庫,紛紛雜雜,更新迭代之快也是令人咋舌。於是我就在想,作為一名程式員,哪些內容是實打實的乾貨呢,互聯網的內容是學習不完的,只有當你用到它時,才去學習,這是我的理解。零零散散的東西除去,越來
  • execute,簡寫為exec,除了用來執行存儲過程,一般都用來執行動態Sql sp_executesql,sql2005中引入的新的系統存儲過程,也是用來處理動態sql的,如: exec sp_executesql @sql, N'@count int out,@id varchar(20)',
  • -- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- ============
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...