oracle如何使用数据泵导入、导出操作

大家好,我继续来划个水,最近在用emp导出数据库时候总是有些数据表无法导出,导致数一直无法导出,然后就使用数据泵empdp进行导数据,刚接触数据泵是在本机上使用过自信满满啊,结果导入的时候各种报错,最终上网找各种方法,结果喵的把数据库给删了,数据还没导进去,但是最终还是解决了。详细方法如下。

 

一般使用emp\imp导入导出时正常使用即可,但是遇到有分表的情况或者数据量较大的情况会有无法导出的情况。使用imp导入时,使用登录用户导入,导入到的数据默认会保存到登录用户下。需要加入参数full=y,当存在表结构时,只导入数据需要加入参数data_only=y使用数据泵empdp/impdp导出、导入时,只能是保存到数据库所在的服务器上,以及导入的时候也需要在数据库所在的服务器中,使用empdp导出时默认的数据库用户为数据库所属的用户,假设数据库有两个用户一个root,一个oracle,那么导出的文件权限需要oracle用户才能进行使用。使用impdp导入时需要将对应的dmp文件保存到导入的数据库地址下,并且文件读写权限赋予数据库所属用户上。

使用数据泵操作步骤:
1、需要先在oracle端指定一个目录用于存放导出的dmp文件,需要保证内存要足够大, 不然导出空间不足的时候会自动停止报错,导致导出数据缺失。

–-查询 DMPDIR   设置导出的目录
select * from dba_directories where directory_name = ‘oracleDB’;

-–删除 DMPDIR
drop directory oracleDB

–-重建 DMPDIR
create directory oracleDB as ‘/oracle/dbbak’;

–-给DMPDIR授权
grant read, write on directory oracleDB to public;

 

2、导出dmp 如果报错,内存不足的话需要重新指定一个路径,执行上述内容重新指定目录赋予oracle用户权限:chmod -R 777 新建的文件夹,此处要注意一点,linux如果将默认目录/下的文件设置为777的话,会导致权限过高存在安全风险会立马中断所有连接,并禁止所有用户访问,此时只能重启或者在实体机重新赋予权限了,所以各位大大一定要三思而后行啊。

--命令:如果命令中加入了full=y则会将DDP实例下的所有的表都会导出,如果只是导出某个用户下的表,则加参shemas=radpcs 
expdp radpcs/[email protected]/DDP directory=oracleDB dumpfile =20150226.dmp logfile=20150226.log 

注意:此处在导出时偶尔会报错,通常情况有两种:1)磁盘空间不足无法导出,此处自行解决。

2)一般就是上述1中的位置信息配置不正确,oracle用户没有读写权限,此时需要重新赋予一下权限,并查看一下权限即可。

 

3、导出后的文件会保存在10.1.1.1服务器的oracleDB所设置的目录下

 

4、将文件上传到对应的要导入的数据库的服务器下,记得要用对应数据库用户

scp /oracle/dbbak [email protected]:/home/oracle

注意:此处在传输过程中也会遇到问题,通常为目录没有权限无法传输,或者是导入的目录空间不足。

 

5、在要导入的25数据库服务器中,指定一个目录directory,见上述1操作

 

6、使用impdp导入数据一定要用好table_exists_action参数,参数内容如下。此处要注意,如果是当前导入用户具有dba权限,如果继续加入参数full=y,
则会对整个实例进行操作,一定要三思而后行。全库导入时需要有对应的表空间与导出时的表空间一致。如果只是导入当前用户下,但是用户不同则需要
加入参数: shema_user=radpcs:dbl   radpcs为导出时的用户,db1为要导入的用户,如果改用户不存在,则会自动创建用户

table_exists_action参数说明
1)  skip:默认操作
2)  replace:先drop表,然后创建表,最后插入数据
3)  append:在原来数据的基础上增加数据
4)  truncate:先truncate,然后再插入数据

impdp radpcs/[email protected]/DDP directory=oracleDB dumpfile =20150226.dmp logfile=20150226.log shema=radpcs:db1  table_exists_action=append

注意:此处导入也会遇到两种问题:

1)磁盘空间不足无法导出,此处自行解决。

2)一般就是上述1中的位置信息配置不正确,oracle用户没有读写权限,此时需要重新赋予一下权限,并查看一下权限即可。

 

至此数据成功导入,感谢各位大大欣赏,该部分命令本人亲测有效,特意分项

你可能感兴趣的:(sql,数据库,linux)