您的位置:首页 > 数据库 > Oracle

导出/导入DataPump参数TRACE - 如何诊断Oracle数据泵(文档 ID 286496.1)

2017-01-13 15:15 676 查看
导出/导入DataPump参数TRACE - 如何诊断Oracle数据泵(文档 ID 286496.1)

1、介绍

在Oracle10g中,我们引入了新的数据库实用程序Export Data Pump和Import Data Pump。

数据泵作业使用主表,主进程和工作进程来执行工作并跟踪进度。 对于每个数据泵导出作业和数据泵导入作业,将创建一个主进程。 主进程控制整个作业,包括与客户端通信,创建和控制工作进程池,以及执行日志操作。

完整数据库导出数据泵以并行度2方式运行时的输出示例:

% expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_f%U.dmp \ LOGFILE=expdp_f.log FULL=y PARALLEL=2

% ps -ef | grep expdp 
oracle    8874  8704  1 07:00 pts/2    00:00:03 expdp                DIRECTORY=my_dir ... 

% ps -ef | grep ORCL 
oracle    8875  8874  4 07:00 ?        00:00:11 oracleORCL (DESCRIPTION=(LOCAL=YES) ...  
oracle    8879     1  3 07:00 ?        00:00:08 ora_dm00_ORCL  
oracle    8881     1 94 07:00 ?        00:04:17 ora_dw01_ORCL  
oracle    8893     1  3 07:00 ?        00:00:09 ora_dw02_ORCL  
... 

-- Obtain Data Pump process info:
set lines 150 pages 100 numwidth 7 
col program for a38 
col username for a10 
col spid for a7 
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;  

DATE                PROGRAM                                    SID STATUS 
------------------- -------------------------------------- ------- -------- 
2007-10-19 07:01:03 ude@celclnx7.us.oracle.com (TNS V1-V3)     140 ACTIVE 
2007-10-19 07:01:03 oracle@celclnx7.us.oracle.com (DM00)       152 ACTIVE 
2007-10-19 07:01:03 oracle@celclnx7.us.oracle.com (DW01)       144 ACTIVE 
2007-10-19 07:01:03 oracle@celclnx7.us.oracle.com (DW02)       159 ACTIVE 

USERNAME   JOB_NAME                       SPID    SERIAL#     PID 
---------- ------------------------------ ------- ------- ------- 
SYSTEM     SYS_EXPORT_FULL_01             8875          8      18 
SYSTEM     SYS_EXPORT_FULL_01             8879         21      21 
SYSTEM     SYS_EXPORT_FULL_01             8881          7      22 
SYSTEM     SYS_EXPORT_FULL_01             8893         26      23

当数据泵作业完成或(临时)停止时,数据泵进程将消失。

使用这些实用程序实现了改进的跟踪功能。 跟踪可以使用TRACE参数控制。

数据泵是基于服务器的,而不是基于客户端。 这意味着大多数数据泵特定缺陷将在服务器端(源数据库和目标数据库中的包更改)而不是在客户端(导出或导入数据泵客户端)修复。 如果在导入作业期间发生的数据泵缺陷在以后的补丁集(例如10.2.0.4.0)中修复了,并且目标数据库仍在基本版本(10.2.0.1.0)上,则导入时仍会出现缺陷。 这同样适用于导出工作。 因此,建议源数据库和目标数据库都安装最新的补丁集。 有关详细信息,请参阅:

Note:553337.1 "Export/Import DataPump Parameter VERSION - Compatibility of Data Pump Between Different Oracle Versions"

2、如何创建数据泵追踪文件?参数:trace
可以通过在Export DataPump(expdp)或Import DataPump(impdp)的TRACE参数中指定一个7位十六进制掩码来启用跟踪。 前三个数字启用对特定数据泵组件的跟踪,而后四个数字通常为:0300。

任何前导零都可以省略,为TRACE参数指定的值不区分大小写。

例如:

  TRACE = 04A0300

-- or:

TRACE=4a0300
为TRACE参数指定值时要记住的一些规则:

- 不要指定多于7个十六进制数字;

- 不要指定典型的前导0x十六进制规范字符;

- 不要将十六进制值转换为十进制值;

- 忽略任何前导零(但不是必需的);

- 值不区分大小写。

使用TRACE参数时,如果数据泵作业与非特权用户一起运行,则可能会发生错误,例如:

  % expdp scott/tiger DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \ 

LOGFILE=expdp_s.log TABLES=emp TRACE=480300 

Export: Release 10.2.0.3.0 - Production on Friday, 19 October, 2007 13:46:33 

Copyright (c) 2003, 2005, Oracle. All rights reserved. 

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production 

With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options 

ORA-31631: privileges are required

要解决此问题,请确保使用“导出数据泵”或“导入数据泵”实用程序连接到数据库的用户是特权用户(即具有DBA角色或EXP_FULL_DATABASE或IMP_FULL_DATABASE角色的用户),例如:

  -- run this Data Pump job with TRACE as a privileged user:

% expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \  

LOGFILE=expdp_s.log TABLES=scott.emp TRACE=480300  

-- or:

-- make user SCOTT a privileged user:

CONNECT / AS SYSDBA

GRANT exp_full_database TO scott;

% expdp scott/tiger DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \   

LOGFILE=expdp_s.log TABLES=emp TRACE=480300  

有关详细信息,请参阅:

Note:351598.1 "Export/Import DataPump: The Minimum Requirements to Use Export DataPump and Import DataPump (System Privileges)"

还要确保init.ora / spfile初始化参数MAX_DUMP_FILE_SIZE足够大,以捕获所有跟踪信息(或将其设置为unlimited,这是默认值),例如:

  -- Ensure enough trace data can be written to the trace files:

CONNECT / as sysdba

SHOW PARAMETER max_dump 

NAME                                 TYPE        VALUE 

------------------------------------ ----------- ------------------------------ 

max_dump_file_size                   string      10M 

ALTER SYSTEM SET max_dump_file_size = unlimited SCOPE = both; 

SHOW PARAMETER max_dump  

NAME                                 TYPE        VALUE 

------------------------------------ ----------- ------------------------------ 

max_dump_file_size                   string      UNLIMITED

在数据泵作业期间发生的大多数错误可以通过为主控制进程(MCP)和工作进程(es)创建跟踪文件来诊断,例如:

  -- To run a Data Pump job with standard tracing:

-- This results in two trace files in BACKGROUND_DUMP_DEST:  

--    Master Process trace file: <SID>_dm<number>_<process_id>.trc   

--    Worker Process trace file: <SID>_dw<number>_<process_id>.trc   

% expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \  

LOGFILE=expdp_s.log SCHEMAS=scott TRACE=480300
可以显式指定每个数据泵组件,以获取该组件的跟踪详细信息:

  -- Summary of Data Pump trace levels:

-- ==================================

  Trace   DM   DW  ORA  Lines

  level  trc  trc  trc     in

  (hex) file file file  trace                                         Purpose

------- ---- ---- ---- ------ -----------------------------------------------

  10300    x    x    x  SHDW: To trace the Shadow process (API) (expdp/impdp)

  20300    x    x    x  KUPV: To trace Fixed table

  40300    x    x    x  'div' To trace Process services

  80300    x            KUPM: To trace Master Control Process (MCP)      (DM)

 100300    x    x       KUPF: To trace File Manager

 200300    x    x    x  KUPC: To trace Queue services

 400300         x       KUPW: To trace Worker process(es)                (DW)

 800300         x       KUPD: To trace Data Package

1000300         x       META: To trace Metadata Package

------- 'Bit AND'

1FF0300    x    x    x  'all' To trace all components          (full tracing)

可以组合跟踪数据泵组件,例如:

  -- Example of combination (last 4 digits are usually 0300): 

 40300 to trace Process services

 80300 to trace Master Control Process (MCP)

400300 to trace Worker process(es) 

------- 'Bit AND'

4C0300 to trace Process services and Master Control and Worker processes

为了跟踪所有数据泵组件,可以指定级别1FF0300:

  -- Run a Data Pump job with full tracing: 

-- This results in two trace files in BACKGROUND_DUMP_DEST:    

--    Master Process trace file: <SID>_dm<number>_<process_id>.trc     

--    Worker Process trace file: <SID>_dw<number>_<process_id>.trc     

-- And one trace file in USER_DUMP_DEST:    

--    Shadow Process trace file: <SID>_ora_<process_id>.trc     

% impdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \    

LOGFILE=impdp_s.log FULL=y TRACE=1ff0300 

注意:对于初始数据泵跟踪,值480300就足够了。 当指定值480300时,我们将跟踪主控制进程(MCP)和工作进程。 创建数据泵跟踪文件时,建议使用值480300,除非Oracle支持部门要求不同的跟踪级别。

3、如何开始跟踪数据泵作业?

根据导出或导入数据泵作业的启动方式,有几种方法可激活数据泵流程的跟踪。

3.1、在作业开始时使用TRACE参数。

通过在导出数据泵或导入数据泵启动时指定TRACE参数和跟踪级别来启动跟踪。 这是激活数据泵跟踪的标准方法。

例:

  % expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \

LOGFILE=expdp_s.log TABLES=scott.emp TRACE=480300

3.2、重新启动作业时使用TRACE参数。

如果导出或导入数据泵作业在没有TRACE参数的情况下启动,可以暂时停止,并使用TRACE参数重新启动。

例:

  % expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_f.dmp \ 

LOGFILE=expdp_f.log FULL=Y

Export: Release 10.2.0.3.0 - Production on Thursday, 18 October, 2007 17:11:08 

Copyright (c) 2003, 2005, Oracle.  All rights reserved. 

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production 

With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options 

FLASHBACK automatically enabled to preserve database integrity. 

Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/******** DIRECTORY=my_dir 

DUMPFILE=expdp_f.dmp LOGFILE=expdp_f.log FULL=y 

Estimate in progress using BLOCKS method... 

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA-- press Control-C to go to the Interactive Command mode, 

-- and temporarystop the job with the STOP_JOB command:

Export> stop 

Are you sure you wish to stop this job ([yes]/no): yes 

-- use the system generated job-name SYS_EXPORT_FULL_01 to re-attach to the job

-- and specify the TRACE parameter with a tracing level:

% expdp system/manager ATTACH=sys_export_full_01 TRACE=480300

Export: Release 10.2.0.3.0 - Production on Thursday, 18 October, 2007 17:23:48 

Copyright (c) 2003, 2005, Oracle.  All rights reserved. 

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production 

With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options 

Job: SYS_EXPORT_FULL_01 

  Owner: SYSTEM 

  Operation: EXPORT 

  Creator Privs: FALSE 

  GUID: F4E6BF997DFA46378D543F998E82653E 

  Start Time: Thursday, 18 October, 2007 17:23:49 

  Mode: FULL 

  Instance: m10203wa 

  Max Parallelism: 1 

  EXPORT Job Parameters: 

  Parameter Name      Parameter Value: 

     CLIENT_COMMAND        system/******** DIRECTORY=my_dir DUMPFILE=expdp_f.dmp 

LOGFILE=expdp_f.log FULL=y 

  State: IDLING 

  Bytes Processed: 0 

  Current Parallelism: 1 

  Job Error Count: 0 

  Dump File: /usr/DataPump/expdp_f.dmp 

    bytes written: 4,096 

Worker 1 Status: 

  State: UNDEFINED 

-- restart the job and change back from Interactive Command mode to Logging mode

-- with CONTINUE_CLIENT (note that tracing with level 480300 is now active):

Export> cont 

Restarting "SYSTEM"."SYS_EXPORT_FULL_01":  system/******** DIRECTORY=my_dir 

DUMPFILE=expdp_f.dmp LOGFILE=expdp_s.log FULL=y 

Processing object type DATABASE_EXPORT/TABLESPACE 

Processing object type DATABASE_EXPORT/PROFILE

...

3.3、使用数据库init.ora / spfile事件来跟踪数据泵。

也可以使用初始化参数文件中带有EVENT 39089的行来启动数据泵跟踪。 此方法应仅用于在早期状态下跟踪数据泵调用,例如。 如果需要有关DBMS_DATAPUMP.OPEN API调用的详细信息。 跟踪级别0x300将跟踪所有数据泵客户端进程。

使用init.ora初始化参数文件时的示例:

  - add the following line to init.ora parameter file:  

EVENT="39089 trace name context forever,level 0x300"  

- Restart the database. 

- Start the Export Data Pump or Import Data Pump job.

使用spfile初始化参数文件时的示例:

  -- when using spfile parameter file:

CONNECT / as sysdba  

SHOW PARAMETER event

NAME                                 TYPE        VALUE 

------------------------------------ ----------- ------------------------------ 

event                                string

ALTER SYSTEM SET EVENTS = '39089 trace name context forever, level 0x300'  

 SCOPE = spfile;  

SHUTDOWN immediate

STARTUP

SHOW PARAMETER event 

NAME                                 TYPE        VALUE 

------------------------------------ ----------- ------------------------------ 

event                                string      39089 trace name context forev 

                                                 er, level 0x300

- Start the Export Data Pump or Import Data Pump job.

-- to remove the event(s) again:

ALTER SYSTEM RESET EVENT SCOPE = spfile SID='*';   

SHUTDOWN immediate 

STARTUP

此外,还可以使用以下命令在系统级别启用和禁用事件39089:

  -- Enable event

ALTER SYSTEM SET EVENTS = '39089 trace name context forever, level 0x300' ;

-- Disable event

ALTER SYSTEM SET EVENTS = '39089 trace name context off' ;

注意:

如果需要在作业执行的早期状态下跟踪,则仅设置此事件39089。 对于正常的标准跟踪,使用TRACE参数,如3.1节所述。 和3.2。 以上。

有关设置事件的详细信息,请参阅:

Note:160178.1 "How to set EVENTS in the SPFILE"

4.如何命名数据泵跟踪文件,以及在哪里找到它们?

数据泵跟踪文件将写入init.ora / spfile初始化参数BACKGROUND_DUMP_DEST和USER_DUMP_DEST指定的目录。

4.1数据泵主控制过程(MCP)。

格式:<SID> _dm <number> _ <process_id> .trc

示例:ORCL_dm00_2896.trc或:ORCL_dm01_3422.trc(用于第二个活动主控制进程)

位置:BACKGROUND_DUMP_DEST或<ADR_HOME> / trace

4.2 数据泵工作进程跟踪文件。

格式:<SID> _dw <number> _ <process_id> .trc

示例:ORCL_dw01_2936.trc或:ORCL_dw01_2844.trc和ORCL_dw02_2986.trc(如果PARALLEL = 2)

位置:BACKGROUND_DUMP_DEST或<ADR_HOME> / trace

4.3 数据泵阴影进程跟踪文件。

格式:<SID> _ora_ <process_id> .trc

示例:ORCL_ora_3020.trc

位置:USER_DUMP_DEST或<ADR_HOME> / trace

  -- determine location of the trace files on disk (Oracle10g):

CONNECT system/manager  

SHOW PARAMETER dump  

NAME                                 TYPE        VALUE 

------------------------------------ ----------- ----------------------------- 

background_dump_dest                 string      /oracle/admin/ORCL/BDUMP 

user_dump_dest                       string      /oracle/admin/ORCL/UDUMP

...

-- determine location of the trace files on disk (Oracle11g): 

CONNECT system/manager 

SHOW PARAMETER diag 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ----------------------------- 

diagnostic_dest                      string      /oracle

注意,在Oracle10g中,跟踪文件的默认位置是:$ ORACLE_HOME / rdbms / log

如果未设置初始化参数BACKGROUND_DUMP_DEST和/或USER_DUMP_DEST,将使用此位置。

对于Oracle11g,跟踪文件将写入<ADR_HOME> / trace

其中<ADR_HOME>是:<ADR_BASE> / diag / <product_type> / <prod_id> / <instance_id>

其中<ADR_BASE>由DIAGNOSTIC_DEST指定(默认为:$ ORACLE_HOME / log)。

例如:/ oracle / diag / rdbms / ORCL / ORCL / trace

有关详细信息,请参阅:

Note:422893.1 "11g Understanding Automatic Diagnostic Repository"

5.如何获取数据泵作业的详细状态报告? 参数:STATUS

如果启动数据泵,则可以在交互命令模式下使用STATUS参数获取作业的详细状态报告。

例:

  % expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_f%U.dmp \ 

LOGFILE=expdp_f.log FILESIZE=2g FULL=y 

Export: Release 10.2.0.3.0 - 64bit Production on Friday, 19 October, 2007 14:05:33 

Copyright (c) 2003, 2005, Oracle.  All rights reserved. 

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production 

With the Partitioning, OLAP and Data Mining options 

Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/******** DIRECTORY=my_dir 

DUMPFILE=expdp_f%U.dmp LOGFILE=expdp_f.log FILESIZE=2g FULL=y 

Estimate in progress using BLOCKS method... 

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 

-- press Control-C to go to the Interactive Command mode,  

-- and get a STATUS report of the job: 

Export> status 

Job: SYS_EXPORT_FULL_01 

  Operation: EXPORT 

  Mode: FULL 

  State: EXECUTING 

  Bytes Processed: 0 

  Current Parallelism: 1 

  Job Error Count: 0 

  Dump File: /bugmnt7/em/celclnx7/user/expdp/expdp_f01.dmp 

    bytes written: 4,096 

  Dump File: /bugmnt7/em/celclnx7/user/expdp/expdp_f%u.dmp 

Worker 1 Status: 

  State: EXECUTING 

  Object Schema: SCOTT 

  Object Name: EMP 

  Object Type: DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 

  Completed Objects: 959 

  Worker Parallelism: 1 

-- To get a detailed STATUS report every minute while in Logging mode:  

Export> stat=60

Export> cont 

Total estimation using BLOCKS method: 8.437 GB 

Processing object type DATABASE_EXPORT/TABLESPACE 

...

请注意,状态信息仅写入标准输出设备,而不是数据泵日志文件。

6.如何获取处理对象的时序详细信息? 参数:METRICS

使用未记录的参数METRICS可以获得关于被处理的对象的数量和处理它们所花费的时间的附加信息。 此上下文中的对象例如是导出的系统GRANT权限,导入的表空间配额GRANT语句,导出的CREATE TABLE语句。 请注意,METRICS参数不会创建任何其他跟踪文件。 相反,额外的详细信息记录在导出数据泵或导入数据泵作业的日志文件中。

示例输出:

  % expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \ 

LOGFILE=expdp_s.log SCHEMAS=scott METRICS=y 

Export: Release 10.2.0.3.0 - Production on Thursday, 18 October, 2007 17:05:53  

Copyright (c) 2003, 2005, Oracle.  All rights reserved.  

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production  

With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options  

FLASHBACK automatically enabled to preserve database integrity.  

Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/******** DIRECTORY=my_dir  

DUMPFILE=expdp_s.dmp LOGFILE=expdp_s.log SCHEMAS=scott METRICS=y 

Estimate in progress using BLOCKS method...  

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA  

Total estimation using BLOCKS method: 192 KB  

Processing object type SCHEMA_EXPORT/USER  

     Completed 1 USER objects in 0 seconds  

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT  

     Completed 2 SYSTEM_GRANT objects in 0 seconds  

Processing object type SCHEMA_EXPORT/ROLE_GRANT  

     Completed 2 ROLE_GRANT objects in 0 seconds  

Processing object type SCHEMA_EXPORT/DEFAULT_ROLE  

     Completed 1 DEFAULT_ROLE objects in 0 seconds  

Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA  

     Completed 1 TABLESPACE_QUOTA objects in 2 seconds  

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA  

     Completed 1 PROCACT_SCHEMA objects in 5 seconds  

Processing object type SCHEMA_EXPORT/TABLE/TABLE  

     Completed 4 TABLE objects in 0 seconds  

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX  

     Completed 2 INDEX objects in 1 seconds  

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT  

     Completed 2 CONSTRAINT objects in 1 seconds  

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT  

     Completed 1 REF_CONSTRAINT objects in 1 seconds  

. . exported "SCOTT"."DEPT"                              5.656 KB       4 rows  

. . exported "SCOTT"."EMP"                               7.820 KB      14 rows  

. . exported "SCOTT"."SALGRADE"                          5.585 KB       5 rows  

. . exported "SCOTT"."BONUS"                                 0 KB       0 rows  

Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded  

******************************************************************************  

Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:  

  /usr/DataPump/expdp_s.dmp 

Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 17:06:14 

7.如何获取数据泵进程的SQL跟踪文件?

对于特定情况的故障排除,可能需要为导出数据泵或导入数据泵作业创建SQL跟踪文件。 可以通过为特定进程(通常是Worker进程)设置事件10046来创建这些SQL跟踪文件。 请注意,这些SQL跟踪文件可能变得非常大,因此请确保在由init.ora / spfile初始化参数BACKGROUND_DUMP_DEST指定的目录中有足够的可用空间。

  event 10046, level 1 = enable standard SQL_TRACE functionality

event 10046, level 4 = as level 1, plus trace the BIND values

event 10046, level 8 = as level 1, plus trace the WAITs

event 10046, level 12 = as level 1, plus trace the BIND values and the WAITs

备注:

级别1:最低级别跟踪 - 不总是足以确定错误的原因;

级别4:当数据泵的工作进程或主进程发生错误时有用;

级别12:在数据泵性能出现问题时很有用。

在创建级别8或12 SQL跟踪文件时,需要在设置事件之前和在启动数据泵作业之前将init.ora / spfile初始化参数TIMED_STATISTICS设置为TRUE。 将此参数临时设置为TRUE的性能影响最小。 使用级别8或12创建的SQL跟踪文件对于调查性能问题特别有用。

例:

  -- For Event 10046, level 8 and 12: ensure we gather time related statistics: 

CONNECT / as sysdba 

SHOW PARAMETER timed_statistics  

NAME                              TYPE        VALUE  

--------------------------------- ----------- ---------------------------  

timed_statistics                  string      FALSE 

ALTER SYSTEM SET timed_statistics = TRUE SCOPE = memory;  

-- Now set the event and start the Data Pump job

-- To set the value back to the default:

ALTER SYSTEM SET timed_statistics = FALSE SCOPE = memory; 

7.1 创建标准SQL_TRACE文件(级别1)。

如果标准SQL_TRACE功能的输出足够(即:既不需要绑定值也不需要等待详细信息),则可以使用数据泵参数跟踪来激活此SQL跟踪。 要激活标准SQL跟踪,请使用值1。

例:

  -- Trace Worker process (400300) with standard SQL_TRACE functionality (1):

% expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_f.dmp \  

LOGFILE=expdp_f.log TABLES=scott.emp TRACE=400301 

请注意,当发生错误或Data Pump性能出现问题时,此跟踪级别通常不足以跟踪数据泵。 对于在发生错误时跟踪数据泵,使用级别4,以及当数据泵性能使用级别12存在问题时(请参见下面的部分)。

7.2在具有较高跟踪级别的特定数据泵进程上激活SQL_TRACE。
如果需要跟踪特定的数据泵进程,并且需要更多的SQL_TRACE详细信息,并且不需要跟踪作业的开始,则还可以在需要跟踪的进程上设置具有所需级别的事件10046 (通常是Worker进程)。

例:

  - Start the Data Pump job, e.g.: 

% expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_f%U.dmp \    

LOGFILE=expdp_f.log FILESIZE=2G FULL=y

-- In SQL*Plus, obtain Data Pump process info: 

CONNECT / as sysdba

set lines 150 pages 100 numwidth 7  

col program for a38  

col username for a10  

col spid for a7  

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;   

DATE                PROGRAM                                    SID STATUS  

------------------- -------------------------------------- ------- --------  

2007-10-19 08:58:41 ude@celclnx7.us.oracle.com (TNS V1-V3)     158 ACTIVE  

2007-10-19 08:58:41 oracle@celclnx7.us.oracle.com (DM00)       143 ACTIVE  

2007-10-19 08:58:41 oracle@celclnx7.us.oracle.com (DW01)       150 ACTIVE  

USERNAME   JOB_NAME                       SPID    SERIAL#     PID  

---------- ------------------------------ ------- ------- -------  

SYSTEM     SYS_EXPORT_FULL_01             17288        29      18  

SYSTEM     SYS_EXPORT_FULL_01             17292        50      22  

SYSTEM     SYS_EXPORT_FULL_01             17294        17      23  

在上面的示例输出中,我们看到数据泵主进程(DM00)具有SID:143和序列号:50,数据泵工作进程(DW01)具有SID:150和序列号:17。这些详细信息可用于 在SQL * Plus中使用DBMS_SYSTEM.SET_EV激活SQL跟踪,例如:

  -- In SQL*Plus, activate SQL tracing with DBMS_SYSTEM and SID/SERIAL#   

-- Syntax: DBMS_SYSTEM.SET_EV([SID],[SERIAL#],[EVENT],[LEVEL],'')  

-- Example to SQL_TRACE Worker process with level 4 (Bind values):    

execute sys.dbms_system.set_ev(150,17,10046,4,'');  

-- and stop tracing:  

execute sys.dbms_system.set_ev(150,17,10046,0,'');   

-- Example to SQL_TRACE Master Control process with level 8 (Waits):   

execute sys.dbms_system.set_ev(143,50,10046,8,'');   

-- and stop tracing:   

execute sys.dbms_system.set_ev(143,50,10046,0,'');

上面的查询的示例输出还显示数据泵主进程(DM00)具有OS进程Id:17292,并且数据泵工作进程(DW01)具有OS进程Id:17294.利用该信息,也可以使用 'oradebug'在SQL * Plus中为这些进程激活SQL跟踪,例如:

  -- In SQL*Plus, activate SQL tracing with ORADEBUG and the SPID: 

-- Example to SQL_TRACE Worker process with level 4 (Bind values): 

oradebug setospid 17294  

oradebug unlimit  

oradebug event 10046 trace name context forever, level 4  

oradebug tracefile_name  

-- Example to SQL_TRACE Master Control process with level 8 (Waits):  

oradebug setospid 17292   

oradebug unlimit   

oradebug event 10046 trace name context forever, level 8   

oradebug tracefile_name   

-- To stop the tracing: 

oradebug event 10046 trace name context off

可以使用DBMS_SYSTEM.SET_EV或'oradebug'来创建数据泵跟踪文件。

7.3将完整的数据库放在具有特定级别的SQL_TRACE中。

可能没有足够的时间来激活特定数据泵进程上的跟踪,因为在作业的早期阶段发生错误,或者需要从头开始跟踪数据泵进程。 在这些情况下,必须在数据库级别的SQL * Plus中设置具有所需级别的事件10046,并且必须随后启动数据泵作业。 作业完成后,再次取消设置该事件。

例:

  -- Activate SQL tracing database wide,  

-- Be careful: all processes will be traced! 

-- 

-- never do this on production unless a maintenance window

-- once issued in PROD you may not be able to stop if load is high 

-- careful with directories filling up

--

CONNECT / as sysdba    

ALTER SYSTEM SET EVENTS '10046 trace name context forever, level 4';    

- Start the Export Data Pump or Import Data Pump job, e.g.: 

% expdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_f.dmp \    

LOGFILE=expdp_f.log TABLES=scott.emp 

-- Unset event immediately after Data Pump job ends: 

ALTER SYSTEM SET EVENTS '10046 trace name context off';

但请注意:上述步骤将导致所有进程上的SQL跟踪,因此,如果没有其他数据库活动(或几乎没有任何其他活动),并且数据泵作业结束相对较快,才使用此方法。

7.4分析SQL跟踪文件并创建一个TKPROF输出文件。

如果SQL跟踪文件是使用级别1或4创建的,那么我们通常对语句(及其绑定变量)感兴趣。 示例场景:数据泵中止并出现特定错误。 当调查这些错误时,压缩完整的跟踪文件并上传压缩文件是有意义的。

如果SQL跟踪文件是使用级别8或12创建的,那么我们通常对语句(及其等待事件)的时间感兴趣。 示例场景:在数据泵作业期间存在假定的性能问题。 这些SQL跟踪文件可能变得非常大,分析文件后的tkprof输出在大多数情况下更有意义。 当调查那些类型的错误,它是有意义的,只上传tkprof输出文件。

例:

  -- create standard tkprof output files for Data Pump Master and Worker SQL traces:

% cd /oracle/admin/ORCL/BDUMP

% tkprof orcl_dm00_17292.trc tkprof_orcl_dm00_17292.out waits=y sort=exeela

% tkprof orcl_dw01_17294.trc tkprof_orcl_dw01_17294.out waits=y sort=exeela

有关事件10046和tkprof的详细信息,请参阅:

Note:21154.1 "EVENT: 10046 "enable SQL statement tracing (including binds/waits)"

Note:32951.1 "Tkprof Interpretation"

8. 如何获取导出数据泵转储文件的头详细信息?

每个导出数据泵转储文件都以标头(通常大小为4 kb)开头,其中包含有关转储文件的详细信息。 从Oracle10g第2版(10.2.0.1.0)开始,可以通过调用过程DBMS_DATAPUMP.GET_DUMPFILE_INFO从转储文件中提取此头信息。 可以从任何导出转储文件中提取标题信息,甚至可以从使用经典导出客户端创建的转储文件中提取。 从dumpfile头提取信息的过程的示例输出:

  ----------------------------------------------------------------------------

...File Version....: 2.1 (Oracle11g Release 1: 11.1.0.x)

...Master Present..: 1 (Yes)

...GUID............: AE9D4A8A85C6444F813600C00199745A 

...File Number.....: 1 

...Characterset ID.: 46 (WE8ISO8859P15) 

...Creation Date...: Wed Mar 19 16:06:45 2008 

...Flags...........: 2 

...Job Name........: "SYSTEM"."SYS_EXPORT_SCHEMA_01" 

...Platform........: x86_64/Linux 2.4.xx 

...Instance........: ORCL

...Language........: WE8ISO8859P15

...Block size......: 4096

...Metadata Compres: 1 (Yes)

...Data Compressed.: 0 (No)

...Metadata Encrypt: 0 (No)

...Data Encrypted..: 0 (No)

...Master Piece Cnt: 1

...Master Piece Num: 1

...Job Version.....: 11.01.00.00.00

...Max Items Code..: 20 

----------------------------------------------------------------------------

有关更多详细信息和示例代码SHOW_DUMPFILE_INFO,请参阅:

Note:462488.1 "How to Gather the Header Information and the Content of an Export Dumpfile ?"
除了DBMS_DATAPUMP.GET_DUMPFILE_INFO过程之外,还可以使用TRACE = 100300启动导入数据泵作业,以便使用转储文件头部详细信息创建跟踪文件。 转储文件头信息被写入到数据泵主跟踪文件:[SID] dm [number] _ [PID] .trc,它可以在init.ora / spfile参数BACKGROUND_DUMP_DEST指定的目录中找到。

例:

  -- create a SQL file with TRACE parameter value 100300 (trace file layer);  

-- although this impdp job will give an error (ORA-39166: Object ... was not found)  

-- a trace file will be written with the file header details we are interested in:  

-- On windows, place all expdp parameters on one single line: 

D:\DataPump> impdp system/manager DIRECTORY=my_dir DUMPFILE=expdp_s.dmp  

NOLOGFILE=y SQLFILE=impdp_s.sql TABLES=notexist TRACE=100300

跟踪文件的输出示例:orcl_dm00_1696.trc

... 

KUPF: 17:14:23.345: newImpFile: EXAMINE_DUMP_FILE 

KUPF: 17:14:23.355: ......DB Version = 10.02.00.03.00 

KUPF: 17:14:23.355: File Version Str = 1.1 

KUPF: 17:14:23.355: File Version Num = 257 

KUPF: 17:14:23.355: Version CapBits1 = 32775 

KUPF: 17:14:23.355: ......Has Master = 1 

KUPF: 17:14:23.355: ........Job Guid = 76DC6D8BC4A6479EADECB81E71FAEF93 

KUPF: 17:14:23.355: Master Table Pos = 19 

KUPF: 17:14:23.355: Master Table Len = 138856 

KUPF: 17:14:23.375: .....File Number = 1 

KUPF: 17:14:23.385: ......Charset ID = 46 

KUPF: 17:14:23.385: ...Creation date = Thu Oct 18 16:51:36 2007 

KUPF: 17:14:23.385: ...........Flags = 0 

KUPF: 17:14:23.385: ......Media Type = 0 

KUPF: 17:14:23.385: ........Job Name = "SYSTEM"."SYS_EXPORT_SCHEMA_01" 

KUPF: 17:14:23.395: ........Platform = IBMPC/WIN_NT-8.1.0 

KUPF: 17:14:23.395: ........Language = WE8ISO8859P15 

KUPF: 17:14:23.395: .......Blocksize = 4096 

KUPF: 17:14:23.405: newImpFile: file; D:\DataPump\expdp_s.dmp, FID; 1 

...

有关更多详细信息和示例,请参阅:

Note:462488.1 "How to Gather the Header Information and the Content of an Export Dumpfile ?"

9. 如何获取数据定义语言(DDL)语句? 参数:SQLFILE
使用导入数据泵参数SQLFILE,您可以基于其他参数指定要将Import执行的所有SQL DDL写入其中的文件的名称。 SQL实际上未执行,并且目标系统保持不变。 该文件将写入DIRECTORY参数中指定的目录对象,除非此处明确指定另一个directory_object。 将覆盖名称与使用此参数指定的名称匹配的任何现有文件。

语法:SQLFILE = [directory_object:] file_name

例:

  -- create a SQL file with DDL statements:  

% impdp scott/tiger DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \  

NOLOGFILE=y SQLFILE=impdp_s.sql FULL=y

示例输出sqlfile:impdp_s.sql

-- CONNECT SYSTEM 

-- new object type path is: SCHEMA_EXPORT/USER 

CREATE USER "SCOTT" IDENTIFIED BY VALUES 'F894844C34402B67' 

DEFAULT TABLESPACE "USERS" 

TEMPORARY TABLESPACE "TEMP"; 

-- new object type path is: SCHEMA_EXPORT/SYSTEM_GRANT 

GRANT CREATE TABLE TO "SCOTT"; 

GRANT CREATE SESSION TO "SCOTT"; 

-- new object type path is: SCHEMA_EXPORT/ROLE_GRANT 

GRANT "EXP_FULL_DATABASE" TO "SCOTT"; 

GRANT "IMP_FULL_DATABASE" TO "SCOTT"; 

...

有关详细信息,请参阅:

Note:462488.1 "How to Gather the Header Information and the Content of an Export Dumpfile ?"

10. 如何获得DDL作为SQL语句和XML数据?
使用经典导出转储文件,数据定义语言(DDL)语句作为正常(即用)SQL语句存储在导出转储文件中。 但是,使用数据泵,用于重新创建DDL语句的数据以XML格式存储。 通过运行具有SQLFILE和TRACE参数的导入DataPump作业,可以与实际的DDL语句一起获取此XML数据。

  -- create a SQL file with DDL statements and XML data:   

% impdp scott/tiger DIRECTORY=my_dir DUMPFILE=expdp_s.dmp \   

NOLOGFILE=y SQLFILE=impdp_s.sql FULL=y TRACE=2

示例输出sqlfile:impdp_s.sql

-- CONNECT SYSTEM 

-- new object type path is: SCHEMA_EXPORT/USER 

<?xml version="1.0"?><ROWSET><ROW> 

<USER_T><VERS_MAJOR>1</VERS_MAJOR><VERS_MINOR>0</VERS_MINOR> 

<USER_ID>79</USER_ID><NAME>SCOTT</NAME><TYPE_NUM>1</TYPE_NUM> 

<PASSWORD>F894844C34402B67</PASSWORD><DATATS>USERS</DATATS> 

<TEMPTS>TEMP</TEMPTS><CTIME>18-OCT-07</CTIME><PTIME>18-OCT-07</PTIME> 

<PROFNUM>0</PROFNUM><PROFNAME>DEFAULT</PROFNAME><DEFROLE>1</DEFROLE> 

<ASTATUS>0</ASTATUS><LCOUNT>0</LCOUNT> 

<DEFSCHCLASS>DEFAULT_CONSUMER_GROUP</DEFSCHCLASS><SPARE1>0</SPARE1></USER_T> 

</ROW></ROWSET> 

CREATE USER "SCOTT" IDENTIFIED BY VALUES 'F894844C34402B67' 

DEFAULT TABLESPACE "USERS" 

TEMPORARY TABLESPACE "TEMP"; 

-- new object type path is: SCHEMA_EXPORT/SYSTEM_GRANT 

...

注意:除非Oracle Support明确要求,否则不建议使用TRACE = 2执行导入数据泵作业。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: