2017-09-27 42 views
2

有沒有任何簡單的方法通過命令行列出我的系統中所有可用的tnsnames?如何列出tnsnames

每當我需要找出一個TNSNAME,我只是單純的搜索的tnsnames.ora文件,TNSPING命令,然後在文本編輯器中打開它掃描通過。然後運行tnsping [tnsname]檢查連接健康狀況。我在想如果有任何簡單的命令,如tnslist或tns -l列出所有tnsnames,但我找不到這樣的。

+0

保存所有的SID,在一個單一的文件一次,並且循環通過這個文件服務,並在循環做用tnsping 。 –

回答

1

假設你有這樣的tnsnames.ora文件:

DB01 = 
    (DESCRIPTION = 
     (FAILOVER=off) 
     (LOAD_BALANCE=off) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521)) 
     (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = mydb1) 
     ) 
    ) 

DB02 = 
    (DESCRIPTION = 
     (FAILOVER=off) 
     (LOAD_BALANCE=off) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = db02-vip)(PORT = 1531)) 
     (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = mydb2) 
     ) 
    ) 

編輯您的.profile或.bash_profile中是這樣的:

甲骨文@ mydb12c〜]六.bash_profile中

ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1; export ORACLE_HOME 
... 
alias lstns="sed -n '/DESCR/{x;p;d;}; x' $ORACLE_HOME/network/admin/tnsnames.ora | sed "s/=/${s}/"" 
echo 'lstns : tnsnames.ora listing' 

[oracle @ mydb12c〜]。 .bash_profile中

lstns : tnsnames.ora listing 

甲骨文@ mydb12c〜] lstns

DB01 
    DB02 
+0

非常感謝。我們在Windows中也會有類似的.bat文件,並將其放入系統路徑中。所以,我們將無縫地從終端運行命令。我最初認爲與Oracle有一個捆綁。 – Damith

+0

@不客氣。 –

0

沒有tnsnames.ora文件列表命令。但是有幾個選項可以放置tnsnames.ora文件。您只能使用find命令 oracle客戶端搜索tnsnames.ora文件的優先級。

1) current directory (Linux, Windows) 
    2) $TNS_ADMIN (Linux, Windows environment variable, Windows registry key) 
    3) $ORACLE_HOME/network/admin (Linux, Windows) 
    4) /etc (Linux) 
    5) %USERPROFILE%/AppData/Oracle (Windows 7). 


[[email protected] ~]# find/-name tnsnames.ora 
/opt/ora/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora 
/opt/ora/app/oracle/product/11.2.0/dbhome_1/network/admin/samples/tnsnames.ora 
/home/oracle/diman/tnsnames.ora 
[[email protected] ~]# 
+1

那不是他的問題 – Ravi

+0

@Dmitry Demin,謝謝你的回覆,但是我想知道的是如何列出tnsnames。 – Damith

+0

沒有tnsnames.ora文件列表命令。 但有幾個選項可以放置tnsnames.ora文件。您只能使用find命令。 –