代码之家  ›  专栏  ›  技术社区  ›  Mike

TNS重定向?

  •  2
  • Mike  · 技术社区  · 16 年前

    是否可以将TNS声明重定向到另一个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
    

    谢谢:)

    5 回复  |  直到 16 年前
        1
  •  1
  •   No AI now No AI ever    16 年前

    您可以在中配置多个地址 tnsnames.ora 文件从您的描述中不清楚您这样做是为了故障转移还是负载平衡。 The Oracle documentation

        2
  •  0
  •   DCookie    16 年前

    在我看来,你必须在某个地方“调整”一些东西。如果您在windows上通过sqlplus连接,请尝试:

    set local=<Your TNS Alias Here>
    sqlplus userid
    

    TWO_TASK=<your TNS Alias here>; export TWO_TASK
    sqlplus userid
    

    对于其他客户机,这可能更复杂,这取决于他们是否遵守上述环境变量。当然,如果您提供的是连接字符串,只需将以下内容用于连接字符串:

    userid@$TWO_TASK
    

    userid@%local%
    
        3
  •  0
  •   Mike    16 年前

    在给出了所有建议之后,我发现最简单的方法是继续使用我的手册“完整”重新编写tnsnames.ora条目。

        4
  •  0
  •   David Mann    16 年前

    您是否考虑过tnsnames.ora之外的解决方案?

    第二种可能是Oracle连接管理器。它可以用作代理,并且高度可配置。您将拥有连接管理器实例的单个TNSNAMES入口点。然后,当您想要切换时,在连接管理器配置中进行更改,将传入端口指向新的传出服务器,然后将更改付诸实施。

        5
  •  -1
  •   Gary Myers    16 年前

    根据环境的不同,可以使用ORACLE_SID环境变量。

    SQLPLUS fred/flintstone (不使用@来明确标识数据库)将连接到ORACLE_SID中指定的数据库。

    推荐文章