分享一統計資訊的備份與恢復

2021-07-09 23:45:55 字數 1785 閱讀 1714

情景:統計資訊直接影響到oracle優化器最後的執行計畫,每次公升完級或者資料遷移成功後都會習慣性的做一次統計資訊收集。但是對於一些大表,比如資料量超過幾千萬條,表分析後卻有可能會導致應用系統一些sql執行計畫變差,比如出現大量的全表掃,嚴重影響資料庫效能。

分析:1. 什麼是統計資訊?

統計資訊主要是描述資料庫[url=][/url]中表,索引的大小,規模,資料分布狀況等的一類資訊。比如,表的行數,塊數,平均每行的大小,索引的leaf blocks,索引欄位的行數,不同值的大小等,都屬於統計資訊。cbo正是根據這些統計資訊資料,計算出不同訪問路徑下,各種計畫的成本,最後選擇出成本最小的計畫。統計資訊是存放在資料字段表中的,如tab$。一般我們從資料字段檢視中察看統計資訊狀況,如dba_tables,dba_indexes,dba_tab_col_statistics, dba_tab_histograms 等。

2、如何備份統計資訊?

一想到備份開始想到的就是expdp、rman,但統計資訊是使用儲存過程進行備份的

下面我做了乙個實驗:

(1)先查詢病人資訊表的統計資訊

(2)在系統中建立統計資訊表zlhis_dy3

(3)備份zlhis使用者的統計資訊

(4)zlhis使用者統計資訊收集

begin

dbms_stats.gather_schema_stats(ownname => 'zlhis',cascade => true ,estimate_percent => 10,method_opt => 'for all indexed columns');

end;

注:開始叫想,這裡的統計資訊收集是否會覆蓋或者摧毀開始備份表中zlhis_dy3裡面的統計資訊?顯然是不會的,因為這裡的收集只是收集塊數,行數,而zlhis_dy3記錄的是真正的數字。

(5)再檢視病人資訊統計資訊變化

(6)還原統計資訊

(7)檢視還原成功的統計資訊

總結:備份統計細資訊:

--建立統計資訊歷史保留表

sql>

exec dbms_stats.create_stat_table(ownname =>

'zlhis

',stattab =>

'zlhis_dy2')

;--匯出整個scheme的統計資訊 ,該scheme可以用來恢復使用者、索引、以及表的統計資訊,十分重要

sql>

exec dbms_stats.export_schema_stats(ownname =>

'zlhis

',stattab

=>

'zlhis_dy2')

; 恢復統計資訊按使用者恢復:

sql>

exec dbms_stats.import_schema_stats(ownname =>

'zlhis

',stattab

=>

'zlhis_dy2');

或者begin

dbms_stats.import_schema_stats(

ownname => 'zlhis

', stattab => '

zlhis_dy2');

end;

/恢復統計資訊按表恢復

:exec dbms_stats.import_table_stats(ownname =>

'zlhis

',tabname

=>

'表名'

,stattab

=>

'備份統計資訊的表名')

;

一 統計與資料

統計學 收集 處理 分析 解釋資料並從資料中得到結論的科學 統計分析資料分為 描述統計 推斷統計 描述統計 研究資料收集 處理和描述的統計學方法 描述統計如何獲取所需資料,如何用圖形展示資料,得出所關心的資料特徵 推斷統計 研究如何利用樣本資料來推斷總體特徵的統計學方法 推斷統計內容包括引數估計和假...

的備份與恢復

隨著資訊時代和網際網路技術的飛速發展,企業的資訊資料量也急劇增長。如何避免突如其來的資料破壞 如 攻擊 病毒襲擊 故障和人為誤操作等 提高資料的性和資料恢復能力一直是使用者和廠商關注的焦點。備份是恢復資料最容易和最有效的保證方法,備份應定期進行,並執行有效的資料管理。microsoft公司的是乙個功...

用dbms stats的備份表,備份統計資訊

建立統計備分表 exec dbms stats.create stat table user,mystat 建立測試表 create table t id number,name varchar2 30 begin for i in 1 10 loop insert into t id,name v...