ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 转换后统计信息的导入导出

转换后统计信息的导入导出

原创 Linux操作系统 作者:dengxm 时间:2010-08-19 10:05:08 0 删除 编辑

最近半年一直在做数据转换,其实之前也做过不少数据转换。在任务紧、压力大、时间紧迫的情况下,缩短转换的时间,提高数据的质量就变的尤为重要了。一轮、二轮、三轮模拟转换后,就到了正式割接的日子。为了数据的质量,每一轮都配有大量的集中测试,可怜的测试人员。

为了测试人员的工作更有价值也为了缩短停止服务的时间,通过使用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/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 做人的八个问题
请登录后发表评论 登录
全部评论

注册时间:2008-10-08

  • 博文量
    54
  • 访问量
    147200