Dblink创建后字典表dba_db_link中只保存创建连接时使用用户名,密码不保存,实际上在sys用户下的另一张字典表link$中保存了明文的用户密码,如果出现密码丢失或者不确认的情况,可以从中获取明文密码。
测试代码如下:
SQL> conn / as sysdba
Connected.
创建测试用户并授予权限
SQL> create user ab identified by ab default tablespace btest;
User created.
SQL> grant connect,resource to ab;
Grant succeeded.
创建数据库连接
SQL> conn an/an
Connected.
SQL> create database link link_ab connect to ab identified by ab using 'db10';
Database link created.
SQL> set linesize 200
SQL> set wrap off
测试连接可用性
SQL> select * from dual@link_ab;
D
-
X
Dba_db_links中记录连接owner,连接名,连接远程库试用的用户,连接标识以及创建时间
SQL> select * from dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- ---------- ---------- ---------- --------------
AN LINK_AB AB db10 20-8月 -10
Link$是sys用户下表,需要有权限才可以查看
SQL> select * from link$;
select * from link$
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> conn / as sysdba
Connected.
SQL> select * from link$;
OWNER# NAME CTIME HOST USERID PASSWORD FLAG
------ ---------- -------------- ---------- ---------- ---------- ----------
58 LINK_AB 20-8月 -10 db10 AB AB 0
查询到的userid、password就是远程数据库连接的用户名和密码,都是明文的。