我有一个(可能很简单)关于如何通过使用 sqlplus 查询已安装的备用数据库来查找 Oracle 19c 主数据库主机的查询。我可以获得如下主要名称:
select PRIMARY_DB_UNIQUE_NAME from v$database;
但是我怎样才能以类似的方式找到主节点的主机呢?
非常感谢。
正如下面与 sarat 的讨论中提到的,基于他的建议的以下 cmd 有效:
select distinct(machine) from v$session where username='PUBLIC' and osuser='oracle' and machine <> (select PRIMARY_DB_UNIQUE_NAME from v$database);
但我需要在输出中添加一个前导标题,以便之后从假脱机文件中获取结果。
select 'title'||distinct(machine) from v$session where username='PUBLIC' and osuser='oracle' and machine <> (select PRIMARY_DB_UNIQUE_NAME from v$database)
这失败了吗?有什么办法吗?谢谢。
如果您的 tns 名称解析设置正确,您可以使用 dbms_tns.resolve_tnsname 来获取 PRIMARY_DB_UNIQUE_NAME 的 tns 别名的描述。
有关使用详情,请参阅https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_TNS.html#GUID-C9A939E2-8710-43BF-952C-B49D155C8163。
您可能想使用正则表达式从地址列表中获取主机部分。
考虑此事 …。这在已安装的数据库中使用 sql 不起作用,但使用 tnsping 它应该可以工作。
从 v$session 中选择不同的机器,其中 username='PUBLIC' 和 osuser='oracle';
您可以找到主数据库服务器的主机名。