产品:
- Oracle 数据库 – 企业版 – 所有版本
- Oracle 数据库 – 标准版 – 所有版本
- 本篇文档的信息适用于所有平台
下面概述的过程将引导用户收集诊断数据,这将有助于 Support 缩小问题的原因。
本文档专门为读者提供以下必要的指导:
- 收集开始分析 Data Pump 导入性能问题所需的所有诊断数据
- Support 将使用这些信息来指导他们对这个问题的调查。
安全声明: Oracle 将使用此信息来帮助诊断问题的原因。在许多情况下,这组信息将足以用于诊断 - 在某些情况下,可能需要在稍后阶段提供额外的特定诊断数据。
在创建新的 DataPump 导入性能 SR 时收集并提供以下数据:
1. 提供性能问题的明确的问题描述。
2. 提供以下信息:
- 产生 dump 文件的 expdp 客户端版本
- 源数据库版本(例如, expdp 运行的数据库)
- 目标数据库版本(例如, impdp 开始的数据库)
- 用于启动 impdp 程序的完整命令
- 导入的参数文件(如果使用了的话)
- 完整的 impdp 日志文件
- 数据库服务器的完整 alert.log 文件
3. 请回答以下问题:
b. DataPump 导入是否工作得快过?如果是,数据结构是否改变或者数据量是否增加?
c. 是否是特定对象遇到性能问题?如果是,则提供对象名称。
4. 生成并收集 DataPump 导入的 SQL 跟踪。
首先确保在 DataPump 导入启动之前将参数 MAX_DUMP_FILE_SIZE 设置为 UNLIMITED:
SQL> alter system set max_dump_file_size = unlimited;
然后选择以下任一方法:
A. 在 impdp 命令中添加参数 METRICS=Y TRACE=480300 (或者 480301 捕获 SQL trace) 并重新运行 import.
请注意,TRACE 参数要求使用 DataPump 导入连接到数据库的用户是有权限的用户(即授予了 DBA 或 EXP_FULL_DATABASE 角色的用户)。
或者:
B. 对 DataPump Master(DM)和 Worker(DW)进程启用 level 12 的 10046 trace(对于版本 >= 11g):
-- 版本 >= 11g and < 12c
SQL> alter system set events 'sql_trace {process : pname = dw | pname = dm} level=12';
-- 版本 = 12c
SQL> alter system set events 'sql_trace {process: pname = dw | process: pname = dm} level=12';
然后用参数 METRICS = Y 加入命令行启动 impdp。
要禁用跟踪执行:
SQL> connect / as sysdba
-- 版本 >= 11g and < 12c
SQL> alter system set events 'sql_trace {process : pname = dw | pname = dm} off';
-- 版本 = 12c
SQL> alter system set events 'sql_trace {process: pname = dw | process: pname = dm} off';
或者:
C. 跟踪已经开始运行的 DataPump 导入进程:
在 SQL*Plus 中, 获取 DataPump 进程信息:
SQL> set lines 150 pages 100 numwidth 7
SQL> col program for a38
SQL> col username for a10
SQL> col spid for a7
SQL> select to_char (sysdate, 'YYYY-MM-DD HH24:MI:SS') "DATE", s.program, s.sid, s.status, s.username, d.job_name, p.spid, s.serial#, p.pid
from v$session s, v$process p, dba_datapump_sessions d
where p.addr = s.paddr and s.saddr = d.saddr and
(UPPER (s.program) LIKE '%DM0%' or UPPER (s.program) LIKE '%DW0%');
确认 Data Pump Worker SID 和 SERIAL# (例如,对于 DM<xx> 和 DW<xx> 进程)。
以 level 12跟踪 Master/Worker 进程 (bind 和 wait 信息):
等待一段时间(至少1 小时)捕获足够的信息。
结束跟踪:
对于所有方法,DataPump Master 和Worker trace文件都被写到BACKGROUND_DUMP_DEST 或者 <ADR_HOME>/trace。
有关为数据泵导入生成 SQL 跟踪的其他可用选项,请参阅文档:
Note 286496.1 Export/Import DataPump Parameter TRACE - How to Diagnose Oracle Data Pump
Note 813737.1 How To Use The New 11g Events++ Syntax For Easier SQL Tracing Of Datapump Operations?
5. 收集问题发生时的 AWR 信息。
参考 Note 748642.1 How to Generate an AWR Report and Create Baselines for instructions.
SQL> @?/rdbms/admin/awrrpt.sql
6. 如果性能问题发生在特定的对象上 ,请提供以下输出:
SQL> set long 20000
SQL> select owner,object_type,data_object_id from dba_objects where object_name='<OBJECT_NAME>';
SQL> select dbms_metadata.get_ddl('<OBJECT_TYPE>','<OBJECT_NAME>','<SCHEMA_NAME>') from dual;
7. 在问题发生时运行脚本 srdc_impdp_performance.sql。
下载附件 srdc_impdp_performance.sql 脚本。
作为 SYSDBA 连接并在问题发生时运行脚本:
例子:
SQL> @srdc_impdp_performance.sql
--等待10分钟
SQL> @srdc_impdp_performance.sql
--等待10分钟
SQL> @srdc_impdp_performance.sql
压缩(以 .zip,.tar 或 .gz 格式)所有上述文件,并在 SR 创建时将所有证据附加到服务请求。 在上载到 SR 之前以 impdp_performance_details_<date>.zip/.tar/.gz 命名文件。