1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Oracle备份与恢复 expdp/impdp数据泵远程导入导出

Oracle备份与恢复 expdp/impdp数据泵远程导入导出

时间:2023-05-14 09:48:36

相关推荐

Oracle备份与恢复 expdp/impdp数据泵远程导入导出

Oracle备份与恢复 expdp/impdp数据泵远程导入导出

Oracle在10g的时候有一个很好用的导出工具expdp(数据泵)

但是这个工具好用的同时,有一个局限,就是必须用本地的用户才可以导出数据,也就是说数据泵只能导出本地数据库的数据

但是如果业务需求是 将一个用户的全部表都导出,但是不需要t1,t2,t3而且这个数据库不是本地的,是异地的一个数据库

正常的思路是通过exp userxx/passwd@192.168.1.100/orcl file=xxx.dmp log=xxx.log 就可以异地导出,但是消耗很多时间,而且有一个硬性要求,必须要除去某些表,所以必须要用到expdp来完成

expdp中有一个参数是exclude,这个参数中就可以添加不想导出的索引或者表之类的

但是再一想,必须要用expdp,而且是一个异地的数据库,主机登录不上,很是矛盾

思考了好久,终于想到办法

用dblink来做一个中间的链接,再用expdp导出

完事具备,开搞:

创建本地用户

在本地创建一个用户,一个目录,授权

$ mkdir /home/oracle/dmpfileCREATE USER TEST IDENTIFIED BY TEST DEFAULTE TABLESPACE XXX;CREATE DIRECTORY DMPFILE AS '/oracle/dmpfile';GRANT resource,connect,imp_full_database to TEST;GRANT read,write on directory dmpfile to test;

还要有一个准备工作:

如果需要用dblink来导出数据的话需要给远程的用户一个exp_full_database的权限

sqlplus system/xxxx@192.168.1.100/orcl

GRANT EXP_FULL_DATABASE TO USERXX;

创建dblink

这里要注意,创建的dblink必须要是public的

否则及时创建完后,也会报错找不到dblink

create public database link db_localconnect to userxx IDENTIFIED BY passwdusing '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl )))';

创建完成后,查看下数据是否存在

select * from userxx.test@db_local;

如果找到userxx重的test表的数据,证明dblink创建成功

用expdp导出数据

这是最关键的一步,因为参数有很多,所以使用parfile来完成,格式更好看些

vim test.paruserid=test/test--导出的用户,本地用户!!directory=dmpfile--导出的目录,一定要在oracle中创建完成的,并且给用户授权读写权限dumpfile=userxx.dmp --导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxx.dmplogfile=userxx.log--日志文件,如果不写这个参数的话默认名称就是export.log,可以在本地的文件夹中找到SCHEMAS=userxx --使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别EXCLUDE=TABLE:"IN('T1','T2','T3')" --exclude 可以指定不导出的东西,table,index等,后面加上不想导出的表名network_link=db_local--这个参数是使用的dblink来远程导出,需要指定dblink的名称

完成后退出保存。

执行导出

expdp parfile=test.par

就可以看到最后的导出了

导入的话需要这样:必须要在oracle中有一个目录,而且要有读写权限,要有imp_full_database权限

impdp testuser/testuser dumfile=userxx.dmp logfile=imp_userxx.log directory=dmpfile remap_schema=userxx:testuser

最后一个参数需要加上remap_schema=old:new

由一个用户导入到其他的用户,需要添加最后一个参数。

这样就可以导入成功了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。