利用 oracle database 10g 实用工具数据移动得到了很大的提高。
迄今为止,导出/导入工具集仍是跨多个平台转移数据所需劳动强度最小的首选实用工具,尽管人们常常抱怨它速度太慢。导入只是将每条记录从导出转储文件中读出来,然后使用常见的 insert into 命令将其插入到目标表中,因此导入可能是个很慢的过程,这一点并不让人感到吃惊。
进入 oracle data pump,oracle database 10g 中的导出/导入工具包的更新更快的同类工具,它被设计来成倍地加速这个过程。
data pump 反映了整个导出/导入过程的彻底革新。它不是使用常见的 sql 命令,而是应用专用 api 来以更快得多的速度加载和卸载数据。在我的测试中,我看到导出性能比在直接模式下提高了 10-15 倍,导入过程性能提高了 5 倍。此外,与使用导出实用工具不同,它还能够只取出特定类型的对象(如过程)。
data pump 导出
这个新的实用工具称为 expdp,以和原来的导出 exp 区分开。在本例中,我们将用 data pump 来导出一个大表 cases,大小约为 3gb。data pump 在服务器端使用文件处理来创建和读取文件;因此,目录作为位置使用。在这种情况下,我们将使用文件系统 /u02/dpdata1 来保存转储文件。
create directory dpdata1 as ’/u02/dpdata1’;
grant read, write on directory dpdata1 to ananda;
接下来,我们将导出数据:
expdp ananda/abc123 tables=cases directory=dpdata1
dumpfile=expcases.dmp job_name=cases_export
让我们来分析该命令的各个部分。用户 id/口令组合、表和转储文件参数的意义是显而易见的。与原来的导出不同,文件是在服务器(不是客户端)上创建的。位置由目录参数值 dpdata1 指定,它指向之前创建的 /u02/dpdata1。这个进程还在目录参数指定的位置上创建一个日志文件(同样在服务器上)。默认地,这个进程使用一个名称为 dpump_dir 的目录;因此可以创建它来代替 dpdata1。
注意上面的参数 job_name,这是个特殊的参数,在原来的导出中没有。所有的 data pump 工作都通过作业来完成。data pump 作业 — 与 dbms 作业不同 — 只是服务器进程,它代表主进程处理数据。主进程(称为主控制进程)通过高级队列 (aq) 来协调这项工作;它通过在运行期内创建的一个特殊的表(称为主表)来实现这个目的。在我们的例子中,如果您在 expdp 运行时检查用户 ananda 的模式 ,您将注意到一个表 cases_export 的存在(对应参数 job_name)。当 expdp 结束时,这个表被丢弃。
导出监控
当 data pump export (dpe) 运行时,按 control-c;它将阻止消息在屏幕上显示,但不停止导出进程本身。相反,它将显示 dpe 提示符(如下所示)。进程现在被认为处于“交互式”模式:
export>
这种方法允许在这个 dpe 作业上输入几条命令。要查看概要,在提示符下使用 status 命令:
export> status
job:cases_export
operation:export
mode:table
state:executing
degree: 1
job error count: 0
dump file:/u02/dpdata1/expcases.dmp
bytes written = 2048
worker 1 status:
state:executing
object schema:dwowner
object name:cases
object type:table_export/tbl_table_data/table/table_data
completed objects: 1
total objects: 1
completed rows: 4687818
记住,这只是状态显示。导出在后台工作。要继续在屏幕上查看消息,从 export> 提示符下使用命令 continue_client。
并行操作
您可以通过 parallel 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名,例如:
expdp ananda/abc123 tables=cases directory=dpdata1
dumpfile=expcases_%u.dmp parallel=4 job_name=cases_export
注意 dumpfile 参数拥有一个通配符 %u,它指示文件将按需要创建,格式将为 expcases_nn.dmp,其中 nn 从 01 开始,然后按需要向上增加。
在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程是可见的。)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度。
分离访问数据文件和转储目录文件系统的输入/输出通道是很重要的。否则,与维护 data pump 作业相关的开销可能超过并行线程的效益,并因此而降低性能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器