處理tns不存在

linyu2012發表於2013-02-16

       新年後第一天,就接到同事的一個郵件,問題是在抽取資料時提示TNS不存在,在2月7號還可以,之後就連不上了,請求幫忙解決。剛過來上班頭一蒙,如何查起呢,慢慢地就思路整出來了,一步一步解決。

    首先從他郵件上的那個使用者A1入手,在A庫上去提取B庫上的資料,但因沒有他提供的使用者帳號密碼,只能從另外一個使用者A2入手,查詢下all_db_links表中db_link去找出host,再到host上去檢視是否TNS有開啟來。

A庫的資料庫版本是10.2.0.3.0

B庫的資料庫版本是10.2.0.4.0

  1、在A庫上,用另一個使用者A2上去檢視下,發現沒有郵件上提供的db_link,原因是提供的db_link是A1私有的的連結,不允許別的使用者檢視。迅速進入A庫主機上用SYS使用者進行檢視,還是發現沒該db_link鏈,應該用dba_db_links就可以了。

USER_DB_LINKS describes the database links owned by the current user. This view does not display the OWNER column.

ALL_DB_LINKS describes the database links accessible to the current user.

DBA_DB_LINKS describes all database links in the database.

常用習慣ALL_DB_LINKS就是所有的使用者,這是個誤區,實際上就包括當前使用者及一些定義型別為public的資料鏈。

 2、查出後,在A庫上檢視tnsping下是否能ping通?ping不通後,可發現IP地址是192.168.11.165 與B庫上的IP地址是192.168.11.168不相同,但是SID是相同的。納悶了一下,在B庫上,用lsnrctl status 命令檢視又是顯示沒有監聽程式,no listener ,應該是命令後面要加檢視的例項名如lsnrctl status sid 。再查PS下,發現在2月7號早上9點多有重新載入或重啟過TNS,造成了TNS上的IP只變成了168上,用命令netstat -n | grep 1521 | more ,而在A庫上只是指向165上。實際上165與168是同一臺機器,只是一個是浮動IP。

1、listener.ora配置檔案中指定使用者名稱的問題。

2、165與168是同一臺機器,

3、將A庫上tnsnames.ora中資料庫鏈指向165更改為168就可以了。

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

相關文章