我想将dblink从一个数据库迁移到另一个数据库,发现在源端直接用pl/sql developer查看DBLINK的创建sql,sql里里不包含用户的密码,所以在目标端创建失败。
这里用这种方法导出。
1.在源端查看LINK$表,导出insert语句
在源端用pl/sql developer执行如下查询sql,并将查询的结果导出成insert语句(< Export Query Results>-->sql file,另存为)
SELECT owner#, name,host, userid, flag,passwordx FROM LINK$;
2.在目标端执行insert语句
注意:执行完成后在每个节点都测试一下dblink是否建成功,如果出现一个节点报未找到远程数据连接说明,另一个节点报dblink lock或者其它,即两个节点测试dblink结果不一致 ,需要在报未找到远程数据连接说明的节点清理数据库缓存,执行:
SQL>alter system flush shared_pool;
SQL>alter system flush buffer_cache;
3.验证
select 1 from dual@link名称
--发现按这种方式导dblink,link$里的owner#和dba_users里的user_id对应不上(用户名称一样,但是userid发生变化),导致dblink无法使用,需要在新环境修改link$里的owner#为dba_users里查出来的user_id。