【統計資訊】如何備份和還原統計資訊

恩強Boy發表於2020-11-30

一、 介紹

備份和還原統計資訊,是指利用儲存過程建立一個模板表,將儲存資訊儲存在模板表內。如果需要還原,則將模板表內的統計資訊匯出還原即可。

二、備份統計資訊

1. 使用者建立一個“統計資訊表”

SQL> conn test_user/oracle

SQL> exec dbms_stats.create_stat_table('TEST_USER','STAT_TIMESTAMP');

2. 傳輸統計資訊到“統計資訊表”

1 )傳輸多表的統計資訊到“統計資訊表”

SQL> exec dbms_stats.export_table_stats( user ,' TAB1 ',NULL,'STAT_TIMESTAMP');

SQL> exec dbms_stats.export_table_stats( user ,' TAB2 ',NULL,'STAT_TIMESTAMP');

SQL> exec dbms_stats.export_table_stats( user ,' TAB3 ',NULL,'STAT_TIMESTAMP');

2 )傳輸整個 schemas 的統計資訊

SQL> exec dbms_stats.export_schema_stats(user,'STAT_TIMESTAMP');

3) 傳輸system 統計資訊到“統計資訊表”

-- 檢查 system 狀態

SQL> select sname,pname,pval1 from sys.aux_stats$ where pval1 is not null ;

-- 建立統計資訊表

SQL> exec dbms_stats.create_stat_table(user,'STAT_TIMESTAMP');

-- 匯出

SQL> exec dbms_stats.export_system_stats('STAT_TIMESTAMP');

-- 匯入

SQL> exec dbms_stats.import_system_stats('STAT_TIMESTAMP');

3. 還原統計資訊

1) 還原某個表的統計資訊

SQL> exec dbms_stats.import_table_stats(NULL,' TAB1 ', NULL,'STAT_TIMESTAMP');

SQL> exec dbms_stats.import_table_stats(NULL,' TAB2 ', NULL,'STAT_TIMESTAMP');

SQL> exec dbms_stats.import_table_stats(NULL,' TAB3 ', NULL,'STAT_TIMESTAMP');

4. 查詢儲存在 STAT_TIMESTAMP 表中的統計資訊

SQL> select distinct c1 from STAT_TIMESTAMP where type ='T';

C1

------------------------------

TAB2

TAB1

TAB3

上面結果顯示,在表STAT_TIMESTAMP 中,存著 TAB1 , TAB2 , TAB3 三個表的統計資訊。

5. 還原所有表的統計資訊

SQL> exec dbms_stats.import_schema_stats(user,'STAT_TIMESTAMP');

 


---- end ----

 

 


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

相關文章