我正在考虑创建一个使用C#构建的自定义工具,该工具将能够连接到已连接到数据库的当前应用程序会话。
我想我的自定义工具将能够接受我的其他应用程序主动使用的会话ID。
然后,当我的自定义工具连接到该会话ID时,我将能够跟踪该应用程序上该会话ID正在执行的任何SQL命令。
关于如何实现这一目标的任何想法?
谢谢,
Hatjhie
答案 0 :(得分:0)
您的监控应用程序需要以具有Oracle动态视图访问权限的用户身份进行连接。 Find out more。
要监控会话,您需要v$session
。要查找会话,您需要知道数据库USERNAME(或者可能是外部OSUSER或MACHINE)。会话记录将为您提供SQL_ID,您可以使用它来查询v$sqltext
和v$sqltext_with_newlines
等视图。
默认情况下,用户无权访问V $视图。 DBA可以授予角色select_catalog_role
,允许您读取所有数据字典视图,而不仅仅是V $视图。这非常强大,通常最好在特定视图上授予select。请注意,视图以下划线命名,例如v_$session
。