2017-09-27 23 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命令。 –