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