是否有一种方法可以定义多个tnsnames.ora位置?我们目前使用的是像TNS_ADMIN=\\192.168.1.100\infosys\oracle\tnsnames这样的服务器路径,但本周的情况是,该服务器必须离线几天。
我尝试过堆叠类似于路径变量的位置,但它不起作用:
> set TNS_ADMIN=z:\Common\oracle;\\192.168.1.100\infosys\oracle\tnsnames
> mctnsping ora-server
McTnsping Utility by Michel Cadot: Version 2018.08.17 on 18-OCT-2018 11:16:33
Copyright (c) Michel Cadot, 2016-2018. All rights reserved.
*** TNS-03514: Failed to find tnsnames.ora file单一地点是可以的:
> set TNS_ADMIN=Z:\Common\oracle
> mctnsping ora-server
Used parameter files:
Z:\Common\oracle\tnsnames.ora
...snip...
Attempting to contact ora-server:1521
OK (201 msec)如何在不接触每个客户端来更改TNS_ADMIN的情况下拥有一个备用位置?
发布于 2018-10-18 19:43:20
[oracle@o71 ~]$ echo "TNS1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=o71.balazs.vm)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TNS1)))" > ~/tnsnames1.ora
[oracle@o71 ~]$ echo "TNS1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=o72.balazs.vm)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TNS2)))" > ~/tnsnames2.ora
[oracle@o71 ~]$ cat tnsnames1.ora
TNS1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=o71.balazs.vm)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TNS1)))
[oracle@o71 ~]$ cat tnsnames2.ora
TNS1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=o72.balazs.vm)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TNS2)))在使其中一个文件不可访问之后,我更改了HOST和SERVICE_NAME值,以演示名称解析是如何工作的。
现在将它们包含在IFILE中:
[oracle@o71 ~]$ echo -e "IFILE=/home/oracle/tnsnames1.ora\nIFILE=/home/oracle/tnsnames2.ora" > ~/tnsnames.ora
[oracle@o71 ~]$ cat ~/tnsnames.ora
IFILE=/home/oracle/tnsnames1.ora
IFILE=/home/oracle/tnsnames2.ora
[oracle@o71 ~]$ export TNS_ADMIN=/home/oracle测试:
[oracle@o71 ~]$ tnsping tns1
TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 18-OCT-2018 21:37:00
Copyright (c) 1997, 2018, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=o72.balazs.vm)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TNS2)))
OK (10 msec)tnsping发现最后一次出现相同的TNS别名。现在,使第二个文件不可访问:
[oracle@o71 ~]$ mv /home/oracle/tnsnames2.ora /home/oracle/tnsnames2.ora.corrupt再次测试:
[oracle@o71 ~]$ tnsping tns1
TNS Ping Utility for Linux: Version 18.0.0.0.0 - Production on 18-OCT-2018 21:37:19
Copyright (c) 1997, 2018, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=o71.balazs.vm)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TNS1)))
OK (0 msec)TNS解析仍然有效,但从第一个文件(HOST、SERVICE_NAME)开始。
使用此方法,您基本上可以使用IFILE参数枚举包含TNS别名的多个文件,该参数不是为此而设计的,但它是有意义的。
https://dba.stackexchange.com/questions/220504
复制相似问题