create DIRECTORY datadump as '/home/oracle/'; --创建目录对象位置(建议放在归档目录下)
grant read,write on DIRECTORY datadump to yyq; ---给应用用户授予读写权限
select * from DBA_DIRECTORIES;--查询数据字典视图查看数据库所有的目录对象,
expdb yyq/yyqDIRECTORY ='datadump' DUMPFILE=yyq.dmp; ---此命令会在已定义的目录(/home/oracle)中产生导出的文件(yyq.dmp)
导出用户
expdp yyq/yyq directory=dump_backup dumpfile=yyq%U.dmp logfile=yyq.log PARALLEL=4 schemas=yyq;
导入用户
impdp yyq/yyq directory=dump_backup dumpfile=yyq%U.dmp logfile=yyq.log PARALLEL=4 remap_schema=yyq:yyq;
二 ,expdp导出模式有5种:
a,全库导出模式(Full Export Mode),使用参数FULL指定,用户需具有DATAPUMP_EXP_FULL_DATABASE角色。
b,模式(用户)导出模式(Schema Mode),使用参数SCHEMAS指定,是默认的导出模式。
c,表导出模式(table Mode),使用参数tables指定,如果指定了参数transportable=always,则只有对象的元数据被导出。
d,表空间导出模式(Tablespace Mode),使用参数TABLESPACES指定,导出指定表空间中所有表及其依赖对象的元数据和行数据。
重要参数:
COMPRESSION=[ALL|DATA_ONLY|METADATA_ONLY|NONE] 指明转存文件中数据进行压缩,DATA_ONLY只对行数据进行压缩,METADATA_ONLY只对元数据进行压缩,none表示不压缩,默认为METADATA_ONLY.
CONTENT=[all|metadate_only|data_only] 默认为all, all表示导出对象的元数据,data_only只导出对象的行数据,metadata_only只导出对象的元数据。
DUMPFILE 转存导出文件名称,包含目录对象名,默认值为expdat.dmp.
DIRECTORY 指定转存文件和日志文件所在位置的目录对象,该对象由DBA预先创建。
eg: expdp yyq/yyqDIRECTORY=datadump DUMPFILE=yyq.dmp COMPRESSION=METADATA_ONLY CONTENT=METADATA_ONLY
ESTIMATE=[BLOCKS|STATISTICS] 估计导出作业中每个表中的数据占用磁盘空间大小的方法
ESTIMATE_ONLY=[YES|NO] 指定导出作业占用磁盘空间大小是是否真正进行导出操作,默认为NO。
EXCLUDE 指定导出操作中要排除的对象类型和对象元数据。
FILESIZE 转存文件的最大尺寸。FILESIZE=100[B|KB|MB|GB|TB]
eg: expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.dmp EXCLUDE=VIEW,PACKAGE,FUNCTION FILESIZE=50MB
FULL是否进行全数据库导出,包含所有行数据与元数据。FULL=[YES|NO],默认为no.
INCLUDE 指定导出操作中导出的对象类型和对象元数据。
eg:expdp yyq/yyq SCHEMAS=yyq DUMPFILE=yyq.DMP DIRECTORY=datadump LOGFILE=expdp.log INCLUDE=TABLE:"IN ('SYS_USER','SYS_ORG')" INCLUDE=INDEX:"LIKE 'EMP%'" INCLUDE=PROCEDURE
JOB_NAME 指定导出作业名称,
LOGFILE 导出日志名称,默认为export.log.
PARALLEL 指定导出作业是最大的并行进程个数,默认为1.
eg:expdp yyq/yyq DIRECTORY=datadump LOGFILE=expdp.log JOB_NAME=par4_job DUMPFILE=yyq%u.dmp PARALLEL=4
QUERY 导出操作中select语句中的数据过滤条件。
eg:expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP LOGFILE=expdp.log QUERY='SYS_USER:"WHERE ID>100 AND USER_CODE=010623"'
REUSE_DUMPFILES =[YES|NO]指定是否覆盖同名的转存文件,默认为no.
SAMPLE 指定导出数据的百分比。
eg:expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP SAMPLE=70 REUSE_DUMPFILES=YES
SCHEMAS 指定用户导出及用户列表。
eg: expdp system/system DIRECTORY=datadump DUMPFILE=yyq.DMP SCHEMAS=yyq,HR,OS
STATUS 指定显示导出作业状态的时间间隔,默认为0,
eg:expdp yyq/yyq DIRECTORY=datadump SCHEMAS=yyq,HR STATUS=300
TABLES 指定表模式导出及表名称列表。
eg: expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP tables=sys_user,sys_org
TABLESPACES 指定表空间模式及表空间名称列表。
eg: expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP TABLESPACES=tbs1,tbs2
示例:
1,表导出模式:
例1:导出用户yyq下的sys_user表和sys_org表,转存文件为yyq.dmp,日志文件为expdp.log,作业名称exp_user_org,导出操作启动3个进程。
expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP LOGFILE=expdp.log tables=sys_user.sys_org JOB_NAME=exp_user_org PARALLEL=3
例2:在表导出模式中,可以预先估计导出数据(不包含元数据)占用空间的大小,其结果写入日志文件中,同时终端显示。
expdp yyq/yyq DIRECTORY=datadump ESTIMATE_ONLY=yes tables=sys_user,sys_org locations LOGFILE=EXP.LOG
2,用户导出模式,如果导出其他用户模式需要具备DATAPUMP_EXP_FULL_DATABASE角色,默认导出当前用户的所有对象的元数据及行数据。
expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP LOGFILE=EXP.LOG SCHEMAS=yyqJOB_NAME=EXP_JOB
3,表空间导出模式
expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP tablespace=yyq_dat
4,数据库导出模式
expdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP FULL=yes NOLOGFILE=YES
5,参数文件方式导出
创建一个文件exp.txt,其内容为:DIRECTORY=datadump DUMPFILE=yyq.DMP tables=sys_user,sys_org
然后在命令行执行:expdp yyq/yyq PARFILE=D:\exp.txt
三, IMPDP导入模式5种
a,全库导入模式(Full Export Mode),使用参数FULL指定,用户需具有DATAPUMP_EXP_FULL_DATABASE角色。
b,模式(用户)导入模式(Schema Mode),使用参数SCHEMAS指定,是默认的导出模式。
c,表导入模式(table Mode),使用参数tables指定,如果指定了参数transportable=always,则只有对象的元数据被导出。
d,表空间导入模式(Tablespace Mode),使用参数TABLESPACES指定,导出指定表空间中所有表及其依赖对象的元数据和行数据。
CONTENT=[all|metadate_only|data_only] 默认为all, all表示导入对象的元数据,data_only只导入对象的行数据,metadata_only只导入对象的元数据。 DIRECTORY DUMPFILE
NOLOGFILE=[YES|NO] 是否生成导入日志,默认NO.
REMAP_SCHEMA=yyq:frsana 从用户yyq的所有对象导入到frsana用户中。跨用户导入
eg: >expdp system/passwd SCHEMAS=yyqDIRECTORY=datadump DUMPFILE=yyq.DMP ---导出yyq用户的所有对象
>impdp system/passwd DIRECTORY=datadump DUMPFILE=yyq.DMP REMAP_SCHEMA=yyq:frsana --将yyq用户的所有对象导入到frsana用户中
REMAP_TABLE 导入过程中重命名表
eg: impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP TABLES=yyq.SYS_USER REMAP_TABLE=yyq.SYS_USER:USER --将表sys_user改为表user
REMAP_TABLESPACE 将源表空间所有对象导入目标表空间中
eg: impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP REMAP_TABLESPACE=tbs1:tbs6 --将表空间tbs1的所有对象导入tbs6中。
REUSE_DATAFILES=[Y|N] 导入过程中,创建表空间时是否使用已经存在的数据文件,
eg: impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP FULL=YES LOGFILE=IMP.LOG REUSE_DATAFILES=YES
SCHEMAS 用户导入模式
eg: impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP SCHEMAS=yyqLOGFILE=IMP.LOG
SKIP_UNUSABLE_INDEXES =[YES|NO] 指定导入操作是是否跳过不可使用的索引。
STREAMS_CONFIGURATION =[yes|no] 指定是否导入存储文件中生成的流元数据。
TABLE_EXISTS_ACTION=[SKIP|APPEND|TRUNCATE|REPLACE] 指定导入过程中要创建的表已经存在时该如何操作,默认为skip。追加导入
示例:
表导入模式:
impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP TABLES=SYS_USER,SYS_ORG CONTENT=DATA_ONLY --表已经存在,只导数据
impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP TABLES=SYS_USER,SYS_ORG NOLOGFILE=Y --导入表的元数据及行数据
impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP TABLES=SYS_USER,SYS_ORG QUERY='SYS_USER:"where id<100"' --只导入符合条件的数据
impdp yyq/yyq DIRECTORY=datadump DUMPFILE=yyq.DMP TABLES=SYS_USER TABLE_EXISTS_ACTION=APPEND --向表中追加数据
用户到入模式:
impdp system/passwd DIRECTORY=datadump DUMPFILE=yyq.DMP REMAP_SCHEMA=yyq:frsana --将yyq用户的所有对象导入到frsana用户中,跨用户
四,EXP/IMP导出与导入数据4种
全库模式:使用参数FULL,用户具有EXP_FULL_DATABASE角色或IMP_FULL_DATABASE角色。
表空间模式:使用参数TABLESPACE,指定参数TRANSPORT_TABLESPACE可以只导出表空间的所有元数据。
用户模式:使用参数OWNER,授权用户可以从指定用户模式中的对象导出,或指定FROMUSER参数将转存文件中指定的用户模式的内容导入数据库中。
表模式:使用参数TABLES,指定表或分区导出到转存文件。
BUFFER 设置数据缓冲区大小。
DIRECT 指定是否使用直接路径,默认N。
FILE 指定导出的转存文件。
CONSTRAINTS 指定是否导出约束条件,默认Y。
GRANTS 指定是否导出权限,默认Y。
INDEXES 指定是否导出索引,默认Y。
PARFILE 指定参数文件名称。
QUERY 指定查询条件,导出符合条件的数据。
TRIGGERS 指定是否导出触发器,默认Y.
exp导出:
eg: exp system/password FULL=y FILE='D:\BACKUP\exp.dmp' --全库导出
exp system/password OWNER=yyq,hr FILE='D:\BACKUP\exp.dmp' GRANTS=Y COMPRESS=Y --用户对应模式的所有对象元数据及行数据
exp system/password TABLES=SYS_USER FILE='D:\BACKUP\exp.dmp' QUERY=\' WHERE id<100 \'
imp导入:
COMMIT 指定是否导入一组数据后提交,默认N全表导入提交,
DESTROY 指定是否覆盖数据库原有数据文件,默认N.
DATA_ONLY 指定是否是只导入数据,默认是导入元数据和行数据,默认N.
fromuser 指定导入的用户名列表。
IGNORE 指定是否忽略导入过程中创建对象时发生错误,默认N.
ROWS 指定是否导入行数据。
TOUSER 指定导入的用户模式列表。
USERID 指定连接数据库的用户名和口令。
LOG 指定一个日子文件。
PARFLIE 指定存放参数文件。
GRANTS 指定是否导入权限,默认Y.