学院首页>网络编程>ORACLE>Oracle Database 10g:最佳新特性

Oracle Database 10g:最佳新特性

作者: 来源: 添加时间:2006-5-22 11:43:57
数据库监控 

您还可以从数据库视图获得关于运行的 Data Pump 作业的更多信息。监控作业的主视图是 DBA_DATAPUMP_JOBS,它将告诉您在作业上有多少个工作进程(列 DEGREE)在工作。另一个重要的视图是 DBA_DATAPUMP_SESSIONS,当它与上述视图和 V$SESSION 结合时将给出主前台进程的会话 SID。 
select sid, serial#
from v$session s, dba_datapump_sessions d
where s.saddr = d.saddr;

这条指令显示前台进程的会话。更多有用的信息可以从警报日志中获得。当进程启动时,MCP 和工作进程在警报日志中显示如下: 
kupprdp:master process DM00 started with pid=23, OS id=20530 to execute - 
SYS.KUPM$MCP.MAIN(’CASES_EXPORT’, ’ANANDA’);

kupprdp:worker process DW01 started with worker id=1, pid=24, OS id=20532 to execute - 
SYS.KUPW$WORKER.MAIN(’CASES_EXPORT’, ’ANANDA’);

kupprdp:worker process DW03 started with worker id=2, pid=25, OS id=20534 to execute - 
SYS.KUPW$WORKER.MAIN(’CASES_EXPORT’, ’ANANDA’);

它显示为数据泵操作启动的会话的 PID。您可以用以下查询找到实际的 SID: 
select sid, program from v$session where paddr in 
(select addr from v$process where pid in (23,24,25));

PROGRAM 列将对应警报日志文件中的名称显示进程 DM (为主进程)或 DW (为工作进程)。如果一个工作进程使用了并行查询,比如说 SID 23,您可以在视图 V$PX_SESSION 中看到它,并把它找出来。它将为您显示从 SID 23 代表的工作进程中运行的所有并行查询会话: 
select sid from v$px_session where qcsid = 23;

从视图 V$SESSION_LONGOPS 中可以获得其它的有用信息来预测完成作业将花费的时间。 
select sid, serial#, sofar, totalwork
from v$session_longops
where opname = ’CASES_EXPORT’
and sofar != totalwork;

列 totalwork 显示总工作量,该列的 sofar 数量被加和到当前的时刻 — 因而您可以用它来估计还要花多长时间。 
Data Pump 导入 
不过,数据导入性能是 Data Pump 真正出色的地方。要导入先前导出的数据,我们将使用 
impdp ananda/abc123 directory=dpdata1 dumpfile=expCASES.dmp job_name=cases_import

导入进程的默认行为是创建表和所有相关的对象,然后在表已存在时产生一个错误。如果您想把数据添加到一个现有的表中,您可以在上述命令行中使用 TABLE_EXISTS_ACTION=APPEND。 
和使用 Data Pump 导入一样,在进程中按 Control-C 将进入 Date Pump Import (DPI) 的交互模式;同样,提示符是 Import>。 
处理特定对象 
您是否有过只需要从一个用户导出特定的过程,以在一个不同的数据库或用户中重新创建这些过程的情况?与传统的导出实用工具不同,Data Pump 允许您只导出特定类型的对象。例如,以下命令让您只导出过程,而不导出其它任何东西 — 不导出表、视图、甚至函数: 
expdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp include=PROCEDURE

要只导出一些特定的对象 — 比如说,函数 FUNC1 和过程 PROC1 — 您可以使用 
expdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp 
include=PROCEDURE:\"=\’PROC1\’\",FUNCTION:\"=\’FUNC1\’\"

这个转储文件充当了源对象的一个备份。您甚至可以用它来创建 DDL 脚本,以供之后使用。一个称为 SQLFILE 的特殊参数允许创建 DDL 脚本文件。 
impdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp sqlfile=procs.sql

该指令在 DPDATA1 指定的目录中创建一个名称为 procs.sql 的文件,并将对象的脚本包含在导出转储文件中。这种方法帮助您快速地在另一个模式中创建源对象。 
利用参数 INCLUDE 允许您从转储文件中定义要包含或排除的对象。您可以使用子句 INCLUDE=TABLE:"LIKE ’TAB%’" 来仅导出那些名称以 TAB 开头的表。类似地,您可以使用结构 INCLUDE=TABLE:"NOT LIKE ’TAB%’" 来排除所有名称以 TAB 开头的表。作为另一种选择,您可以使用 EXCLUDE 参数来排除特定的对象。 
通过外部表,Data Pump 还可以用来传输表空间;它非常强大,能够即时地重定义并行方式,将更多的表添加到一个现有的进程中等等(这超出了本文的范围;关于更多详细信息,请参考 Oracle Database Utilities 10g Release 1 10.1)。以下命令显示Data Pump 导出实用工具提供的所有参数的列表: 
expdp help=y

类似地,impdp help=y 将显示 DPI 中的所有参数。 
当 Data Pump 作业在运行时,您可以通过在 DPE 或 DPI 提示符下发出 STOP_JOB 来暂停它们,然后用 START_JOB 来重起它们。这个功能在您空间不足和想在继续执行之前进行修改时非常方便。
第 2 页,共 2 页 [1] [2]
站内搜索