問題情景是這樣的:我在數據庫服務器(windows server 2008r2 ,64bit)oracle(11gr2,64bit)中通過dblink連接到另外一台服務器(hp-ux)的oracle(10g,64bit),應用系統好多年了,一直這樣用沒有出現過問題。但昨天臨近下班時大樓突然斷電(機房ups供電),第二天上午恢復通電之后發現,凡是系統中通過dblink連接遠程數據庫的,都用不起來。
什么都沒動,怎么突然就不行了呢?
我先在本地通過plsql建立dblink進行測試,發現本地沒有問題,可以查詢hp-ux的oracle中的表。首先可以排除是遠程服務器的問題。
然后我通過測試發現,只要通過我的windows server的oracle連hp-ux就有問題。因此可以鎖定是我的數據庫服務器的問題。
首先我通過任務管理器發現,cpu占用很高,於是把數據庫服務器重啟了一下,重啟后還是不行。
這時,我回到問題本身:“oracle dblink 查詢 tns:無法解析指定的連接標識符”。應該是建立dblink時,tns配置的不匹配。於是百度了一下建立dblink的sql代碼,用如下語句建立dblink,之后恢復可用。
create public database link 名稱 connect to 賬號 identified by 密碼 using '(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=10.77.137.40)(PORT=1521)) ) (CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=orcl)) )'
說明:如果賬號和密碼有特殊字符,則需要加上雙引號。