1

如何使用控制台上的 sql*plus 在 oracle 10g 上显示数据库的特定用户名?我一直在寻找下表中的链接列v$database, all_users, dba_users, v$session

4

3 回答 3

1

要查询数据库中定义的用户,可以使用all_users视图。例如,要选择所有以aor开头的用户A,请使用

SELECT * 
FROM all_users 
WHERE NLS_UPPER(username) LIKE 'A%';

要查询特定用户的当前会话,您可以使用v$session视图。例如,要选择为以aor开头的用户建立的所有当前会话A,请使用

SELECT * 
FROM v$session
WHERE NLS_UPPER(username) LIKE 'A%';
于 2012-12-04T16:06:49.667 回答
0
select username from all_users;

or

select username from all_users where ...;

有 3 组不同的视图 ALL_、DBA_ 和 USER_。

ALL_views 显示当前用户可以访问的所有信息,即它可以查看用户有权访问的所有shcemas,DBA_views 显示整个数据库的信息,并且仅供管理员使用。然后 USER_ 视图显示来自当前用户模式的信息。

听起来你需要 ALL_USERS

于 2012-12-04T16:09:09.020 回答
0

要链接 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;

于 2012-12-05T04:04:04.743 回答