可以通过导入原来的statistics来得到原来的统计信息。
下面是步骤:
假设我要导出INV.MTL_SYSTEM_ITEMS_B的统计信息。
1.创建保存统计信息的表,这个表和要导出统计信息的表要在同一个schema下.
如果也导出index信息的话,同时index的owner是别的用户,在index owner的schema下也要建保存统计信息的表,否则报错。
exec DBMS_STATS.CREATE_STAT_TABLE(ownname =>'INV',stattab => 'STATS');
2.导出统计信息到inv.stat表.
exec DBMS_STATS.EXPORT_TABLE_STATS(ownname =>'INV',tabname => 'MTL_SYSTEM_ITEMS_B',stattab => 'STATS',cascade=>true);
ownname 表的owner
tabname 表名
stattab 统计信息保存表
cascade 是否导出index和column统计信息
3.export统计信息到文件
exp userid=system/sysod tables=(inv.stats) file=stats.dmp
4.传输stats.dmp到target db,然后import
imp '/ as sysdba' file=stats.dmp full=y
5.把统计信息导入到数据字典
exec DBMS_STATS.IMPORT_TABLE_STATS(ownname => 'INV',tabname => 'MTL_SYSTEM_ITEMS_B',stattab => 'STATS',cascade=>true);
下面是步骤:
假设我要导出INV.MTL_SYSTEM_ITEMS_B的统计信息。
1.创建保存统计信息的表,这个表和要导出统计信息的表要在同一个schema下.
如果也导出index信息的话,同时index的owner是别的用户,在index owner的schema下也要建保存统计信息的表,否则报错。
exec DBMS_STATS.CREATE_STAT_TABLE(ownname =>'INV',stattab => 'STATS');
2.导出统计信息到inv.stat表.
exec DBMS_STATS.EXPORT_TABLE_STATS(ownname =>'INV',tabname => 'MTL_SYSTEM_ITEMS_B',stattab => 'STATS',cascade=>true);
ownname 表的owner
tabname 表名
stattab 统计信息保存表
cascade 是否导出index和column统计信息
3.export统计信息到文件
exp userid=system/sysod tables=(inv.stats) file=stats.dmp
4.传输stats.dmp到target db,然后import
imp '/ as sysdba' file=stats.dmp full=y
5.把统计信息导入到数据字典
exec DBMS_STATS.IMPORT_TABLE_STATS(ownname => 'INV',tabname => 'MTL_SYSTEM_ITEMS_B',stattab => 'STATS',cascade=>true);
同样可以选择按schema导出或整个db的统计信息,可以参考文档Oracle9i Supplied PL/SQL Packages and Types Reference
Release 2 (9.2)中dbms_stat包的说明。