首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

exp/imp 与 expdp/impdp 对照 及使用中的一些优化事项

2012-07-05 
exp/imp 与 expdp/impdp 对比 及使用中的一些优化事项关于exp/imp?ORACLEhttp://blog.csdn.net/tianlesoft

exp/imp 与 expdp/impdp 对比 及使用中的一些优化事项

关于exp/imp?

ORACLEhttp://blog.csdn.net/tianlesoftware/archive/2009/10/23/4718366.aspx

?

Oracle 10g EXPDP和IMPDP使用说明

http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4674224.aspx

?

?

一. exp/imp?

1.1?

1.2?

1.2.1 exp/imp在metalink的这边文章中,提到了exp/imp的不同模式下的工作原理:

Parameter DIRECT: Conventional Path Export Versus Direct Path Export [ID 155477.1]

http://blog.csdn.net/tianlesoftware/archive/2010/12/22/6090759.aspx

?

?

Starting with Oracle7 release 7.3, the Export utility provides two methods for exporting table data:

- Conventional Path Export

- Direct Path Export

?

(1)Conventional path Export uses the SQL SELECT statement to extract data from tables. Data is read from disk into the buffer cache, and rows are transferred to the evaluating buffer. The data, after passing expression evaluation, is transferred to the Export client, which then writes the data into the export file.

?

????????????

?

?

(2)????????????

The default is DIRECT=N, which extracts the table data using the conventional path.

?

This parameter is only applicable to the original export client.?

????????????

?

1.2.2 expdp/impdp???????????????????????

???????????

?

(1)Direct Path mode.

After data file copying, direct path is the fastest method of moving data. In this method, the SQL layer of the database is bypassed and rows are moved to and from the dump file with only minimal interpretation.?

expdp/impdp?

(2)External Tables mode.

???????????Note: When the Export NETWORK_LINK parameter is used to specify a network link for an export operation, a variant of the external tables method is used. In this case, data is selected from across the specified network link and inserted into the dump file using an external table.

?

(3)Data File Copying mode.

????????????

(4)????????????

这种模式很方便,但是速度是最慢的,因为它是通过insert,select + dblink来实现的。?

示例:

create directory dump1 as '/oradata/dumpfiles';
grant read,write on dump1 to xxx;

?

创建DBLINK:

/* Formatted on 2010/12/23 11:28:22 (QP5 v5.115.810.9015) */

CREATE?CONNECT?IDENTIFIED?USING

?????(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = IP ADDRESS)(PORT = 1521))

)

(CONNECT_DATA =

(SID = ORCL)

(SERVER = DEDICATED)

)

)';

?

Dumpfileexpdp xxx/xxx schemas=xxx? directory=dump1? dumpfile=xxx_%U.dmp filesize=5g

这样每个文件5G?

关于%U参考:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_overview.htm#sthref44

?

在下文也会讲到这点。

?

expdp xxx/xxx schemas=xxx? directory=dump1 network_link =dbl_65 dumpfile=xxx_01.dump ,xxx_02.dump

这样也可以,但不确定xxx_01.dump增到多大才开始写xxx_02.dump文件。

?

ESTIMATE_ONLY=yNETWORK_LINK:这样就可以不必一定在本机expdp,也可以在目标机通过expdp xxx/xxx schemas=xxx? directory=dump1 network_link =tianlesoftware dumpfile=xxx_%U.dump filesize=10m
或者用impdp + network_link?

需要注意,LOB字段可以使用NETWORK_LINKORA-31679: Table

?

1.3???????????????????????

1.4 exp/imp(1)把用户usera的对象导到用户userb,用法区别在于fromuser=usera touser=userb ,remap_schema='usera':'userb'??????????????????????(2)更换表空间,用exp/imp的时候,要想更改表所在的表空间,需要手工去处理一下,如alter table xxx move tablespace_new之类的操作。用impdp只要用remap_tablespace='tabspace_old':'tablespace_new'

(3)当指定一些表的时候,使用exp/imp?

(4)是否要导出数据行

???????????????????????

?

二.?

2.1????????????

  DIRECT参数定义了导出是使用直接路径方式(DIRECT=Y),还是常规路径方式(DIRECT=N)。常规路径导出使用SQL SELECT语句从表中抽取数据,直接路径导出则是将数据直接从磁盘读到PGA再原样写入导出文件,从而避免了SQL命令处理层的数据转换过程,大大提高了导出效率。在数据量大的情况下,直接路径导出的效率优势更为明显,可比常规方法速度提高三倍之多。

?

  和DIRECT=Y配合使用的是RECORDLENGTH参数,它定义了Export I/O缓冲的大小,作用类似于常规路径导出使用的BUFFER参数。建议设置RECORDLENGTH参数为最大I/O缓冲,即65535(64kb)。其用法如下:

????????????

?

一些限制如下:

???????????--直接路径不能使用在tablespace-mode

