標籤: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 = ‘3rf19a6yjvz18‘order 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_INVOICE‘and 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效率)