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

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

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

转载于:http://blog.itpub.net/13726712/viewspace-671362/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值