有没有办法连接到 Oracle 服务器的特定实例?

Is there a way to connect to a specific instance of Oracle server?

我不确定我是否使用了正确的术语,但我在登录 OEM 时注意到我的 Oracle 数据库服务器设置了三个实例,并且它似乎在我登录时随机选择了一个。是否有更新 tnsnames 以连接到特定实例或在 Toad 的新连接 window 中进行更新的方法?我希望我能以这种方式终止特定会话。

通常情况下,可以。如果您知道实例位于哪个服务器上,则可以指定该主机的 oracle 服务名称为 运行。 使用 select instance_name, host_name, logins, status from v$instance; 您可以找出当前会话位于哪个机器上的哪个实例。

您可以通过查询 gv$instance 找到其他实例。

如果您对 [g]v$ 实例没有权限,您可能想尝试 select sys_context('USERENV','INSTANCE_NAME') from dual; 但这仅适用于当前实例。

很大程度上取决于 运行 的配置。

回答我自己的问题 - 在 TNSNames 文件中,您可以像这样添加一个 INSTANCE_NAME 部分。如果没有 TNSNames 文件,我不知道该怎么做。

database =
 (DESCRIPTION =
 (SDU=32767)
   (ADDRESS = (PROTOCOL = TCP)(HOST = server.name)(PORT = 1521)(SEND_BUF_SIZE = 98304)(RECV_BUF_SIZE = 98304))
   (CONNECT_DATA =
      (SERVER = DEDICATED)
       (INSTANCE_NAME = instance_name)
      (SERVICE_NAME = service_name)
    )
 )

正如@ik_zelf 发布的那样,您可以查询您正在使用的是哪个实例:

select sys_context('USERENV','INSTANCE_NAME') from dual;