我在 OL7 下安装了一个 Oracle 数据库实例。这是一个12c2。还安装了 Oracle GI,我的数据库中有一些文件存储在 ASM 中。
我正在使用 sqlplus 连接到数据库实例和查询v$asm_diskgroup
。我ORACLE_HOME
指向我的数据库实例的主页。
当我在没有指定“@CONNECTION”的情况下进行连接(例如使用:)时sqlplus user/name
,视图v$asm_diskgroup
不会返回任何行。当我连接指定@TNSNAME(例如:)时sqlplus user/name@TNSNAME
,视图会v$asm_diskgroup
正确返回数据。
此外,当我使用 sql developer 从另一台机器连接时,v$asm_diskgroup
返回行。
为什么v$asm_diskgroup
我使用没有@CONNECTION的sqlplus,即默认登录时没有返回行?
您需要使用具有
SYSASM
系统权限的用户 ID 连接到 ASM 实例:Balaz Papp 上面的评论在解释为什么没有连接字符串的连接有效的解释中是正确的。他在下面的评论是正确的;当连接到常规 Oracle 数据库实例时,任何用户都可以被授予对视图的查询访问权限。
@BalazPapp 在他的评论中回答了这个问题。
当我用“sqlplus / ...”连接时,它似乎绕过了监听器......然后,它在其他用户下创建服务器进程(我用root调用sqlplus)。
另外,我做了另一个测试:使用 oracle 数据库实例所有者进行测试,一切正常。oracle 所有者与网格所有者在同一组中。
您需要在 ASM 中设置搜索字符串。
否则,将导致 gv$asm_diskgroup 视图为空。
明天早上有一个更清晰的头脑和一个桌面给你确切的命令,我将编辑和扩展这个答案。