您当前位置:主页 > 资讯攻略 >
来源:未知
2022-04-26 10:49:12 浏览: 分类:资讯攻略

教你怎样在Oracle数据库中高速导出/导入

到目前为止,导出/导入工具集仍然是跨多个平台传输数据所需劳动强度最小的首选实用程序,尽管人们经常抱怨它太慢。Import只从导出转储文件中读取每条记录,然后使用常见的INSERT INTO命令将其插入到目标表中,因此import可能是一个缓慢的过程也就不足为奇了。

进入oracle Data Pump,它是一个类似的工具,可以更快地更新Oracle Database 10g中的导出/导入工具包,旨在以指数方式加快这一过程。

数据泵反映了整个出口/进口过程的完全创新。它不使用普通的SQL命令,而是应用一个专用的API来更快地加载和卸载数据。在我的测试中,我看到导出性能比直接模式下高10-15倍,导入性能高5倍。此外,与使用导出实用程序不同,它还可以只获取某些类型的对象(如过程)。

数据泵导出

这个新的实用程序被称为expdp,以区别于原来的export exp。在这个例子中,我们将使用数据泵导出一个大的表案例,大约3GB大小。数据泵使用服务器端的文件处理来创建和读取文件;因此,目录被用作位置。在这种情况下,我们将使用文件系统/u02/dpdata1来保存转储文件。

将目录dpdata1创建为“/u02/DP data1”;

授予阿难对目录dpdata1的读、写权限;

接下来,我们将导出数据:

ex PDP Ananda/ABC 123 tables = CASES directory = DP data 1

dump file = exp CASES . DMP job _ name = CASES _ EXPORT

让我们分析这个命令的每个部分。用户/密码组合、表和转储文件参数的意义显而易见。与原始导出不同,文件是在服务器(而不是客户端)上创建的。该位置由目录参数值DPDATA1指定,它指向以前创建的/u02/dpdata1。此过程还会在directory参数指定的位置创建一个日志文件(也在服务器上)。默认情况下,该进程使用名为DPUMP_DIR的目录;因此,可以创建它来代替DPDATA1。

请注意上面的参数job_name,它是一个特殊的参数,在原始导出中没有找到。所有的数据泵工作都是由作业来完成的。数据泵作业& mdash与DBMS作业不同& mdash只是一个服务器进程,代表主进程处理数据。主进程(称为主控进程)通过高级队列(AQ)协调这项工作;这是通过在运行时创建一个特殊的表(称为主表)来实现的。在我们的示例中,如果您在expdp运行时检查用户ANANDA的模式,您会注意到存在一个表CASES_EXPORT(对应于参数job_name)。当expdp结束时,该表将被丢弃。

出口监控

当数据泵导出(DPE)运行时,按下Control-C;这将阻止消息显示在屏幕上,但不会停止导出过程本身。相反,它会显示DPE提示(如下所示)。该过程现在被认为处于“交互”模式:

导出& gt

这个方法允许您在这个DPE作业中输入几个命令。要查看总结,请在提示符下使用STATUS命令:

导出& gt状态

作业:案例_导出

操作:导出

模式:表格

状态:正在执行

学位:1

作业错误计数:0

转储文件:/u02/dpdata1/expCASES.dmp

写入字节数= 2048

工人1状态:

状态:正在执行

对象架构:DWOWNER

对象名称:案例

对象类型:表_导出/TBL _表_数据/表/表_数据

完成的对象:1

对象总数:1

完成的行数:4687818

记住,这只是一个状态显示。导出在后台运行。要继续查看屏幕上的消息,请从export >开始:在提示符下使用CONTINUE_CLIENT命令。

并行操作

通过PARALLEL参数使用多个线程进行导出,可以显著提高作业速度。每个线程创建一个单独的转储文件,因此参数dumpfile应该具有与并行度一样多的项。您可以指定通配符作为文件名,而不是显式输入单个文件名,例如:

ex PDP Ananda/ABC 123 tables = CASES directory = DP data 1

dump file = exp Cases _ % u . DMP parallel = 4 job _ name = Cases _ Export

注意dumpfile参数有一个通配符%U,表示将根据需要创建文件,格式为expCASES_nn.dmp,其中nn从01开始,然后根据需要向上递增。

在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程可见。)所有工作进程同步取出数据,并在状态屏幕上显示它们的进度。

