程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> PLSQL_統計信息系列2_統計信息過舊導致程序出現性能問題(案例),plsql統計信息

PLSQL_統計信息系列2_統計信息過舊導致程序出現性能問題(案例),plsql統計信息

編輯:Oracle教程

PLSQL_統計信息系列2_統計信息過舊導致程序出現性能問題(案例),plsql統計信息


2014-11-15 Created By BaoXinjian

一、摘要


在性能的穩定數據庫中,所有的job都需要在一定時間內完成

以前在一個銀行系統中,突然某一個job原本在30minutes內完成的,但是在3hours之後,還在運行

排除了數據量大小變化的影響,需要查看該程序的解析計劃是否變更,在穩定的系統中,job對應的explain plan一般通過sqlplan management固定,很少變化

所以需要查看,是否job對應的sqlplan explain是否變化

一般來說,解析計劃變更也會導致此類問題

 

二、解決方式


Step1. 查看程序對應的session

select sid, sql_id from v$session where sid = 1001

Step2. 查看對應session目前在運行的sql

select b.begin_interval_time, 
a.disk_reads_total,
a.buffer_gets_total,
a.buffer_gets_delta,
a.rows_processed_total,
a.plan_hash_value from dba_hist_sqlstat a, dba_hist_snapshot b where a.snap_id = b.snap_id
and sql_id = '466bpq7055f4c'
order by 1 desc;

Step3. 查看該長時間運行sql對應的解析計劃是否在這段時間有過變更

select* from v$sql_plan

Step4. 查看表的統計時間

select name, last_analized from dba_tables

Step5. 對表進行產生統計信息

exec dbms_stats.gather_table_stats(
ownname=>'SCOT',
tabname=>'GAVIN',
estimate_percent=>3,
degree=>32,
granularity=>'GLOBAL',
cascade=>FALSE,
no_invalidate=>FALSE);

 

 Thanks and Regards

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved