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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

1.需求概述

某數(shù)據(jù)庫由于整體統(tǒng)計信息不準(zhǔn)確,多次出現(xiàn)部分業(yè)務(wù)SQL選錯執(zhí)行計劃,從而導(dǎo)致性能下降影響到最終用戶體驗,目前通過SQL_PROFILE綁定執(zhí)行計劃臨時解決,但此方法不夠靈活,后續(xù)維護工作量也會增加。

Oracle優(yōu)化器(CBO)依賴數(shù)據(jù)庫統(tǒng)計信息來計算目標(biāo)SQL各種可能的執(zhí)行路徑的成本,并從中選擇一條成本值最小的執(zhí)行路徑來作為目標(biāo)SQL的執(zhí)行計劃。如果統(tǒng)計信息不準(zhǔn)確甚至是錯誤,會導(dǎo)致優(yōu)化器選擇錯誤SQL執(zhí)行計劃的概率大大增加。

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

2.實施步驟

2.1備份當(dāng)前數(shù)據(jù)庫統(tǒng)計信息

備份當(dāng)前數(shù)據(jù)庫的統(tǒng)計信息,建議備份后再導(dǎo)出一份留存:

--備份當(dāng)前數(shù)據(jù)庫的統(tǒng)計信息:

begin

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

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

end;

/

--備份后再導(dǎo)出一份留存

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

2.2收集數(shù)據(jù)庫統(tǒng)計信息

收集數(shù)據(jù)庫的統(tǒng)計信息,需要在業(yè)務(wù)閑時操作:

--開啟計時

set timing on

--開始收集全庫統(tǒng)計信息

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的值并不是設(shè)置越高就越快,同時要根據(jù)實際CPU具體情況來設(shè)置。

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

3.回退方案

3.1正常回退

收集統(tǒng)計信息后發(fā)現(xiàn)性能大幅下降,正常回退,直接將原統(tǒng)計信息導(dǎo)入:

--正常回退,直接將原統(tǒng)計信息導(dǎo)入:

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

3.2其他情況

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

--刪除DB_STATS_20190118:

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

--使用之前的備份導(dǎo)入DB_STATS_20190118:

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。