详解Expdp/Impdp三种性能诊断方法--如何有效定位瓶颈?

开发 架构
在导出导入过程中,偶尔会遇到一些性能问题,可以会因主机资源,数据库版本,PSU版本,datapump本身bug等原因导致。

 概述

在导出导入过程中,偶尔会遇到一些性能问题,可以会因主机资源,数据库版本,PSU版本,datapump本身bug等原因导致。

这里首先可根据需求判断是在哪个环节出问题,导出/导入元数据还是数据时出现性能问题;是否是导出/导入特定对象遇到性能问题?

[[274495]]

对于这些问题,MOS上提供了如下3种诊断方法(只演示第三种):

方法一

在expdp/imdp命令中添加参数METRICS=Y TRACE=480300 (或者 480301 捕获SQL trace) 并重新运行expdp/impdp

方法二

对DataPump Master (DM) 和 Worker (DW)进程启用level 12的10046 trace

  1. -- 版本>= 11g and < 12c  
  2. SQL> alter system set events 'sql_trace {process : pname = dw | pname = dm} level=12';  
  3. -- 版本= 12c  
  4. SQL> alter system set events 'sql_trace {process: pname = dw | process: pname = dm} level=12'
  5. 然后用参数METRICS = Y加入命令行启动expdp/impdp 

方法三:(推荐)

1、查看运行的DataPump 导出进程

  1. connect / as sysdba  
  2. set lines 350 pages 400 numwidth 7  
  3. col program for a38  
  4. col username for a10  
  5. col spid for a7  
  6. select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS'"DATE"
  7.  s.program, 
  8.  s.sid, 
  9.  s.status, 
  10.  s.username, 
  11.  d.job_name, 
  12.  p.spid, 
  13.  s.serial#, 
  14.  p.pid 
  15.  from v$session s, v$process p, dba_datapump_sessions d 
  16.  where p.addr = s.paddr 
  17.  and s.saddr = d.saddr 
  18.  and (UPPER(s.program) LIKE '%DM0%' or UPPER(s.program) LIKE '%DW0%'); 

 

 

详解expdp/impdp三种性能诊断方法--如何有效定位瓶颈?

 

 

2、跟踪已经开始运行的DataPump 导出进程

  1. --确认Data Pump Worker SID 和 SERIAL#(例如. 对于 DM 和DW 进程), 以level 12跟踪 Master/Worker 进程 (bind和wait信息): 
  2. SQL> exec sys.dbms_system.set_ev (SID, SERIAL#, 10046, 12, ''); 

 

 

详解expdp/impdp三种性能诊断方法--如何有效定位瓶颈?

 

 

说明:

  1. DM00是Data Pump Master Process 
  2. The Data Pump master (control) process is started during job creation and coordinates all tasks performed by the Data Pump job. It handles all client interactions and communication, establishes all job contexts, and coordinates all worker process activities on behalf of the job. 
  3. 数据泵主(控制)过程在作业创建期间启动,并协调数据泵作业执行的所有任务。 它处理所有客户端交互和通信,建立所有作业上下文,并代表作业协调所有工作进程活动。 
  4. DW00是Data Pump Worker Process 
  5. The Data Pump worker process is responsible for performing tasks that are assigned by the Data Pump master process, such as the loading and unloading of metadata and data. 
  6. Data Pump工作进程负责执行由Data Pump主进程分配的任务,例如元数据和数据的加载和卸载。 

3、结束跟踪

等待一段时间 (至少1 小时) 以捕获足够的信息。

  1. --结束跟踪 
  2. SQL> exec sys.dbms_system.set_ev (SID, SERIAL#, 10046, 0, ''); 

 

 

详解expdp/impdp三种性能诊断方法--如何有效定位瓶颈?

 

 

对于所有方法,DataPump Master 和Worker trace文件都被写到BACKGROUND_DUMP_DEST 或者 /trace。

4、捕获trace文件

  1. SQL> show parameter BACKGROUND_DUMP_DEST; 
  2. SQL> select * from v$diag_info WHERE name='Default Trace File'

 

 

详解expdp/impdp三种性能诊断方法--如何有效定位瓶颈?

 

 

 

 

详解expdp/impdp三种性能诊断方法--如何有效定位瓶颈?

 

 

以上为MOS提供的诊断方法,可灵活的使用,查询出DataPump进程的SID后可以查询是否有会话阻塞,异常等待事件是什么?

比如由于“StreamsAQ: enqueue blocked on low memory”等待事件导致expdp / impdp命令出现严重性能问题,是因为Bug 27634991引起的(在版本19.1及更高版本中修复了)。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2019-10-31 11:50:19

MySQL数据库Windows

2009-04-01 11:17:52

内存分配调优Oracle

2019-07-25 07:14:03

LinuxSync操作系统

2010-08-30 09:15:15

DIV高度自适应

2019-09-18 08:06:08

Redis数据库命令

2022-01-04 16:50:47

JavaScript图片网站

2014-12-31 17:42:47

LBSAndroid地图

2009-07-23 15:17:54

JDBC连接Acces

2017-08-01 15:33:01

云迁移云安全数据泄露

2021-07-13 12:31:27

IT组织改进首席技术官

2017-08-07 09:24:43

云迁移安全方法

2016-09-12 14:07:14

Android 定时器

2009-07-30 16:27:33

C#比较时间

2009-12-01 09:18:22

Linux版本

2021-11-23 10:30:35

Android技术代码

2014-10-24 14:44:25

量化网络无线网络性能测试

2024-05-20 09:19:45

请求合并容器

2013-03-27 10:01:53

网络应用检测工具

2020-12-22 08:15:05

Java字节流字符流

2019-08-30 17:24:41

microservic微服务
点赞
收藏

51CTO技术栈公众号