最近半年一直在做数据转换,其实之前也做过不少数据转换。在任务紧、压力大、时间紧迫的情况下,缩短转换的时间,提高数据的质量就变的尤为重要了。一轮、二轮、三轮模拟转换后,就到了正式割接的日子。为了数据的质量,每一轮都配有大量的集中测试,可怜的测试人员。
为了测试人员的工作更有价值也为了缩短停止服务的时间,通过使用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/