导出/导入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执行导入数据泵作业。
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执行导入数据泵作业。
相关文章推荐
- Oracle 10g的Oracle Data Pump(数据泵)方式的数据导入和导出
- Oracle Data Pump 工具系列:使用 %U 和 filesize 参数将大数据拆分成小文件导出
- 用外部表(ORACLE_DATAPUMP)导出数据到文件再导入实验
- How to Diagnose Oracle Data Pump-如何给数据泵添加诊断信息
- 【译】Export/Import DataPump Parameter TRACE - How to Diagnose Oracle Data Pump [ID 286496.1]
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- 如何用PLSQL从ORACLE中导入导出数据
- Data Pump的导入和导出数据(ORA-31684)
- ORACLE数据导入导出里的EXP/IMP 命令参数
- 使用 Oracle Datapump API 实现数据导出
- Oracle 10g 及之后导出/导入(Datapump Export/Import)工具
- phpadmin如何导入导出大数据文件及php.ini参数修改
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- 如何用PLSQL从ORACLE中导入导出数据
- 如何实现oracle不同版本间数据的导入导出
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作-------sql方式
- 转:如何用plsql从oracle中导入导出数据
- 使用 Oracle Datapump API 实现数据导出
- 使用 Oracle Datapump API 实现数据导出
- 如何收集用来诊断性能问题的10046 Trace(SQL_TRACE) (文档 ID 1523462.1)