概述在导出和导入的过程中,您可能会偶尔遇到一些性能问题,这可能是由主机资源、数据库版本、PSU版本、datapump本身的bug等引起的。这里可以先根据需求判断是哪个环节出了问题,是否在导出/导入元数据或数据时出现了性能问题;导出/导入特定对象时是否存在性能问题?针对这些问题,MOS提供了以下三种诊断方法(仅演示第三种方法):方法一在expdp/imdp命令中添加参数METRICS=YTRACE=480300(或480301捕获SQLtrace),重新运行expdp/impdp方法2forDataPumpMaster(DM)和Worker(DW)10046traceofprocessenablelevel12--version>=11gand<12cSQL>altersystemsetevents'sql_trace{process:pname=dw|pname=dm}level=12';--version=12cSQL>altersystemsetevents'sql_trace{process:pname=dw|process:pname=dm}level=12';然后在命令行添加参数METRICS=Y启动expdp/impdp方法三:(推荐)1.查看正在运行的DataPump导出进程connect/assysdbasetlines350pages400numwidth7colprogramfora38colusernamefora10colspidfora7selectto_char(sysdate,'YYYY-MM-DDHH24:MI:SS')"DATE",s.program,s.sid,s.status,s.username,d.job_name,p.spid,s.serial#,p.pidfromv$sessions,v$processp,dba_datapump_sessionsdwherep.addr=s.paddrands.saddr=d.saddrand(UPPER(s.program)LIKE'%DM0%'orUPPER(s.program)LIKE'%DW0%');2、跟踪已经开始运行的DataPump导出进程--确认DataPumpWorkerSID和SERIAL#(例如DM和DW进程),跟踪Master/Worker进程(绑定和等待信息)与level12:SQL>execsys.dbms_system.set_ev(SID,SERIAL#,10046,12,'');说明:DM00是DataPumpMasterProcessTheDataPumpmaster(control)processisstartedduringjobcreationandcoordinatesalltasksperformedbytheDataPumpjob.Ithandlesallclientinteractionsandcommunication,establishesalljobcontexts,andcoordinatesallworkerprocessactivitiesonbehalfofthejob.数据泵主(控制)过程在作业创建期间启动,并协调数据泵作业执行的所有任务。它处理所有客户端交互和通信,建立所有作业上下文,并代表作业协调所有工作进程活动。DW00是DataPumpWorkerProcess,DataPumpworker进程负责执行由DataPumpmaster进程分配的任务,例如元数据和数据的加载和卸载。DataPumpworker进程负责执行DataPumpmaster进程分配的任务,例如元数据和数据的加载和卸载。3.结束跟踪等待一段时间(至少1小时)以捕获足够的信息。--endtraceSQL>execsys.dbms_system.set_ev(SID,SERIAL#,10046,0,'');对于所有方法,DataPumpMaster和Worker跟踪文件都写入Background_DUMP_DEST或/trace。4.捕获跟踪文件SQL>showparameterBACKGROUND_DUMP_DEST;SQL>select*fromv$diag_infoWHEREname='DefaultTraceFile';以上是MOS提供的诊断方法,大家可以灵活运用。查询DataPump进程的SID后,可以查询是否有会话阻塞或异常等待等事件。例如,由错误27634991(已在版本19.1及更高版本中修复)导致的“StreamsAQ:在内存不足时阻塞排队”等待事件导致的expdp/impdp命令出现严重的性能问题。
