从Oracle PL/SQL获取原始操作系统用户名(模拟之前)

从Oracle PL/SQL获取原始操作系统用户名(模拟之前),sql,plsql,oracle11g,impersonation,windows2012,Sql,Plsql,Oracle11g,Impersonation,Windows2012,在Windows Server 2012中,我们使用模拟(更改上下文) 模拟之前,我的操作系统用户是“OriginalUser”,模拟之后,我的操作系统用户是“ImpersonatedUser” 要获取模拟操作系统用户“ImpersonatedUser”,我可以在Oracle SQL和PL/SQL中使用以下命令: select sys_context( 'userenv','os_user') from dual; 我们希望通过触发器将操作系统用户“OriginalUser”记录到数据库中

在Windows Server 2012中,我们使用模拟(更改上下文)

模拟之前,我的操作系统用户是“OriginalUser”,模拟之后,我的操作系统用户是“ImpersonatedUser”

要获取模拟操作系统用户“ImpersonatedUser”,我可以在Oracle SQL和PL/SQL中使用以下命令:

select sys_context( 'userenv','os_user') from dual;

我们希望通过触发器将操作系统用户“OriginalUser”记录到数据库中


如何在Oracle PL/SQL中选择操作系统用户“OriginalUser”(而不是“ImpersonatedUser”)。

操作系统用户(“操作系统用户”)是完全不可靠的,因为它是由客户端提供的,可以通过连接属性轻松更改。我想你想要的是
session\u user
current\u user
——虽然我不确定你在谈论“模拟”时指的是哪一个功能——你到底是如何模拟另一个Oracle用户的?我有点不清楚。模拟的是操作系统用户,而不是Oracle用户。我想通过PL/SQL获取原始操作系统用户名。操作系统用户信息是客户端提供的,客户端可以为此发送任何信息。因此,您无法可靠地获取“当前”操作系统或“模拟”操作系统。
OS\u USER
将为您提供“当前”操作系统用户,即模拟用户<代码>会话用户将为您提供Oracle用户。抱歉,没有办法获得“原始”操作系统用户。