熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle統計數據的遷移

2013-11-13 22:12:47  來源: Oracle 

  自從iR開始可以利用DBMS_STATS對統計數據進行數據庫間的遷移如果要遷移schema或database級別的統計數據還需要DBA權限

  G開始Oracle默認情況下可以自動保存最近天的統計數據Table級的統計數據存儲在[DBA|ALL|USER]_TAB_STATS_HISTORY視圖中而schemadatabase級的統計數據保存在DBA_OPTSTAT_OPERATIONS視圖中當STATISTICS_LEVEL參數設置成ALL或TYPICAL時Oracle會在最近一次的統計數據收集時自動刪除舊的統計數據也可以通過DBMS_STATSPURGE_STATS手動清楚指定時間之前的歷史數據(統計數據的保存周期用DBMS_STATSALERT_STATISTICS_HISTORY_RETENTION進行調整)

  記錄一下 統計數據的導出過程

  源庫導出統計數據

  創建保存統計數據的中間表

  中間表用來存儲要遷移的統計數據統計數據都存儲在數據字典中所以在遷移前必須導出到一張中間表中間表的創建用DBMS_STATSCREATE_STAT_TABLE

  BEGIN

  DBMS_STATSCREATE_STAT_TABLE(ownname=>SYSTEMstattab=>STAT_TABtblspace=>TOOLS);

  DBMS_OUTPUTPUT_LINE(Create table complete!);

  END;

  /

  導出統計數據到中間表

  用DBMS_STATSEXPORT_*_STATS系列方法導出統計數據這裡演示導出一個schema的統計數據

  BEGIN

  dbms_statsexport_schema_stats(ownname=>IQUEWEBstattab=>STAT_TABstatid=>IQUEWEB_statown=>SYSTEM);END;

  /

  將iqueweb的統計數據導出中間表systemstat_tab表中

  Export表STAT_TAB

  用exp或expdp導出STAT_TAB

  expdp system/****@**** tables=(stat_tab) directory=export dumpfile=expdatdmp logfile=iqueweb_stat_elog

  將導出的expdatdmp文件傳入遠程的目標數據庫

  目標庫導入統計數據

  Import STAT_TAB

  導入傳入的expdatdmp文件這裡注意權限用system導入

  impdp system/****@**** tables=(stat_tab) directory=dbaexport dumpfile=expdatdmp logfile=importlog

  Import 統計數據

  從STAT_TAB表中Import iquewb統計數據到數據字典這裡要用到DBMS_STATSIMPORT_SCHEMA_STATS

  BEGIN

  dbms_statsimport_schema_stats(ownname=>IQUEWEBstattab=>STAT_TABstatid=>IQUEWEB_statown=>SYSTEMforce=>FALSE);

  END;

  /

  這個導入過程是這樣的首先會將導入的統計數據保存在DBA_OPTSTAT_OPERATIONS視圖中同時讓數據庫應用最新的統計數據也就是說這個Import完成後我們因該看到iqueweb下的表應用了剛才導入的新統計數據

  查看新的統計

  確認新的統計數據是否導入

  alter session set nls_timestamp_tz_format=yyyymmdd hh:mi:ss;

  col start_time format a

  col end_time format a

  col operation format a

  col target format a

  set linesize

  select operationtargetstart_timeend_time from dba_optstat_operations;

  gather_database_stats(auto)                                   : :

  :          :

  OPERATION                      TARGET                         START_TIME     END_TIME

  

  import_schema_stats            IQUEWEB                        : :

  :          :

  統計數據已經導入了同時去看看具體的iqueweb下的表有沒有應用新的統計數據

  select table_namenum_rowsblocksempty_blocksavg_row_lenlast_analyzed from dba_tables where owner=IQUEWEB;

  如果發現表還是保持了以前的統計數據那麼必須先刪除表上舊的統計數據然後重新Import因為Oracle在Import的時候如果發現表以上也有統計數據會直接skipped


From:http://tw.wingwit.com/Article/program/Oracle/201311/18490.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.