Oracle使用expdp/impdp导出导入数据
2017-10-13 13:47
676 查看
这里假设已存在数据库用户,并是计划通过该用户导入导出该用户表空间上的数据。(我们这里假定用户名称为ls)
1.创建逻辑目录(数据库命令,sqlplus中执行)
Oracle不能直接指定系统目录让他去读写文件,只能先将系统目录映射成Oracle中的逻辑目录其才能读写。
先以sysdb登录,将系统/oracle/dump目录映射成Oracle的逻辑目录impexp;然后赋给导入导出用户在该目录的读写权限
另外后边的参logfile是用于记录导入导出的日志文件,文件名随意;schemas应该是导出的用户名。
2.expdp导出数据(非数据库命令,在主机命令行而非sqlplus中执行)
3.impdp导入数据(非数据库命令,在主机命令行而非sqlplus中执行)
如果要导到的用户与导出dumpfile的用户名不一样则要使用remap_schema代替schemas,将旧用户名指向新用户名:
如果要导到的表空间名称不一样,则要使用remap_tablespace将旧表空间名指向新表空间名:
如果要导到的用户名和表空间名与原来导出时的都不一样,那么要同时使用remap_schema和remap_tablespace:
如果导出的dmp文件中有多个表空间,那么remap_tablespace写多个:
如果原先已有数据,想使用覆盖导入使用table_exists_action=replace:
如果expdp限制了单个文件大小使用%U导出多个文件(比如6个),则导入:
4.导错处理
导入报错后一般是删除用户及其所有对象然后重导
imp导入:
格式:imp 数据库用户/用户密码@数据库实例 fromuser=导出时的用户 touser=导入到的用户 file=导出的dmp文件当前所在目录 log=导入日志文件要存放的位置
报错:IMP-00013: only a DBA can Import a file Exported by another DBA
原因:用于导入数据的lsdb用户没有dba权限
处理:使用sys等dba用户导入或赋权:grant imp_full_database to lsdb
执行脚本文件(类似mysql的source)
参考:
http://blog.csdn.net/haitaofeiyang/article/details/72026962
http://blog.csdn.net/by84788186/article/details/8958332
http://www.jb51.net/article/76786.htm
1.创建逻辑目录(数据库命令,sqlplus中执行)
Oracle不能直接指定系统目录让他去读写文件,只能先将系统目录映射成Oracle中的逻辑目录其才能读写。
先以sysdb登录,将系统/oracle/dump目录映射成Oracle的逻辑目录impexp;然后赋给导入导出用户在该目录的读写权限
create directory impexp as '/oracle/dump'; grant read,write on directory impexp to ls;
另外后边的参logfile是用于记录导入导出的日志文件,文件名随意;schemas应该是导出的用户名。
2.expdp导出数据(非数据库命令,在主机命令行而非sqlplus中执行)
expdp ls/lsdb123#@lsdb directory=impexp dumpfile= lsdb.dmp logfile=lsdb.log schemas= ls
3.impdp导入数据(非数据库命令,在主机命令行而非sqlplus中执行)
impdp ls/lsdb123# directory=impexp dumpfile= lsdb.dmp logfile= lsdb.log schemas= ls
如果要导到的用户与导出dumpfile的用户名不一样则要使用remap_schema代替schemas,将旧用户名指向新用户名:
impdp user_new/pass_new directory=impexp dumpfile=lsdb.dmp loggfile=lsdb.log remap_schema=user_old:user_new
如果要导到的表空间名称不一样,则要使用remap_tablespace将旧表空间名指向新表空间名:
impdp ls/lsdb123# directory=impexp dumpfile=lsdb.dmp loggfile=lsdb.log schemas=ls remap_tablespace=tablespace_old:tablespace_new
如果要导到的用户名和表空间名与原来导出时的都不一样,那么要同时使用remap_schema和remap_tablespace:
impdp user_new/pass_new directory=impexp dumpfile=lsdb.dmp logfile=lsdb.log remap_schema=user_old:user_new remap_tablespace=tablespace_old:tablespace_new
如果导出的dmp文件中有多个表空间,那么remap_tablespace写多个:
impdp ls/lsdb123# directory=impexp dumpfile=lsdb.dmp loggfile=lsdb.log schemas=ls remap_tablespace='(tablespace_old1:tablespace_new1,tablespace_old2:tablespace_new2)'
如果原先已有数据,想使用覆盖导入使用table_exists_action=replace:
impdp ls/lsdb123# directory=impexp dumpfile= lsdb.dmp logfile= lsdb.log schemas= ls table_exists_action=replace
如果expdp限制了单个文件大小使用%U导出多个文件(比如6个),则导入:
impdp lsdb/lsdb123# directory=impexp dumpfile=lsdb_%U.dmp logfile= lsdb.log schemas= lsdb parallel=6
4.导错处理
导入报错后一般是删除用户及其所有对象然后重导
drop user lsdb cascade; --删除lsdb用户及其所有对象 select sid,serial# from v$session where username='lsdb'; --如果用户存在活动会话则drop会失败所以先查找到用户会话 alter system kill session'sid_num,serial#_num'; --杀除用户会话
imp导入:
imp lsdb/lsdb123#@lsdb fromuser=lsdb touser=lsdb file=/oracle/backup/lsdb.dmp log=/oracle/backup/lsdb.log
格式:imp 数据库用户/用户密码@数据库实例 fromuser=导出时的用户 touser=导入到的用户 file=导出的dmp文件当前所在目录 log=导入日志文件要存放的位置
报错:IMP-00013: only a DBA can Import a file Exported by another DBA
原因:用于导入数据的lsdb用户没有dba权限
处理:使用sys等dba用户导入或赋权:grant imp_full_database to lsdb
执行脚本文件(类似mysql的source)
sqlplus user/pass@servicename</path/to/sql_script.sql SQL>start /path/to/sql_script.sql SQL>@ /path/to/sql_script.sql
参考:
http://blog.csdn.net/haitaofeiyang/article/details/72026962
http://blog.csdn.net/by84788186/article/details/8958332
http://www.jb51.net/article/76786.htm
相关文章推荐
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- linux 下使用exp/imp 或者expdp/impdp导出导入oracle数据表数据
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- 【oracle】使用EXPDP和IMPDP数据泵进行导出导入的方法
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
- How to use expdp/empdp in Oracle Database (使用expdp/impdp导入导出oracle数据 )
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
- oracle 数据泵导入导出(impdp/expdp)
- [转]10g以上expdp/impdp命令及区别 Oracle数据导入导出imp/exp命令
- Oracle数据导入导出imp/exp命令(10g以上expdp/impdp命令)
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
- Oracle 数据导入导出imp/exp命令 10g以上expdp/impdp命令