5

有没有简单的方法可以通过命令行列出我系统中所有可用的 tnsnames?

每当我需要查找 tnsname 时,我只需使用tnsping命令搜索tnsnames.ora文件,然后在文本编辑器中打开它即可进行扫描。然后随后运行tnsping [tnsname]以检查连接健康状况。我在想是否有像tnslist 或 tns -l这样的简单命令来列出所有 tnsname,但我找不到。

4

2 回答 2

2

假设您有这样的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 :

[oracle@mydb12c~ ] vi .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

[oracle@mydb12c~ ] lstns

  DB01 
  DB02
于 2017-09-27T07:41:40.137 回答
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). 


[root@elbrus-1 ~]#  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
[root@elbrus-1 ~]#
于 2017-09-27T04:14:45.507 回答