是否可以将TNS声明重定向到另一个声明?
对于我当前的项目,在某些情况下,我需要在服务器之间“翻转”。为此,我使用了3个TNS条目。
一个用于保存我的应用程序将连接到的TNS名称:
# application access to DB
DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SAMPLENAME)
)
)为了让我自己“手动”连接到任何一个数据库,我又使用了两个TNS条目:
# Central_Server "Manual"
Central_Server =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SAMPLENAME)
)
)
# Local "Manual"
Local =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SAMPLENAME)
)
)与其一直对DB的TNS条目进行调整,还有没有可能这样做呢?:
DB = Local
or
DB = Central_Server由于部署策略的原因,我不希望在我的应用程序中直接实现这个逻辑。
谢谢:)
发布于 2010-01-14 18:28:44
在给出了所有的建议之后,我发现最简单的方法是继续使用我的手工“完全”重写tnsnames.ora条目。
发布于 2009-12-03 21:25:00
您可以在tnsnames.ora文件中配置多个地址。从您的描述中并不清楚您这样做是为了故障转移还是负载平衡。The Oracle documentation为这应该是什么样子提供了一个很好的参考。
发布于 2009-12-04 08:14:08
在我看来,你必须在某个地方“调整”一些东西。如果您在windows上通过sqlplus连接,请尝试:
set local=<Your TNS Alias Here>
sqlplus userid在*nix上,尝试:
TWO_TASK=<your TNS Alias here>; export TWO_TASK
sqlplus userid对于其他客户端,这可能会更棘手,这取决于它们是否遵守上述环境变量。当然,如果您提供的是连接字符串,则可以简单地使用以下连接字符串:
userid@$TWO_TASK或
userid@%local%https://stackoverflow.com/questions/1838913
复制相似问题