Oracle-expdp导出时间变长问题分析

前言:

近期处理了一起expdp导出时间变长的问题,在数据量没有较大增长的情况下,expdp导出时间发生倍数增长,后面分析发现是由于Bug 27634991导致在AMM,ASMM模式下,由于streams pool内存抖动触发了内存收缩,内存收缩的过程中会堵塞stream pool内存池里面的操作,导致expdp导出时间变长。                             

版本:

Oracle版本:11.2.0.4

问题:

expdp导出时间变长,3月14号的备份数据为83.57GB ,时间6分钟

3 月15号的备份数据为83.86GB 时间为46分钟

问题原因:

Bug 27634991导致在AMM,ASMM模式下,由于streams pool内存抖动触发了内存收缩,内存收缩的过程中会堵塞stream pool内存池里面的操作,导致expdp导出时间变长。

问题分析:

查看数据库的alert日志,没有发现报错

查看expdp导出dm,dw进程的运行状态以及等待时间,期间出现大量的等待Streams AQ: enqueue blocked on low memory,stream pool队列操作出现等待

查看stream pool 的历史使用情况,在3月15号导出期间,stream pool 发生内存收缩,这说明expdp导出期间存在stream pool内存抖动的情况

在官方文档Bug 27634991 - Datapump Frequently Waits On 'Streams AQ: enqueue blocked on low memory' (Doc ID 27634991.8),我们查到了在Oracle11.2.0.4,12.1,12.2,18版本下,Bug 27634991会导致在AMM,ASMM模式下,由于streams pool内存抖动触发进行内存收缩,内存收缩的过程中会堵塞stream pool内存池里面的操作,导致expdp导出时间变长

可以通过查询查stream pool 是否存在收缩状态,来确认是否遇到该问题

select shrink_phase_knlasg from X$KNLASG;
“1”。该值表示 streams pool 处于收缩阶段。当 streams pool 完成收缩时,该值应返回”0”,
但如果它一直返回”1”,则您可能遇到此问题。

查询当前的stream pool 收缩状态为1,结合当前数据库的版本11.2.0.4以及发生的现象,我们可以确认问题命中了Bug 27634991,在AMM,ASMM模式下,由于streams pool内存抖动触发了内存收缩,内存收缩的过程中会堵塞stream pool内存池里面的操作,导致expdp导出时间变长。

问题修复:

1 应用补丁27634991,修复bug问题

2 手动强制完成stream pool 内存池空间收缩,临时规避该问题

alter system set events 'immediate trace name mman_create_def_request level 6';

3 调整stream pool的大小避免出现内存抖动,将内存256M调整为512M

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[2\]和引用\[3\]的内容,expdp导出时间数据的方法是通过在expdp命令中使用query参数来指定时间范围。例如,可以使用类似以下的命令来导出某个时间段的数据expdp 用户名/密码 directory=导出目录 dumpfile=导出文件名 tables=表名 query="表名:'where 时间列 > to_date('起始日期','yyyy-mm-dd') and 时间列 < to_date('结束日期','yyyy-mm-dd')'" 其中,用户名/密码是数据库用户的登录凭证,导出目录是导出文件的存放路径,导出文件名是导出数据文件的名称,表名是要导出的表名,起始日期和结束日期是要导出时间段的起始日期和结束日期。 请注意,以上命令中的时间列是指表中的一个日期类型的列,需要根据实际情况进行替换。另外,还可以根据需要导出多个表的数据,只需在tables参数中指定多个表名,并在query参数中为每个表指定相应的时间条件。 希望以上信息对您有所帮助。 #### 引用[.reference_title] - *1* [Oracle-expdp导出时间变长问题分析](https://blog.csdn.net/sinat_36757755/article/details/128355412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [使用query条件进行expdp导出](https://blog.csdn.net/weixin_35891787/article/details/116911442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值