create database link中的identified by values

selectshen發表於2015-08-01
問題描述:
客戶資料庫11.2.0.4(db01)要建一個db link去連線遠端的資料庫10.2.0.4(db02),用於連線遠端資料庫上的中間使用者的密碼忘記了,而且中間使用者的密碼
又不方便改,因為還有其它資料庫10.2.0.4(db03)在用這個使用者做db link連線。

解決方法:
透過在db03上找到link$表中db link 的加密密碼,然後利用這個加密密碼透過identified by values去create database link.

具體操作:
----db03
--查詢加密密碼
select passwordx from link$
where userid='LNK_TEST' and host='db02';
/*
PASSWORDX
0541AE17AAFEB5CCD8D125C3D4F8B710A707EAAB638A30FD87
*/

----db01
--透過在db03上查詢出來的加密密碼,建db link
create public database link lnk_db02
  connect to LNK_TEST identified by values '0541AE17AAFEB5CCD8D125C3D4F8B710A707EAAB638A30FD87'
  using 'db02';
--驗證db link是否可用
select * from dual@lnk_db02;
/*
DUMMY
X
*/

備註:
1.在10g資料庫上透過明碼建的db link產生的加密密碼在10g/11g上都是可用的;11g資料庫上透過明碼建的dblink產生的加密密碼在10g/11g上都是不可用的,會報ora-02153:無效的values口令字串。
2.相同的明碼,會產生不同的加密密碼,這些加密密碼都是可用的。
3.透過加密密碼建db link時,加密密碼一定不能錯,不然在呼叫時會觸發ORA-00600: [Kzdlk_zt2 Err] While Selecting Using a Database Link [ID 456320.1]
4.個人不建議透過identified by values去建db link,上面的問題如果能再建一箇中間使用者,把相應的許可權複製過來是最好的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-1758545/,如需轉載,請註明出處,否則將追究法律責任。

相關文章