PLSQL_在執行1億條資料插入長指令碼如何判斷需耗時多久v$sql / v$sqltext / v$sqlarea / v$sql_plan(案例)(監控SQL效率)

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   os   io   使用   ar   

2014-08-27 BaoXinjian

一、摘要

當執行耗時時間較長的PLSQL時,有時需要查看程式啟動並執行進度,目前已經處理了多少資料,還需處理多上資料

如果程式中專門的Log Module管控這一塊,問題就不太大

如果沒有這個這塊的管控,可能就需要通過跟蹤session,並查詢動態效能檢視,大概猜測出系統的運行情況,特別是undo資料表空間的變化

 

二、案例

案例:

Step1. 建立測試表bxj_test

create table bxj_test (    invoice_id number,    invoice_num varchar2(100),    total number,    company varchar2(100),    description varchar2(500),    creation_date date)

 

Step2. 建立測試程式,殺入1以一條

declare  i integer;begin  for i in 1 .. 100000000 loop    insert into apps.bxj_test    values      (i,       INVOICENUM_ || lpad(to_char(i), 10, 0),       dbms_random.value(1, 100000000),       Gavin Corporation,       Invoice Description || to_char(sysdate, YYYYMMDD HH24:MI:SS),       sysdate);  end loop;  commit;end;

 

 

Step3. 動態效能檢視1  -> v$session

SELECT   sid,         --serial#,         --username,         --command,         --status,         --osuser,         --sql_address,         --sql_hash_value,         sql_id,         sql_exec_start,         prev_sql_id,         prev_exec_start,         event,         wait_class,         state,         sql_trace,         program  FROM   v$session WHERE   terminal = GAVIN-PC  AND sid = 373 AND status = ACTIVE AND program like plsqldev.exe

 

Step4. 動態效能檢視2 - v$sql

select sql_id, sql_text, executions, cpu_time, elapsed_time from v$sqlwhere sql_id = 3rf19a6yjvz18 

 

Step5. 動態效能檢視3 - v$sqltext

select * from v$sqltextwhere sql_id = 3rf19a6yjvz18order by piece

 

Step6. 動態效能檢視4 - v$sql_plan

select sql_id, operation, optimizer, id, parent_id, depth, position, search_columns, cost from v$sql_planwhere sql_id = 3rf19a6yjvz18

 

Step7. 其他動態效能檢視

select * from V$SESSION_LONGOPSwhere 1=1and target = APPS.BXJ_TEST_INVOICEand sid = 38select * from V$SESSION_WAITwhere sid = 24select * from V$SESSION_WAIT_CLASSselect * from V$SESS_IOwhere sid = 24select * from V$SESSION_EVENTwhere sid = 24

 

 

 

 

 

Step6. 通過確認undo空間的大小變化,確定已操作記錄條數

 

 

三、案例 - nohup轉入後台運行指令碼

nohup 命令運行由 Command參數和任何相關的 Arg參數指定的命令,忽略所有掛斷(SIGHUP)訊號。

在登出後使用 nohup 命令運行後台中的程式。

要運行後台中的 nohup 命令,添加 & ( 表示“and”的符號)到命令的尾部。

 

1. 重新導向記錄檔

如 果不將 nohup 命令的輸出重新導向,輸出將附加到目前的目錄的 nohup.out 檔案中。如果目前的目錄的 nohup.out 檔案不可寫,輸出重新導向到 $HOME/nohup.out 檔案中。如果沒有檔案能建立或開啟以用於追加,那麼 Command 參數指定的命令不可調用。如果標準錯誤是一個終端,那麼把指定的命令寫給標準錯誤的所有輸出作為標準輸出重新導向到相同的檔案描述符。

 

2. 主要概念

(1). 功能:使進程在退出登入後仍舊繼續執行。

(2). 格式:$ nohup <程式名>  &

(3). 結果:如果程式program有結果輸出,輸出結果將會被儲存到目前的目錄下的一個檔案名稱為 nohup.out的檔案中,如果使用者在目前的目錄沒有寫的許可權, 則結果將會被儲存到使用者主目錄下的nohup.out檔案中。

(4). 查看:jobs

 

********************鮑建立********************

 

 

參考:http://cc59.itpub.net/post/1845/286133

PLSQL_在執行1億條資料插入長指令碼如何判斷需耗時多久v$sql / v$sqltext / v$sqlarea / v$sql_plan(案例)(監控SQL效率)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.