设为首页 收藏本站
查看: 566|回复: 0

[经验分享] oracle 导入导出

[复制链接]

尚未签到

发表于 2018-9-8 06:27:40 | 显示全部楼层 |阅读模式
  转载:
  http://www.linuxidc.com/Linux/2014-04/99932p3.htm
  http://www.cnblogs.com/jasonjiang/archive/2010/07/29/1787802.html
  expdp使用
  使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此使用EXPDP工具时,,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIRECTORY对象权限。
  使用EXPDP和IMPDP时应该注意的事项:
  EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
  EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
  IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
  expdp或impdp命令时,可暂不指出用户名密码@实例名 as 身份,然后根据提示再输入,如:
  expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
  首先得建DIRECTORY:
  SQL> conn /as sysdba
  SQL> CREATE OR REPLACE DIRECTORY directory_name AS 'directory_path';
  同样可以更改directory的os路径
  SQL> GRANT read,write ON DIRECTORY directory_name TOusername;
  查询directory目录
  SQL> select * from dba_directories;
  SQL> select * from all_directories;
  删除directory目录
  SQL> drop directory directory_name;
  expdp选项
  1. ATTACH
  该选项用于在客户会话与已存在导出作用之间建立关联.语法如下:
  ATTACH=[schema_name.]job_name
  schema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:
  expdp username/password ATTACH=username.job_name
  2. CONTENT
  该选项用于指定要导出的内容.默认值为ALL.语法如下:
  CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
  当设置CONTENT为ALL 时,将导出对象定义及其所有数据; 为DATA_ONLY时,只导出对象数据; 为METADATA_ONLY时,只导出对象定义,示例如下:
  expdp username/password DIRECTORY=directory_name DUMPFILE=dumpfile_name CONTENT=METADATA_ONLY
  3. DIRECTORY
  指定转储文件和日志文件所在的目录.语法如下:
  DIRECTORY=directory_object
  directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS 目录,示例如下:
  expdp username/password DIRECTORY=directory_name DUMPFILE=dumpfile_name
  建立目录:
  CREATE DIRECTORY directory_name as '/Oracle/dump';
  查询创建了那些子目录:
  SELECT * FROM dba_directories;
  4. DUMPFILE
  用于指定转储文件的名称,默认名称为expdat.dmp.语法如下:
  DUMPFILE=[directory_object:]file_name[,….]
  directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象,示例如下:
  expdp username/password DIRECTORY=directory_name DUMPFILE=directory_name:dumpfile_name
  5. ESTIMATE
  指定估算被导出表所占用磁盘空间的方法.默认值是BLOCKS.语法如下:
  EXTIMATE={BLOCKS | STATISTICS}
  设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间,示例如下:
  expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dumpDUMPFILE=a.dump
  一般情况下, 当用默认值(blocks)时, 日志中估计的文件大小会比实际expdp出来的文件大, 用statistics时会跟实际大小差不多.
  6. EXTIMATE_ONLY
  指定是否只估算导出作业所占用的磁盘空间,默认值为N.语法如下:
  EXTIMATE_ONLY={Y | N}
  设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作,示例如下:
  expdp username/password ESTIMATE_ONLY=y NOLOGFILE=y
  7. EXCLUDE
  该选项用于指定执行操作时要排除的对象类型或相关对象.语法如下:
  EXCLUDE=object_type[:name_clause][,….]
  object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用,示例如下:
  expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW
  在EXPDP的帮助文件中, 可以看到存在EXCLUDE和INCLUDE参数, 这两个参数文档中介绍的命令格式存在问题, 正确用法是:
  EXCLUDE=OBJECT_TYPE[:name_clause][,...]
  INCLUDE=OBJECT_TYPE[:name_clause][,...]
  示例:
  Expdp  schema=username exclude=sequence,table:"in('TB','DTP')"
  impdp  schema=username include = function,package, procedure, table:"='TB'"
  有了这些还不够, 由于命令中包含了多个特殊字符, 在不同的操作系统下需要通过转义字符才能使上面的命令顺利执行,
  如:
  EXCLUDE=TABLE:"IN('BIGTALE')"
  8. FILESIZE
  指定导出文件的最大尺寸,默认为0(表示文件尺寸没有限制).
  9. FLASHBACK_SCN
  指定导出特定SCN时刻的表数据.语法如下:
  FLASHBACK_SCN=scn_value
  scn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用,示例如下:
  expdp username/password DIRECTORY=directory_name DUMPFILE=dumpfile_name FLASHBACK_SCN=scn_value
  10. FLASHBACK_TIME
  指定导出特定时间点的表数据.语法如下:
  FLASHBACK_TIME="TO_TIMESTAMP(time_value)"
  示例如下:
  expdp username/password DIRECTORY=directory_name DUMPFILE=dumpfile_name FLASHBACK_TIME = "TO_TIMESTAMP('18-04-201412:05:00','DD-MM-YYYY HH24:MI:SS')"
  11. FULL
  指定数据库模式导出,默认为N.语法如下:
  FULL={Y | N}
  为Y时,标识执行数据库导出.
  12. HELP
  指定是否显示EXPDP命令行选项的帮助信息,默认为N.当设置为Y时,会显示导出选项的帮助信息,示例如下:
  expdp help=y
  13. INCLUDE
  指定导出时要包含的对象类型及相关对象.语法如下:
  INCLUDE=object_type[:name_clause][,… ]
  示例如下:
  expdp username/password DIRECTORY=directory_name DUMPFILE=dumpfile_name INCLUDE=object_type
  1.1.2 expdp选项
  14. JOB_NAME
  指定要导出作用的名称,默认为SYS_XXX.语法如下:
  JOB_NAME=jobname_string
  示例如下:
  expdp username/password DIRECTORY=directory_name DUMPFILE=dumpfile_name INCLUDE=triggerJOB_NAME=exp_trigger
  后面想临时停止expdp任务时可以按Ctrl+C组合键,退出当前交互模式,退出之后导出操作不会停止,这不同于Oracle以前的EXP. 以前的EXP,如果退出交互式模式,就会出错终止导出任务. 在Oracle10g中,由于EXPDP是数据库内部定义的任务,已经与客户端无关. 退出交互之后,会进入export的命令行模式,此时支持status等查看命令:
  Export> status
  如果想停止改任务,可以发出stop_job命令:
  Export> stop_job
  如果有命令行提示: "是否确实要停止此作业([Y]/N):" 或 "Are you sure you wish to stop this job ([yes]/no):", 回答应是yes或者no, 回答是YES以后会退出当前的export界面.
  接下来可以通过命令行再次连接到这个任务:
  expdp test/test@acf attach=expfull
  通过start_job命令重新启动导出:
  Export> start_job
  Export> status
  15.LOGFILE
  指定导出日志文件文件的名称,默认名称为export.log.语法如下:
  LOGFILE=[directory_object:]file_name
  directory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值
  16. NETWORK_LINK
  指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.
  expdp中使用连接字符串和network_link的区别:
  expdp属于服务端工具,而exp属于客户端工具,expdp生成的文件默认是存放在服务端的,而exp生成的文件是存放在客户端.
  expdp username/password@connect_string //对于使用这种格式来说,directory使用源数据库创建的,生成的文件存放在服务端。
  如何将生成的文件放在目标数据库而不放在源数据库呢,在expdp中使用network_link.比如在本机expdp远程服务器的数据库,先在本机创建到服务端的dblink,然后创建directory及授权,然后expdp.
  a.创建到服务端的dblink
  conn aa/aacc

  create database link  connect to >  b.创建directory
  conn / assysdba
  create or replace directory dir as '/home/oracle/dbbackup';
  grant read,write on directory dir to ;
  c.导出
  expdpusername2/password2 directory=dirnetwork_link=link_name ... //这里的username2用创建dblink的那个用户aa,directory也是目标数据库创建的
  比如在本机expdp远程服务器的数据库,先在本机创建到服务端的dblink,然后创建directory及授权,然后expdp useranme2/password2.....
  如果想不生成dmp文件而直接导入一个数据库,原理和上面类似,直接使用impdp带network_link ,这样可以直接impdp,而绕过了expdp的步骤
  impdp network_link=tolink schemas=link remap_schema=link:link2
  17.NOLOGFILE
  该选项用于指定禁止生成导出日志文件,默认值为N.
  18. PARALLEL
  指定执行导出操作的并行进程个数,默认值为1
  19. PARFILE
  指定导出参数文件的名称.语法如下:
  PARFILE=[directory_path:]file_name
  20. QUERY
  用于指定过滤导出数据的where条件.语法如下:
  QUERY=[schema.][table_name:]query_clause
  schema 用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能 与 CONNECT = METADATA_ONLY, EXTIMATE_ONLY, TRANSPORT_TABLESPACES等选项同时使用,示例如下:
  expdp username/password directory=directory_name dumpfiel=dumpfile_name Tables=empquery='WHERE deptno=20'
  21. SCHEMAS
  该方案用于指定执行方案模式导出,默认为当前用户方案.
  22. STATUS
  指定显示导出作用进程的详细状态,默认值为0.
  23. TABLES
  指定表模式导出.语法如下:
  TABLES=[schema_name.]table_name[:partition_name][,…]
  schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.
  24. TABLESPACES
  指定要导出表空间列表.
  25. TRANSPORT_FULL_CHECK
  该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.
  当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.
  当设置为N时,导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息.
  26. TRANSPORT_TABLESPACES
  指定执行表空间模式导出.
  27. VERSION
  指定被导出对象的数据库版本,默认值为COMPATIBLE.语法如下:
  VERSION={COMPATIBLE | LATEST | version_string}
  为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串.
  1) 导出用户整个schema
  --默认导出登陆账号的schema
  $ expdp username/password@oracle_sid DIRECTORY=directory_name DUMPFILE=dumpfile_name LOGFILE=logfile_name
  --其他账号登陆, 在参数中指定schemas
  $ expdp username/password@oracle_sid DIRECTORY=directory_name DUMPFILE=dumpfile_name LOGFILE=logfile_name SCHEMAS=username1,username2
  2) 导出用户下指定的表
  $ expdp username/password@oracle_sid DIRECTORY=directory_name DUMPFILE=dumpfile_name LOGFILE=logfile_name TABLES=table_name1,table_name2
  3) 导出用户下除tb表之外的表
  $ expdp username/password@oracle_sid DIRECTORY=directory_name DUMPFILE=dumpfile_name LOGFILE=logfile_name EXCLUDE=TABLE:"='tb'"
  4) 导出用户下的存储过程
  $ expdp username/password@oracle_sid DIRECTORY=directory_name DUMPFILE=dumpfile_name LOGFILE=logfile_name INCLUDE=PROCEDURE
  5) 导出用户下以'E'开头的表
  $ expdp username/password@oracle_sid DIRECTORY=directory_name DUMPFILE=dumpfile_name LOGFILE=logfile_name INCLUDE=TABLE:"LIKE 'E%'"
  6) 带QUERY导出
  $ expdp username/password@oracle_sid DIRECTORY=directory_name DUMPFILE=dumpfile_name LOGFILE=logfile_name QUERY=查询语句
  注: 处理这样带查询的多表导出, 如果多表之间有外健关联, 可能需要注意查询条件所筛选的数据是否符合这样的外健约束, 比如TB中有一栏位是 deptno, 是关联dept中的主键, 如果"whereempno>=8000"中得出的deptno=50的话, 那么, 你的dept的条件"where deptno>=10 and deptno

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-567214-1-1.html 上篇帖子: oracle lock基础知识(一) 下篇帖子: Java38: 数据库二(Oracle)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表