日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle 数据统计收集,Oracle 10g收集数据库统计信息

發布時間:2024/9/30 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 数据统计收集,Oracle 10g收集数据库统计信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.需求概述

某數據庫由于整體統計信息不準確,多次出現部分業務SQL選錯執行計劃,從而導致性能下降影響到最終用戶體驗,目前通過SQL_PROFILE綁定執行計劃臨時解決,但此方法不夠靈活,后續維護工作量也會增加。

Oracle優化器(CBO)依賴數據庫統計信息來計算目標SQL各種可能的執行路徑的成本,并從中選擇一條成本值最小的執行路徑來作為目標SQL的執行計劃。如果統計信息不準確甚至是錯誤,會導致優化器選擇錯誤SQL執行計劃的概率大大增加。

目前計劃對該數據庫統計信息進行重新收集,因為生產環境的復雜性,不排除重新收集正確的統計信息后,整體性能反而下降的情況。故而在收集之前需要對原有的統計信息做好備份,如發現收集后性能反而下降的極端情況,也可以快速回退到原有的統計信息。

2.實施步驟

2.1備份當前數據庫統計信息

備份當前數據庫的統計信息,建議備份后再導出一份留存:

--備份當前數據庫的統計信息:

begin

DBMS_STATS.CREATE_STAT_TABLE('SYSTEM','DB_STATS_20190118');

DBMS_STATS.EXPORT_DATABASE_STATS(STATTAB => 'DB_STATS_20190118', STATOWN => 'SYSTEM');

end;

/

--備份后再導出一份留存

expdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=stats.dmp logfile=stats.log tables=system.db_stats_20190118

2.2收集數據庫統計信息

收集數據庫的統計信息,需要在業務閑時操作:

--開啟計時

set timing on

--開始收集全庫統計信息

begin

dbms_stats.gather_database_stats(

ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'for all indexed columns', cascade=>true, degree=>16);

end;

/

注意:degree的值并不是設置越高就越快,同時要根據實際CPU具體情況來設置。

如果數據庫是11.2.0.2及以上版本,還可以通過DBMS_STATS.SET_GLOBAL_PREFS設置并發收集進一步提升收集效率,具體可參考:

3.回退方案

3.1正常回退

收集統計信息后發現性能大幅下降,正常回退,直接將原統計信息導入:

--正常回退,直接將原統計信息導入:

exec DBMS_STATS.IMPORT_DATABASE_STATS (STATTAB => 'DB_STATS_20190118', STATOWN => 'SYSTEM');

3.2其他情況

如果DB_STATS_20190118被損壞,可以刪除后使用之前的備份導入:

--刪除DB_STATS_20190118:

exec DBMS_STATS.DROP_STAT_TABLE ('SYSTEM','DB_STATS_20190118');

--使用之前的備份導入DB_STATS_20190118:

impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=stats.dmp logfile=stats.log

總結

以上是生活随笔為你收集整理的oracle 数据统计收集,Oracle 10g收集数据库统计信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。