oracle数据库迁移时,如何导出导入统计信息

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。

Oracle统计信息是数据库用来优化查询性能的重要组成部分。统计信息包含了表的大小、行数、列的数据分布等信息,这些信息能帮助数据库优化器制定更高效的执行计划。
如果统计信息过时或不准确,查询性能可能会下降,因为优化器可能无法生成最优的执行计划。所以说统计信息对oracle至关重要,如何在做数据库迁移时,导出导入统计信息,下面为您详细介绍。

假设你的schema名称是 HR,统计信息表名称是 HR_STAT_TABLE,标识符是 HR_STATS_20240527。

(1)导出统计信息
–创建一个表叫做HR_STAT_TABLE
BEGIN
DBMS_STATS.CREATE_STAT_TABLE(ownname => ‘HR’, stattab => ‘HR_STAT_TABLE’);
END;
/

–将统计信息导出到HR_STAT_TABLE
BEGIN
DBMS_STATS.EXPORT_SCHEMA_STATS(ownname => ‘HR’, stattab => ‘HR_STAT_TABLE’, statid => ‘HR_STATS_20240527’);
END;
/

使用数据泵导出统计信息表
expdp hr/password directory=DATA_PUMP_DIR tables=HR.HR_STAT_TABLE dumpfile=hr_stat_table.dmp logfile=exp_hr_stat_table.log

(2)导入统计信息
在11g中使用数据泵导入统计信息表
impdp hr/password directory=DATA_PUMP_DIR dumpfile=hr_stat_table.dmp logfile=imp_hr_stat_table.log

在11g中收集数据字典的统计信息和统计信息表HR_STAT_TABLE的统计信息
–收集数据字典的统计信息
BEGIN
DBMS_STATS.GATHER_DICTIONARY_STATS(degree => DBMS_STATS.AUTO_DEGREE);
END;
/

–收集统计信息表HR_STAT_TABLE的统计信息
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => ‘HR’,
tabname => ‘HR_STAT_TABLE’,
estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
method_opt => ‘for all columns size repeat’,
no_invalidate => FALSE,
degree => DBMS_STATS.AUTO_DEGREE,
cascade=>TRUE
);
END;
/

在11g中导入统计信息
BEGIN
DBMS_STATS.IMPORT_SCHEMA_STATS(ownname => ‘HR’, stattab => ‘HR_STAT_TABLE’, statid => ‘HR_STATS_20240527’);
END;
/

注意事项
• 确保在导入前,目标环境中的表结构与源环境一致。
• 在导出导入过程中,关注日志文件中的错误和警告信息。
• 如果出现版本兼容性问题,可以尝试使用较低版本的导出格式。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老苏畅谈运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值