*
9i及以前版本可通过 dba_db_links的视图原表sys,link$的password字段获取密码;
SQL:s
elect u.name,l.password/*9i版本会记录密码*/, l.name, l.userid, l.host, l.ctime,l.passwordx
from sys.lin
k$ l, sys.user$ u
where l.owner# = u.user#;
*
9i后,password 字段为空,且sys.link$多了一个passwordx(raw加密密码字段)
*
11.2.0.4以前,可通过《
SELECT to_char(dbms_metadata.get_ddl('DB_LINK','ZBTMS_STANDBY','PUBLIC')) FROM dual;》获取创建dblink语句或者11.2.0.4及以后版本方法
dbms_metadata.get_ddl
获取语句如下:
CREATE PUBLIC DATABASE LINK "
ZBTMS_STANDBY
"
CONNECT TO "USR_QUERY" IDENTIFIED BY VALUES ':1'/*比正常dblink创建语句多values关键字(values值在
sys.link$.passwordx
字段获取
)*/
USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.240.1.1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ZB_TMS)))' ;
*
11.2.0.4及以后版本,若通过
dbms_metadata.get_ddl获取语句直接执行会提示无效的values关键字;
可通过plsql developer 工具导出sys.links的insert语句再其他库中执行即可
方法1、工具-->导出表-->部分范围
![](http://img.blog.itpub.net/blog/attachment/201607/26/28602568_14695131865Ojb.png?x-oss-process=style/bb)
aa.sql文本内容如下:
![](http://img.blog.itpub.net/blog/attachment/201607/26/28602568_1469513199U38B.png?x-oss-process=style/bb)
更改aa.sql文件dblink名称name部分(更改为LOTTERY)保存并在测试环境进行导入;
SQL> SELECT count(1) count_ FROM LINK$ where name='LOTTERY';
count_
----------
导入:
SQL>
@C:\Users\Administrator\Desktop\aa.sql
PL/SQL Developer import file
Created on 2016年7月26日 by Administrator
Loading LINK$...
1 records loaded
Done.
验证:
SQL> SELECT * FROM dual@LOTTERY;
DUMMY
-----
X
SQL>
方法2、在sql窗口执行范围查询
查询:
SELECT owner#, name,host, userid, flag,passwordx FROM LINK$ where name='ZBTMS_STANDBY';
导出:
<
Export Query Results>-->sql file 另存为
C:\Users\Administrator\Desktop\aa.sql
导入:
insert into LINK$ (
OWNER#, NAME, HOST, USERID, FLAG, PASSWORDX,ctime/*补充必填项*/
)
values (
1,'LOTTERY','(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.240.1.1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ZB_TMS)))','USR_QUERY',2,
'06B39E07640DB9E1AF7609A48EB338AD8F7C078A30C75D249CE0E7D7BF4C471690A0FF15945B38185BEA41A611AC756B7FE5154F90CCBD562CA069E300025A24E342F0DE1BF56215EC52E2B6A86B4E7468EF87C7A1238D755F96BAF2CFF78918E7745CBBB'
,sysdate);
1 row inserted
验证:
SQL> SELECT * FROM dual@LOTTERY;
DUMMY
-----
X
SQL>
扩展:
select utl_raw.cast_to_varchar2('值') from dual; -->此passwordx 加密字段通过此函数转换 获取的是乱码....
utl_raw.cast_to_raw('varchar2值');--将varchar2转换为raw类型
utl_raw.cast_to_varchar2('raw值');--将raw转换为varchar2类型
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28602568/viewspace-2122564/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28602568/viewspace-2122564/