轉換後統計資訊的匯入匯出

dengxm發表於2010-08-19

最近半年一直在做資料轉換,其實之前也做過不少資料轉換。在任務緊、壓力大、時間緊迫的情況下,縮短轉換的時間,提高資料的質量就變的尤為重要了。一輪、二輪、三輪模擬轉換後,就到了正式割接的日子。為了資料的質量,每一輪都配有大量的集中測試,可憐的測試人員。

為了測試人員的工作更有價值也為了縮短停止服務的時間,通過使用dbms_stats.export_schame_stats和dbms_stats.import_schame_stats匯入測試庫上的統計資訊,而不用重新收集統計使用。

實現起來也很容易

 


CREATE OR REPLACE PROCEDURE JLSIMIS.export_stat_table
AS
   v_table   VARCHAR (60);
   v_num     NUMBER;
   v_sum     NUMBER;
BEGIN
   v_sum := 0;

   FOR idx IN (SELECT table_name
                 FROM user_tables
                WHERE table_name IN
                         ('AC01_T', 'AC02', 'AC04', 'AC20', 'AC21', 'AB09',
                          'AB14', 'AB15', 'KC21', 'KC22', 'KC24', 'KC04'))
   LOOP
      v_table := idx.table_name;

      BEGIN
         DBMS_STATS.delete_table_stats (ownname      => 'JLSIMIS',
                                        tabname      => v_table
                                       );
      END;

      BEGIN
         DBMS_STATS.import_table_stats (ownname      => 'JLSIMIS',
                                        tabname      => v_table,
                                        stattab      => 'STAT_TABLE'
                                       );
      END;
   END LOOP;

   DBMS_OUTPUT.put_line ('操作已經完成');
END;
/

CREATE OR REPLACE PROCEDURE JLSIMIS.import_stat_table
AS
   v_table   VARCHAR (60);
   v_num     NUMBER;
   v_sum     NUMBER;
BEGIN
   v_sum := 0;
--   DBMS_STATS.create_stat_table (ownname      => 'JLSIMIS',
--                                 stattab      => 'STAT_TABLE'
--                                );

   FOR idx IN (SELECT table_name
                 FROM user_tables
                WHERE table_name IN
                         ('AC01_T', 'AC02', 'AC04', 'AC20', 'AC21', 'AB09',
                          'AB14', 'AB15', 'KC21', 'KC22', 'KC24', 'KC04'))
   LOOP
      v_table := idx.table_name;
      DBMS_STATS.gather_table_stats (ownname      => 'JLSIMIS',
                                     tabname      => v_table);
      DBMS_STATS.export_table_stats (ownname      => 'JLSIMIS',
                                     tabname      => v_table,
                                     stattab      => 'STAT_TABLE'
                                    );
   END LOOP;

   DBMS_OUTPUT.put_line ('操作已經完成');
END;
/

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13726712/viewspace-671362/,如需轉載,請註明出處,否則將追究法律責任。

相關文章