两台数据库服务器,一台是oarcle11g (IP:192.168.1.31),另一台是oracle19c,需要把数据从11g导入到19c。
由于11g的数据库有使用到自动表分区,exp导出报错,只能使用expdp命令了。
现在首先要做的是把数据从11g导出到19c的服务器上。
第一步:在19c上创建dblink,执行SQL语句创建 link_to_11g,这里的用户名和密码是11g上的用户,确保这个用户拥有exp_full_database,最好是用system用户;
CREATE PUBLIC database link link_to_11g CONNECT TO username IDENTIFIED BY "password"
using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.31)(PORT=1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
第二步:在19c上创建DIRECTORY,执行SQL语句创建 expdp_dir;
CREATE DIRECTORY expdp_dir AS 'D:/databak/';
第三步:在19c服务器上创建expdp的parfile文件 D:\exp.par,
userid为19c的用户,要拥有exp_full_database权限,最好用system用户,
network_link和directory是前两步创建的,
dumpfile是导出的文件名,logfile是日志文件名,
schemas是11g的用户名,
示例内容如下:
userid=system/"manager"
directory=expdp_dir
dumpfile=expdp.dump
logfile=expdp.log
schemas=USER_1,USER_2,USER_3
network_link=link_to_11g
第四步:在19c服务器上打开CMD,执行导出命令:
expdp parfile=D:\exp.par
第五步:在19c服务器上打开CMD,执行导入命令:
impdp system/"manager" directory=expdp_dir dumpfile=expdp.dump logfile=impdp.log full=yes
参考:
https://blog.csdn.net/weixin_31688465/article/details/113398278