当前位置: 首页 > news >正文

19c做好这件事,大幅提升Data Pump工作效率

老司机遇到的新问题

expdp是Oracle 10g引入的数据导出工具,能够提供并行、压缩及元数据导出等更多的功能,在后续的版本中逐渐替代了传统的数据导出工具exp,是数据库开发运维常用的工具之一。在我的印象中,这个工具除了诸如大量的分区表等数据库对象较多的场景会出现对象解析慢的情况之外,一直运行都比较稳定。

但是近期客户在上线过程中发现一个expdp导出的性能问题,导出15g的数据用了10多分钟,比以往明显的慢不少。

问题的分析和定位比较简单,由于这个系统还没有上线,业务负载几乎为0,我们从采集的问题时间段AWR中TOP SQL部分很容易发现了下面这条语句:

在这里插入图片描述

这条语句执行928次,单次执行时间0.74s,总计耗时689秒(和客户反馈的导出时间基本吻合),调用模块正是Data Pump Worker,因此这条语句是重点怀疑对象。

根据SQL ID dqpwrs34cbf54找到SQL文本,发现是查询系统视图v_$open_cursor,

SELECT COUNT(*) FROM sys.v_$open_cursor WHERE sid = SYS_CONTEXT('USERENV', 'SID') AND cursor_type = 'OPEN_PLSQL';

在这里插入图片描述

解决方案

这个问题和已知Bug 28771564中记录的故障现象匹配,该Bug影响12.2.0.1以上版本,在20.1版本中修复。针对这个Bug,Oracle MOS中给出了针对相关版本的补丁。

事实上,Oracle还专门出了一个文档Doc ID 2819284.1 (Data Pump Recommended Proactive Patches For 19.10 and Above),针对19.10及以上版本的Data Pump工具,推荐一系列主动性补丁。比如19.22版本,推荐的Merge Patch 36092868中修复了多达172个Bug,建议大家可以核查自己的环境,必要的时候安装上这个补丁,以提升expdp/impdp的性能并规避已经发现的问题,减少踩坑的概率。

这里挑选几个和性能相关的Bug,供参考。

28771564: DATAPUMP EXPORT INVOKED BY A PRIVILEGE USER EXECUTES A QUERY FOR V$OPEN_CURSOR
26565187: DATA PUMP EXPORT PERFORMANCE IS MUCH SLOWER IN 12.2
32370367: EXPDP IN 19.7 THREE TIMES SLOWER THAN IT WAS IN 11.2.0.4
32421259: DATAPUMP EXPORT OF LARGE DATABASE TAKING TOO LONG TO COMPLETE AS COMPARED TO EXPDP
31668026: DATA PUMP EXPORT IGNORES ESTIMATE=BLOCKS

写在最后

这篇短文一方面介绍了这个影响范围广泛的Bug建议大家在自己的环境中复查,另一方面也展示了Oracle问题的常见分析思路,就是从AWR入手,根据发现的蛛丝马迹层层剖析,最终找出根本的原因所在。

接触国产库之后才深有体会,作为Oracle DBA是幸福的,不仅提供了AWR等详细的素材用于问题的分析诊断, MOS知识库中还记录了海量的故障案例可供参考和对比,帮助用户快速定位和解决问题。反观国产库,在运行时的数据采集和数据库指标上还存在较大的差距,文档和知识库更是相差甚远,要走的路还很长。

http://www.lryc.cn/news/423180.html

相关文章:

  • 6种常用的AR跟踪方法
  • HBO引爆血腥浪漫,尺度全开必看的影视剧推荐
  • 【kubernetes】pod控制器详解
  • Zookeeper学习、Tomcat
  • 软件测试基础知识与面试题最强总结(2024版)
  • ESP32播放网络音频文件
  • 端到端 AWS 定量分析:使用 AWS 和 AWSCLI 自动运行脚本
  • 数据结构与算法 - B树
  • Java二十三种设计模式-观察者模式(15/23)
  • opencv-python图像增强二:图像去雾(暗通道去雾)
  • 自研Vue3低代码海报制作平台第一步:基础拖拽组件开发
  • QT 的 QSettings 读写 INI 文件的示例
  • 【零基础学习CAPL语法】——testStep:测试结果输出函数
  • 8.5.数据库基础技术-规范化
  • 于博士Cadence视频教程学习笔记备忘
  • 8.3.数据库基础技术-关系代数
  • 【Vue3】vue模板中如何使用enum枚举类型
  • 组合求和2
  • Apple Maps现在可在Firefox和Mac版Edge浏览器中使用
  • 基于嵌入式Linux的数据库
  • C# 使用LINQ找出一个子字符串在另一个字符串中出现的所有位置
  • YOLOv8添加MobileViTv3模块(代码+free)
  • 从概念到落地:全面解析DApp项目开发的核心要素与未来趋势
  • 仓颉编程入门 -- 泛型概述 , 如何定义泛型函数
  • SOC估算方法之(OCV-SOC+安时积分法)
  • 指针(下)
  • C# 浅谈IEnumerable
  • mmdebstrap:创建 Debian 系统 chroot 环境的利器 ️
  • 【Linux SQLite数据库】一、SQLite交叉编译与移植
  • 每天写两道(数组篇)移除元素、