【发布时间】:2012-12-09 06:40:30
【问题描述】:
如何使用控制台上的 sql*plus 在 oracle 10g 上显示数据库的特定用户名?
我一直在寻找下表v$database、all_users、dba_users、v$session 上的链接列。
【问题讨论】:
-
您要列出当前连接的用户,还是数据库中定义的所有用户?
如何使用控制台上的 sql*plus 在 oracle 10g 上显示数据库的特定用户名?
我一直在寻找下表v$database、all_users、dba_users、v$session 上的链接列。
【问题讨论】:
要查询数据库中定义的用户,您可以使用all_users 视图。例如,要选择所有以a 或A 开头的用户,请使用
SELECT *
FROM all_users
WHERE NLS_UPPER(username) LIKE 'A%';
要查询特定用户的当前会话,您可以使用v$session 视图。例如,要选择为以a 或A 开头的用户建立的所有当前会话,请使用
SELECT *
FROM v$session
WHERE NLS_UPPER(username) LIKE 'A%';
【讨论】:
要链接 V$SESSION 和 DBA_USERS,请使用两个视图中的“Usernanme”列。它将返回有关用户会话的详细信息。
选择 D.USERNAME、D.USER_ID、V.SID、V.STATUS 从 v$session v, dba_users d 其中 V.USERNAME=D.USERNAME;
如果您还需要有关为后台进程创建的会话的详细信息,请通过 V$SESSION 中的“User#”和 DBA_USERS 中的“User_ID”加入。
选择 D.USERNAME、D.USER_ID、V.SID、V.STATUS 从 v$session v, dba_users d 其中 V.USER#=D.USER_ID;
【讨论】:
select username from all_users;
or
select username from all_users where ...;
有 3 组不同的视图 ALL_、DBA_ 和 USER_。
ALL_views 显示当前用户可以访问的所有信息,即它可以查看用户有权访问的所有 shcemas,DBA_views 显示整个数据库的信息,并且仅供管理员使用。然后 USER_ 从当前用户的架构中查看显示信息。
听起来你需要 ALL_USERS
【讨论】: