暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

exp_imp_expdp_impdp

小飞旅馆 2017-05-11
685

1.Exp/imp详解

1.1   exp 简单示例

1.FULL,导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。

exp userid=test/test file=./db_str.dmplog=./db_str.log full=y rows=n compress=y direct=y

 

2. OWNERTABLE,这两个选项用于定义EXP的对象。OWNER定义导出指定用户的对象;TABLE指定EXPtable名称

exp userid=test/test file=./db_str.dmplog=./db_str.log owner=duanl exp userid=test/test file=./db_str.dmplog=./db_str.log table=nc_data,fi_arap

 

3.BUFFERFEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。

exp userid=test/test file=yw97_2003.dmplog=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT

 

4.FILELOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。

 

5.COMPRESS参数不压缩导出数据的内容。用来控制导出对象的storage语句如何产生。

默认值为Y,使用默认值,对象的存储语句的init extent等于当前导出对象的extent的总和。

推荐使用COMPRESSN

 

6. FILESIZE该选项在8i中可用。如果导出的dmp文件过大时,最好使用FILESIZE参数,限制文件大小不要超过2G

exp userid=duanl/duanl file=f1,f2,f3,f4,f5filesize=2G owner=scott

这样将创建f1.dmp, f2.dmp等一系列文件,每个大小都为2G,如果导出的总量小于10G EXP不必创建f5.bmp.

1.2   imp 简单示例

1FROMUSERTOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。

例如:假设我们做exp时导出的为test的对象,现在我们想把对象导入用户:

imp userid=test1/test1 file=expdat.dmpfromuser=test1 touser=test1

 

2IGNOREGRANTSINDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTSINDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y 。例如:imp userid=test1/test1 file=expdat.dmp fromuser=test1 touser=test1indexes=N

1.3   exp/imp优化

a.       DIRECT and RECORDLENGTH

使用直接路径 direct=yoracle会避开sql语句处理引擎,直接从数据库文件中读取数据,然后写入导出文件. 可以在导出日志中观察到: exp-00067: table xxx will be exported in conventional path 如果没有使用直接路径,必须保证buffer参数的值足够大.设置RECORDLENGTH参数为最大I/O缓冲,即65535(64kb)TheRECORDLENGTH parameter specifies the length (in bytes) of the file record. Invokinga Direct path Export with a maximum I/O buffer of 64kb can improve theperformance of the Export with almost 50%

 

exp userid=system/manager full=y direct=yrecordlength=65535 file=exp_full.dmp log=exp_full.log

imp userid=system/manager full=y recordlength=65535file=exp_full.dmp log=imp_full.log

 

限制如下

You cannot usethe DIRECT=Y parameter when exporting in tablespace-mode  (i.e. whenspecifying the parameter TRANSPORT_TABLESPACES=Y). You can use theDIRECT=Y parameter when exporting in full, user or table mode(i.e.: whenspecifying FULL=Y or OWNER=scott or TABLES=scott.emp).--直接路径不能使用在tablespace-mode

The parameterQUERY applies ONLY to conventional path Export. It cannot be specified in adirect path export (DIRECT=Y).直接路径不支持query 参数。 query 只能在conventional path模式下使用。

buffer 选项只对conventionalpath exp有效。对于直接路径没有影响。对于直接路径, 应该设置RECORDLENGTH参数。对于直接路径下, RECORDLENGTH参数建议设成64k65535)。这个值对性能提高比较大,

 

exp system/manager FILE=exp_full.dmp LOG=exp_full.log FULL=yDIRECT=y RECORDLENGTH=65535

imp system/manager FILE=exp_full.dmp LOG=imp_full.log FULL=yRECORDLENGTH=65535

b.       导入时避免磁盘排序将sort_area_size设置为一个较大的值,比如100M

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

c.       避免日志切换等待增加重做日志组的数量,增大日志文件大小

d.       优化日志缓冲区比如将log_buffer容量扩大10(最大不要超过5M)

e.    commit=y

COMMIT=Y表示每个数据缓冲满了之后提交一次,而不是导完一张表提交一次,这样会大大减少对系统回滚段等资源的消耗,对顺利完成导入是有益的。commit主要用于大表数据插入时减少回滚段的压力,以免出现长时间导入而出现的回滚段过久ora-01555,结合buffer设置则能按照buffer的大小进行分批提交,可以有效的减轻undo压力。但是如果对于插入lob、long、ref、rowid等字段时设置commit=y则会逐条commit,我们都清楚对于批量插入数据逐条commit会降低性能.

f.      nologging

使用NOLOGGING方式减小重做日志大小在导入时指定参数indexes=n,只导入数据而忽略index,在导完数据后在通过脚本创建index,指定 NOLOGGING选项

g.    _disable_logging=true

Of all of the performance techniques fordatabase loading, the most important is the nologging operation, and theundocumented parameter _disable_logging=TRUE

 

To import data into a database witharchivelog mode:

1. put database in NOLOGGING mode, or

2. a) create tables withcontent=metadata_only exclude=indes, constraint, ref_constraint

b) put tables in nologging mode

c) import with table_exists_action=append

4) cretae index with nologging

h.    导出时不导统计信息,更新统计信息

统计信息和数据可分开处理,同时更新统计信息有助于数据导入与导出。

i.      调整BUFFER选项

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

imp user/pwd fromuser=user1 touser=user2file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000

j.      11. 使用INDEXES=N选项

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

imp user/pwd fromuser=user1 touser=user2file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=yindexes=n

imp user/pwd fromuser=user1 touser=user2file=/tmp/imp_index_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=nindexes=y

k.    LARGE_POOL_SIZE

如果在init.ora中配置了MTS_SERVICE,MTS_DISPATCHERS等参数,tnsnames.ora中又没有(SERVER=DEDICATED)的配置,那么数据库就使用了共享服务器模式。在MTS模式下,exp/Imp操作会用到LARGE_POOL,建议调整LARGE_POOL_SIZE到150M。

 

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

SQL>selectdistinct server from v$session;

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

1.4   终止exp/imp

ps -ef |grepimp 查询到pid,kill -9pid

1.5   监控exp/imp

imp 时可以查看表空间的大小来监控。

2.expdp/impdp详解

expdpimpdp 是运行在服务器端, 同时必须有directory

create directory dpdata1 as '/u02/dpdata1';

grant read, write on directory dpdata1 toananda;

select * from dba_directories;

2.1 expdp 简单示例

1)按用户导

expdpscott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

 

2)并行进程parallel

expdpscott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40job_name=scott

 

3)按表名导

expdpscott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

 

4)按查询条件导

expdpscott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHEREdeptno=20';

 

5)按表空间导

expdpsystem/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmpTABLESPACES=temp,example;

 

6)导整个数据库

expdpsystem/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

2.2 impdp 简单示例

1)导到指定用户下

impdpscott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;

 

2)改变表的owner

impdpsystem/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.deptREMAP_SCHEMA=scott:system;

 

3)导入表空间

impdpsystem/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;

 

4)导入数据库

impdbsystem/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

 

5)追加数据

impdpsystem/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=systemTABLE_EXISTS_ACTION=append;

2.3 优化impdp

2.3.1            禁止awr snapshot

在导入之前禁止awr snapshots

EXECDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(INTERVAL=>0);

EXEC DBMS_AUTO_TASK_ADMIN.DISABLE;

 

在导入完成之后开启awr snapshots

EXECDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(INTERVAL=>15);

EXEC DBMS_AUTO_TASK_ADMIN.ENABLE;

TRACE=400301 expdp参数能生成相关trace文件,这个trace文件能像其它sqltrace文件一样用 tkprof or orasrp去分析

2.3.2            network_link参数

network_link参数直接从源端磁盘导入到目标端磁盘,减少了源端导出操作

Data Pumpsupports importing directly through the network via the NETWORK_LINK parameter.  When used,onlyan import operation is required – there is no associated Data Pumpexport.  The NETWORK_LINK parameter must referto a valid database linkdefined on the target database.

Importingthrough the NETWORK_LINK parameter can save a considerable amount of migrationtime as the table data no longer has to be written to disk, possibly copiedfrom one system’s disk to another’s, and read from disk.Some tables will not beapplicable for Data Pump imports using the NETWORK_LINK parameter. Forexample tables with LONG or LONG RAW data types.  These problematic tablesmust therefore be migrated using the traditional Data Pump approach ofexporting to a dump file, copying that dump file, and importing by reading thatdump file.Also note that to use the NETWORK_LINK parameter the XDB and XMLoptions must be installed in both the source and target databases.

使用示例:

示例1:复制某个数据库中的一个schema 到另一个数据库中

‐‐1.newwork_link为目标数据库建立的database_link,

(用户test 需要grantexp_full_database to TEST; )

create public database link TOLINK

connect to TEST identified by oracle

using '(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)';

 

‐‐2.impdp 在目标数据库服务器上执行只能低版本向高版本imp

impdp network_link=TOLINK schemas=testremap_schema=test:link2

 

示例2:在同一个数据库中把一个schema 中所有的对象复制到另一个schema中

‐‐1.创建连接自己的database link:

create public database link system_selfconnect to system identified by "system" using 'orcl';

数据库链接已创建。

 

‐‐2.复制hr schema 到test schema:

impdp system/systemnetwork_link=system_self schemas=hr remap_schema=hr:test

2.3.3            disable all redo logging

Oracle 12c impdp中可以disableall redo logging 

impdp TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y

parallel_execution_message_size参数能提高大约5%的性能

_disable_logging=TRUE

Of all of the performance techniques fordatabase loading, the most important is the nologging operation, and theundocumented parameter _disable_logging=TRUE

 

To import data into a database with archivelogmode:

1. put database in NOLOGGING mode, or

2. a) create tables withcontent=metadata_only exclude=indes, constraint, ref_constraint

b) put tables in nologging mode

c) import with table_exists_action=append

4) cretae index with nologging

2.3.4            设置大的streams_pool_size

set streams_pool_size at least to 150Mor larger, 可以动态调整:

alter system set streams_pool_size=200mscope=spfile;

2.3.5            PARALLEL,同时设置大的 pga_aggregate_target 可以提高速度

expdp username/password directory=dump_dirfilesize=1G dumpfile=full%U.dmp logfile=fulllog parallel=16

impdp username/password directory=dump_dirdumpfile=full%U.dmp logfile=full.log parallel=16

increase the pga_aggregate_target to largercan improve performance

2.3.6            统计信息

更新表或者索引的统计信息会加快impdp速度,在expdp中尽量exclude,在impdp后,使用单独的收集任务来完成.

2.3.7            large and enough undo and temp tablespace

2.4 优化expdp

2.4.1            统计信息

统计信息和数据可以分开导,可以提前用DBMS_STATS.EXPORT_*_STATS把统计信息导入一个表中,然后后面再从表中恢复统计信息。

2.4.2            利用asm磁盘的速度来加快导出

expdpasm是完美的兼容,导出时可以直接导出到asm磁盘组中,然后在asmcmd中或者用DBMS_FILE_TRANSFER package移到文件系统中,asm磁盘一般快于文件系统。

2.4.3            并行parallel

并行导出,然后并行导入,同时设置大的 pga_aggregate_target 可以提高速度

Degree=2 xnumber of CPUs

Degree <=number of dump files

另外,parallel_execution_message_size参数能提高大约5%的性能

expdp username/password directory=dump_dirfilesize=1G dumpfile=full%U.dmp logfile=fulllog parallel=16

2.5 终止expdp/impdp

SQL>SELECT * FROM DBA_DATAPUMP_SESSIONS;

OWNER_NAME                     JOB_NAME                          INST_ID SADDR            SESSION_TYPE

------------------------------------------------------------ ---------- ---------------- --------------

SYS                           SYS_SQL_FILE_FULL_01                   1 000000031444AB90 MASTER

SYS                           SYS_SQL_FILE_FULL_01                   1 0000000314479290 WORKER

 

或者:

SQL>select * from dba_datapump_jobs where state='EXECUTING';

OWNER_NAME                     JOB_NAME                       OPERATION                                                                       JOB_MODE                                                                        STATE                              DEGREE ATTACHED_SESSIONSDATAPUMP_SESSIONS

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ----------------- -----------------

SYS                            SYS_SQL_FILE_FULL_01           SQL_FILE

 

查看SYS_IMPORT_SCHEMA_01这个job的信息:

 

C:\Users\Administrator>impdpsys/********@hb attach=SYS_IMPORT_SCHEMA_01

 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bitProduc

tion

Withthe Partitioning, OLAP, Data Mining and Real Application Testing options

 

作业:SYS_IMPORT_SCHEMA_01

  所有者: SYS

  操作: IMPORT

  创建者权限: TRUE

  GUID: 2F7A61C2780A4BDFB599A78865C55DD9

  开始时间: 星期一, 10 11月, 201411:40:31

  模式: SCHEMA

  实例: hb

  最大并行度: 1

  EXPORT 个作业参数:

     CLIENT_COMMAND        sys/********@hb AS SYSDBAdirectory=DMP_E_DIR dumpfil

e=fullhb.dmpfull=y

  IMPORT 个作业参数:

  参数名      参数值:

     CLIENT_COMMAND        sys/********@hb AS SYSDBASCHEMAS=ODS_YC,ODS_JZ,ODS_X

N,ODS_XG,ODS_XF,ODS_TM,ODS_SZ,ODS_XT,ODS_EZ,ODS_ES,ODS_EN,ODS_HG,ODS_JM,ODS_LQ,O

DS_QJdirectory=DMP_FULL_DIR dumpfile=FULLHB.DMP logfile=FULLHB.log table_exists

_action=truncate

     TABLE_EXISTS_ACTION   TRUNCATE

  状态: EXECUTING

  处理的字节: 18,661,493,776

  完成的百分比: 22

  当前并行度: 1

  作业错误计数: 0

  转储文件: F:\ftp\FULLHB.DMP

 

Worker1 状态:

  进程名: DW00

  状态: EXECUTING

  对象方案: ODS_XN

  对象名: SUP_ARUSRE

  对象类型: DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

  完成的对象数: 1,635

  总的对象数: 2,122

  完成的行数: 309

  完成的字节: 17,680

  完成的百分比: 100

  Worker 并行度: 1

 

停止这个job:

Import>stop_job

是否确实要停止此作业([Y]/N): yes

 

IMPDP/EXPDP无论是windowsLINUX环境,在执行的时候按CTL+C就可以进入交互模式,也可以使用以下命令进行停止:

 

stop_job顺序关闭执行的作业并退出客户机。

 

stop_job=immediate将立即关闭数据泵作业。

 

使用continue_client这个命令可以返回到记录模式。

 

2.6 监控expdp impdp

v$session_longops监控

---从时间上比较

select * from v$session_longops where start_time like '' andlast_update_time like '';

 

---从对象上比较

select * from v$session_longops where target='';

 

select username,opname,target_desc,sofar,totalwork,message fromV$SESSION_LONGOPS where sofar <> totalwork;

 

select substr(sql_text,instr(sql_text,'INTO "'),30) table_name,

rows_processed,

round((sysdate-to_date(first_load_time,'yyyy-mm-ddhh24:mi:ss'))*24*60,1) minutes,

trunc(rows_processed/((sysdate-to_date(first_load_time,'yyyy-mm-ddhh24:mi:ss'))*24*60)) rows_per_min

from sys.v_$sqlarea

where sql_text like 'INSERT %INTO "%'

and command_type = 2

and open_versions > 0;

 

select sid, serial#, sofar, totalwork, dp.owner_name, dp.state,dp.job_mode

from gv$session_longops sl, gv$datapump_job dp

where sl.opname = dp.job_name and sofar != totalwork;

 

SID SERIAL# SOFAR TOTALWORK OWNER_NAME STATEJOB_MODE

———- ———- ———- ———- —————————— ————————————————————

122 64151 1703 2574 SYSTEM EXECUTING FULL

 

ps–ef操作系统查看进程

monitor at the OS - Do a "ps -ef" on the data pump processand watch it consume CPU.

 

tail–f 日志

You can also monitor the data pump log file with the "tail-f", command, watching the progress of the import in real time.

 

查询表空间大小变化看进度

3.expimp 和expdp impdp对比

工作原理不同:

exp常规方式是使用SELECT的方式查询数据库中的数据,是需要通过buffer cache并通过sql的语句处理层再转移至exp的导出文件(即要经过sga,pga才传输到客户端,而exp直接路径则是直接从磁盘上将数据转移至exp的导出文件,所以速度更快;而expdpexp的升级版,相当于exp + direct mode + parallel(可能对导出文件还进行了压缩,这是从导出文件的对比结果发现的,具体不清楚)。所有从总的来说,expdpexp提供了并行的方式(写入多个导出文件)。

 

expdp/impdp调用Server端的API在执行操作,是数据库内部的job任务。可以远程使用,但是生成的dump 文件存在于服务器上的directory里exp/imp 默认会是传统路径, 这种模式下,是用SELECT 加数据查询出来, 然后写入buffer cache, 在将这些记录写入evaluate buffer,最后传到Export客户端,在写入dump文件。

 

exp 的direct直接路径模式下,数据直接从硬盘读取,然后写入PGA, 格式就是export 的格式,不需要转换, 数据再直接传到export 客户端,写入dump 文件。这种模式没有经过evaluation buffer。 少了一个过程,导出速度提高也是很明显,总之,expdp/impdp 是服务端程序,影响它速度的只有磁盘IO,exp/imp 可以在服务端,也可以在客户端。所以,它受限于网络和磁盘

 

用法:

a.      把用户usera的对象导到用户userb,用法区别在于

fromuser=usera touser=userb ,remap_schema='usera':'userb'

例如

imp system/passwd fromuser=useratouser=userb file=/oracle/exp.dmp log=/oracle/exp.log;

impdp system/passwddirectory=expdp dumpfile=expdp.dmp remap_schema='usera':'userb'logfile=/oracle/exp.log;

 

b.      更换表空间,用exp/imp的时候,要想更改表所在的表空间,需要手工去处理一下,如altertable xxx move tablespace_new之类的操作。

用impdp只要用remap_tablespace='tabspace_old':'tablespace_new'

 

c.      当指定一些表的时候,

exp/imp 时,tables的用法是tables=('table1','table2','table3')。

expdp/impdp用法是tables='table1','table2','table3'

 

d.      是否要导出数据行

exp (ROWS=Y 导出数据行,ROWS=N 不导出数据行)

expdp content(ALL:对象+导出数据行,DATA_ONLY:只导出对象,METADATA_ONLY:只导出数据的记录)

e.      查看进度

而且impdp相对Imp有一个特别的优点就是可以随时查看导入的进度, 使 impdp  xxxxattach=SYS_IMPORT_TABLE_28 的形式就可以查看导入的数据量,导入的进度。这些情况基本都是基于SYS_IMPORT_TABLE_28 表来读取的信息,它基本就是一个控制表

f.       曾经在网上看到一个对比的图,偷一下放这

                           

4.有时候可以试试这个参数

4.1     expdp impdp参数METRICS=Y

metrics=y参数会记录每一步所用的时间,并在后面打印出”completed….in X seconds”

4.2     exp 参数feedback

FEEDBACK             x 行显示进度 (0), 打印一个点

4.3     expdp include参数

当我们需要导出很多表时,多到我们不方便写list时怎么办,你是一个个字,写死你,还会报下面的错:

but she got“UDE-00014: invalid value for parameter, ‘include'”:

那是因为“include” parameteraccepts only 4000 characters.

解决办法可以一个表去存储所有表的名字:

CREATE TABLE list_of_tables ( tbl_nameVARCHAR2(30) );

INSERT INTO list_of_tables ( 'CBTRFCC' );

INSERT INTO list_of_tables ( 'CBTFCCN' );

...

INSERT INTO list_of_tables ( 'CPDORPG' );

COMMIT;

 

然后这样:

expdp DADM/passwd DIRECTORY=DMP_DIRSCHEMAS=DADM DUMPFILE=dadm_data.dmp

CONTENT=DATA_ONLY include=TABLE:"IN(SELECT tbl_name FROM list_of_tables)"

4.4     expdp可以压缩导出

compression=all:对于ALL方式,数据泵会对导出的源数据和表数据都进行压缩,顾名思义,这种方式得到的数据泵导出文件是最小的,

不过用时相对也会比较长

compression=data_only:对于DATA_ONLY方式,数据泵对表数据进行压缩,这种压缩方式对于大数据量的导出效果明显,一般来说,这种方式回比METADATA_ONLY方式得到更小的压缩文件

compression=none不进行任何的压缩,导出后数据文件也是最大的

对于METADATA_ONLY方式,数据泵只对源数据进行压缩,而不会压缩数据文件,这种压缩执行后效果一般不是很明显,不过速度比较快

4.5     FILESIZE

举例说明,当我们使用如下语句:

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

那么expdp将为parallel 创建4个文件: ORCL_01.DMPRCL_02.DMPORCL_03.DMPRCL_04.DMP每个进程一个文件。这样的话,每个文件的大小会因进程而不同。可以某个文件很大,某个文件却很小。要解决这个问题,就是设置filesize 参数。来指定每个文件的最大值。这样当一个文件达到最大值的之后,就会创建一个新的文件。如:

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

导出的dump文件和parallel有关系,那么导入也有关系。 parallel要小于dump文件数。如果parallel大于dump文件的个数,就会因为超过的那个进程获取不到文件,就不能对性能提高。一般parallel 参数值等于CPU 的个数,而且要小于dump文件的个数。

 

查看CPU 个数:

SQL> show parameter cpu

4.6     EXTIMATE_ONLY估算空间

expdp指定是否只估算导出作业所占用的磁盘空间,默认值为N

EXTIMATE_ONLY={Y | N}

设置为Y,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,N,不仅估算对象所占用的磁盘空间,还会执行导出操作.

expdp system/oracle ESTIMATE_ONLY=yNOLOGFILE=y

5.传输表空间

6.常见问题

6.1 导出表丢失

参数deferred_segment_creation

6.2 导入后有没有发现表空间撑爆了

compress=n参数

6.3 rac导出时加cluster=n

而在11GR2EXPDPIMDPWORKER进程会在多个INSTANCE启动,所以DIRECTORY必须在共享磁盘上,如果没有设置共享磁盘还是指定cluster=no来防止报错。

6.4 字符集问题

NLS_LANG 参数对expdp/impdp影响:

10G之前exp在导出数据时,数据字符集会依赖于NLS_LANG参数的设置,如果Client端设置了NLS_LANG参数,那么数据会按照NLS_LANG设置的字符集导出,

如果没有则按照数据库本身的字符集导出; imp也一样导入时也会参照NLS_LANG的设置在导入是对字符集做转换

6.5单独导出索引

spool /home/oracle/INDEX_CREATE.SQL

set heading off;

set echo off;

Set pages 999;

set long 90000;

select dbms_metadata.get_ddl('INDEX',ui.INDEX_NAME)from user_indexes ui ;

spool off;

6.6单独导出统计信息

6.7版本问题

Export/Import DataPump Parameter VERSION -Compatibility of Data Pump Between Different Oracle Versions [Video] (Doc ID553337.1)


文章转载自小飞旅馆,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论