今天需要将数据库B的数据导入到数据库A中,之前了解过数据泵有network_link这个参数,所以想试试这个用法。
先在本地数据库A建立访问dblink数据库B,如下:
CREATE DATABASE LINK test_link
CONNECT TO xx IDENTIFIED BY yy
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = pp.pp.pp.pp)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)';
建立成功后,测试:select sysdate from dual@test_link,提示用户名或者密码错误,但是实际上用户名密码都是正确的。查出原因:本地数据库A是10g,远程数据库是11g,低版本数据库建立dblink访问高版本数据库时,应把用户名、密码加上双引号,如:CONNECT TO "xx " IDENTIFIED BY "yy",修改后dblink正常访问。
dblink建立成功后,开始执行impdp命令:
impdp aa/bb network_link=test_link DIRECTORY=DATA_PUMP_DIR tables=DM_% logfile=impdp.log remap_schema=aa:xx
但是报错:ORA-39169: 10.2.0.1.0 的本地版本不能与 11.2.0.1.0 的远程版本一起使用。这个是版本不一致引起的。没办法,本地数据库10g不好使,找了另外一台11g的数据库后执行导入命令正常。