?

The parameter QUERY applies ONLY to conventional path Export. It cannot be specified in a direct path export (DIRECT=Y).

--?

In versions of Export prior to 8.1.5, you could not use direct path Export for tables containing objects and LOBs.

-如果exp?

The BUFFER parameter applies ONLY to conventional path Export. It has no effect on a direct path Export.-- buffer?

The RECORDLENGTH parameter specifies the length (in bytes) of the file record.?

invoking a Direct path Export with a maximum I/O buffer of 64kb can improve the performance of the Export with almost 50%.?

--> exp?system/manager?FILE=exp_full.dmp?LOG=exp_full.log

FULL=y?DIRECT=y?RECORDLENGTH=65535

> imp?system/manager?FILE=exp_full.dmp?LOG=imp_full.log

FULL=y?RECORDLENGTH=65535?

?

?

2.2?

  Oracle Import进程需要花比Export进程数倍的时间将数据导入数据库。某些关键时刻,导入是为了应对数据库的紧急故障恢复。为了减少宕机时间,加快导入速度显得至关重要。没有特效办法加速一个大数据量的导入,但我们可以做一些适当的设定以减少整个导入时间。

?

(1)避免I/O竞争

???????????(2)增加排序区

  Oracle Import进程先导入数据再创建索引,不论INDEXES值设为YES或者NO,主键的索引是一定会创建的。创建索引的时候需要用到排序区,在内存大小不足的时候,使用临时表空间进行磁盘排序,由于磁盘排序效率和内存排序效率相差好几个数量级。增加排序区可以大大提高创建索引的效率,从而加快导入速度。

(3)调整BUFFER选项

  Imp参数BUFFER定义了每一次读取导出文件的数据量,设的越大,就越减少Import进程读取数据的次数,从而提高导入效率。BUFFER的大小取决于系统应用、数据库规模,通常来说,设为百兆就足够了。其用法如下:

???????????(4)使用COMMIT=Y选项

  COMMIT=Y表示每个数据缓冲满了之后提交一次,而不是导完一张表提交一次。这样会大大减少对系统回滚段等资源的消耗,对顺利完成导入是有益的。

(5)使用INDEXES=N选项

  前面谈到增加排序区时,说明Imp进程会先导入数据再创建索引。导入过程中建立用户定义的索引,特别是表上有多个索引或者数据表特别庞大时,需要耗费大量时间。某些情况下,需要以最快的时间导入数据,而索引允许后建,我们就可以使用INDEXES=N  我们可以用INDEXFILE选项生成创建索引的DLL脚本,再手工创建索引。我们也可以用如下的方法导入两次,第一次导入数据,第二次导入索引。其用法如下:

imp user/pwd fromuser=user1 touser=user2 file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y?

imp user/pwd fromuser=user1 touser=user2 file=/tmp/imp_index_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y(6)增加?  如果在init.ora中配置了MTS_SERVICE,MTS_DISPATCHERS等参数,tnsnames.ora中又没有(SERVER=DEDICATED)的配置,那么数据库就使用了共享服务器模式。在MTS模式下,Exp/Imp操作会用到LARGE_POOL,建议调整LARGE_POOL_SIZE到150M。

?

检查数据库是否在MTS模式下:

  SQL>select distinct server from v$session;

如果返回值出现none或shared,说明启用了MTS。

?

?

2.3 Expdp/Impdp

?

????????????

先看2个参数:

Setting Parallelism

For export and import operations,The PARALLEL parameter is valid only in the Enterprise Edition of Oracle Database 10g.

Using Substitution Variables

Instead of, or in addition to, listing specific filenames, you can use the DUMPFILE parameter during export operations to specify multiple dump files, by using a substitution variable (%U) in the filename. This is called a dump file template.?

From:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_overview.htm#sthref44

?

?

如果我们使用如下语句:

expdp full=y directory=dump dumpfile=orcl_%U.dmp parallel=4

?

???????????,ORCL_03.DMP,RCL_04.DMP。?

如:

expdp full=y directory=dump dumpfile=orcl_%U.dmp parallel=4 filesize=50M

?

?

????????????

????????????

查看CPUSQL> show parameter cpu

?

?

注意事项:

(1)导入的时候可能会停在某个地方,比如在创建索引的时候,可能在一个地方停了十几分钟。?

????????????

查看表空间可以用如下SQL:

/* Formatted on 2010/12/23 13:14:13 (QP5 v5.115.810.9015) */

SELECT????????????????????????????????????????????????????????????????????????????????????????WHERE???

?

(2)导出导入的过程,尽量避免用ssh连上服务器,在客户端的ssh里执行备份恢复命令。?因为这样,如果连接中断,备份也就中断了。?可以将备份脚本添加到crontab?里。?让备份在服务器上执行。?这样即使ssh中断,备份和恢复也不受影响。

热点排行