有沒有任何簡單的方法通過命令行列出我的系統中所有可用的tnsnames?如何列出tnsnames
每當我需要找出一個TNSNAME,我只是單純的搜索的tnsnames.ora文件,TNSPING命令,然後在文本編輯器中打開它掃描通過。然後運行tnsping [tnsname]檢查連接健康狀況。我在想如果有任何簡單的命令,如tnslist或tns -l列出所有tnsnames,但我找不到這樣的。
有沒有任何簡單的方法通過命令行列出我的系統中所有可用的tnsnames?如何列出tnsnames
每當我需要找出一個TNSNAME,我只是單純的搜索的tnsnames.ora文件,TNSPING命令,然後在文本編輯器中打開它掃描通過。然後運行tnsping [tnsname]檢查連接健康狀況。我在想如果有任何簡單的命令,如tnslist或tns -l列出所有tnsnames,但我找不到這樣的。
假設你有這樣的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
非常感謝。我們在Windows中也會有類似的.bat文件,並將其放入系統路徑中。所以,我們將無縫地從終端運行命令。我最初認爲與Oracle有一個捆綁。 – Damith
@不客氣。 –
沒有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] ~]#
保存所有的SID,在一個單一的文件一次,並且循環通過這個文件服務,並在循環做用tnsping 。 –