Oracle备份统计信息

僤鯓⒐⒋嵵緔 提交于 2019-12-22 03:28:05

Oracle可以通过DBMS_STATS.GET_TABLE_STATS 收集表的统计信息,一般的收集方法如下:

DBMS_STATS.GATHER_TABLE_STATS(OWNNAME          => '', 
                                TABNAME          => '',   
                                ESTIMATE_PERCENT => 80,   
                                DEGREE           => 4, 
                                METHOD_OPT       => '',   
                                CASCADE          => TRUE,   
                                GRANULARITY => 'ALL',      
                                NO_INVALIDATE    => FALSE); 

  

如果表的数据量比较稳定, 比如员工表,部门表,这种不经常变化的数据,并不需要每天收集统计信息。

那么可以通过导出导入的方式对统计信息进行备份。

 

1. 创建一张表来保存统计信息

BEGIN
  DBMS_STATS.CREATE_STAT_TABLE(OWNNAME  => 'SCOTT',
                               STATTAB  => 'T_BI_STATS',
                               TBLSPACE => 'USERS');
END;
/

  

2. 导出scott.emp 的统计信息,存放到t_bi_stats表中,指定的statid字段名称是 EMP20190705

BEGIN
  DBMS_STATS.EXPORT_TABLE_STATS(OWNNAME => 'SCOTT',
                                TABNAME => 'EMP',
                                STATTAB => 'T_BI_STATS',
                                STATID  => 'EMP20190705');
END;
/

  

3. 删除scott.emp 的统计信息

BEGIN
  dbms_stats.delete_table_stats(ownname => 'SCOTT',tabname => 'EMP');
END;
/

  

4. 导入统计信息到 emp表中

BEGIN
  DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME => 'SCOTT',
                                TABNAME => 'EMP',
                                STATTAB => 'T_BI_STATS',
                                STATID  => 'EMP20190705');
END;
/ 

  

5. 如果感觉统计信息存放太多,可以指定某些统计信息进行删除

BEGIN
  DBMS_STATS.DELETE_TABLE_STATS(OWNNAME => 'SCOTT',
                                TABNAME => 'EMP',
                                STATTAB => 'T_BI_STATS',
                                STATID  => 'EMP20190705');
END;
/

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!