今天要导一个远程服务器的数据库到另外一台服务器上,同事早就在源服务器加了定期导出功能,用的是expdp导出的dmp文件,另外带了导出日志.log文件。所以要导入到目标服务器上,必须要用impdp方式导入。
首先,目标服务器上必须已经建好了数据库和数据库实例,我这里分别是ORCL、BFB2C/DHHZDHHZ。
其次,在cmd中发命令导入dmp文件
从源服务器上得到.log文件,打开里面最上面有段代码如下:
system/******** DIRECTORY=EXPDPDIR DUMPFILE=TEMP.DMP REUSE_DUMPFILES=Y SCHEMAS=(BFB2C,TRANS_USER,bfcrm,bfstatuser) LOGFILE=2014-10-10.LOG
后面的工作很简单,把它们稍微做些替换就可以了。
system/******** ------->BFB2C/DHHZDHHZ@ORCL。此处为一个可用的用户名和密码
DIRECTORY=EXPDPDIR:其中EXPDPDIR指的是数据库的一个目录变量,在qlsql发下语句查一下,select * from all_directories; 替换成一个现有的变量,然后把dmp文件放到directory_path下。
DUMPFILE=TEMP.DMP:TEMP.DMP就是要导入的数据泵文件啦。
REUSE_DUMPFILES=Y:这个参数导入时去掉。
SCHEMAS=(BFB2C,TRANS_USER,bfcrm,bfstatuser):要导入的数据库实例,现在我只要导入第一个,所以
SCHEMAS=(BFB2C)就可以了。
如果导出和导入的不是同一个数据库的话,要用remap_schema=A:B参数,当你从A用户导出的数据,想要导入到B用户中去,就使用这个:remap_schema=A:B。
LOGFILE=2014-10-10.LOG:自己命名下日志文件,用来记录导入的日志,方便查看错误。
还有个参数要说明下,table_exists_action=replace ,如果要替换掉数据库实例中原来的表结构,就加上这个参数就可以了。
最后的成品为:
impdp BFB2C/DHHZDHHZ@ORCL DIRECTORY=EXPDPDIR DUMPFILE=NMMZ20101010.DMP TABLE_EXISTS_ACTION=REPLACE SCHEMAS=(BFB2C) LOGFILE=20141010.LOG
我试过了,是可以的