分离文件系统的输入/输出通道以访问数据文件和转储目录非常重要。否则,与维护数据泵作业相关的开销可能会超过并行线程带来的好处,从而降低性能。只有当表的数量超过并行值并且表很大时,并行模式才有效。

数据库监控

您还可以从数据库视图中获得有关正在运行的数据泵作业的更多信息。受监控作业的主视图是DBA_DATAPUMP_JOBS,它将告诉您有多少工作进程(列级)正在处理该作业。另一个重要的视图是DBA_DATAPUMP_SESSIONS,它将在与上面的视图和V$SESSION结合时给出主前台进程的会话SID。

选择样本号、序列号

从v$session s,dba_datapump_sessions d

其中s . saddr = d . saddr;

此指令显示前台进程的会话。更多有用的信息可以从警报日志中获得。当进程启动时,MCP和工作进程显示在警报日志中,如下所示:

kupprdp:主进程DM00从pid=23开始,

OS id=20530来执行-

SYS。KUPM$MCP。MAIN('CASES_EXPORT ',' ANANDA ');

kupprdp:工作进程DW01从工作进程开始

id=1,pid=24,OS id=20532来执行-

SYS。KUPW $工人。MAIN('CASES_EXPORT ',' ANANDA ');

kupprdp:工作进程DW03从工作进程开始

id=2,pid=25,OS id=20534来执行-

SYS。KUPW $工人。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));

程序栏将显示与报警日志文件中的名称相对应的进程DM(作为主进程)或DW(作为工作进程)。如果一个工作进程使用并行查询,比如SID 23,您可以在视图V$PX_SESSION中看到并找到它。它将显示从SID 23表示的工作进程运行的所有并行查询会话:

从v$px_session中选择sid,其中qcsid = 23

其他有用的信息可以从视图V$SESSION _ LONGOPS中获得,以预测完成作业所需的时间。

选择sid、序列号、sofar、totalwork

来自v$session_longops

其中opname = 'CASES_EXPORT '

还有sofar!= totalwork

totalwork列显示总工作量,该列中的sofar数被添加到当前时刻& mdash所以你可以用它来估计需要多长时间。

数据泵导入

但是,数据导入的性能才是数据泵真正的优势。为了导入以前导出的数据,我们将使用

impdp Ananda/ABC 123 directory = DP data 1

dump file = exp cases . DMP job _ name = cases _ import

导入过程的默认行为是创建表和所有相关对象,然后在表已经存在时生成错误。如果您想要将数据添加到现有的表中,可以在上面的命令行中使用TABLE_EXISTS_ACTION=APPEND。

与数据泵导入一样,在过程中按Control-C会进入数据泵导入(DPI)的交互模式;同样,提示是import >:。

处理特定对象

您是否曾经需要从一个用户导出特定的过程,以便在不同的数据库或用户中重新创建它们?与传统的导出实用程序不同,数据泵仅允许您导出某些类型的对象。例如,以下命令只允许您导出过程,而不导出任何其他内容& mdash不要导出表、视图甚至函数:

ex PDP Ananda/IC laim directory = DP data 1

dump file = exp procs . DMP include = PROCEDURE

只导出某些特定对象& mdash例如,函数FUNC1和过程PROC1 & mdash你可以用

ex PDP Ananda/I claim directory = DP data 1 dump file = exp procs . DMP

include =过程:\ & quot= \ ' PROC1 \ ' \ & quot,功能:\ & quot= \ ' FUNC1 \ ' \ & quot

这个转储文件充当源对象的备份。您甚至可以用它来创建DDL脚本供以后使用。一个名为SQLFILE的特殊参数允许创建DDL脚本文件。

impdp Ananda/IC laim directory = DP data 1

dump file = exp procs . DMP SQL file = procs . SQL

此指令在DPDATA1指定的目录中创建一个名为procs.sql的文件,并在导出转储文件中包含该对象的脚本。该方法帮助您在另一个模式中快速创建源对象。

INCLUDE参数允许您定义要包含在转储文件中或从转储文件中排除的对象。您可以使用INCLUDE = TABLE:& quot;。比如“TAB %”& quot;只导出那些名称以tab开头的表。同样,您可以使用结构INCLUDE = TABLE:& quot;不像“TAB %”& quot;排除名称以tab开头的所有表。或者,您可以使用EXCLUDE参数来排除特定对象。

通过外部表,还可以使用数据泵进行表间转移空;它非常强大,可以立即重新定义并行模式,向现有进程添加更多的表,等等。

关键词:Oracle数据库

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227277.html

攻略资讯
安卓软件