Oracle 列出具有root(管理)权限的用户
我想知道在Oracle中拥有root(管理)权限的所有用户的列表。Oracle 列出具有root(管理)权限的用户,oracle,database-administration,Oracle,Database Administration,我想知道在Oracle中拥有root(管理)权限的所有用户的列表。 我希望它在脚本或C++应用程序中。首选脚本。以下是如何找到用户的权限: select lpad(' ', 2*level) || granted_role "User, his roles and privileges" from ( /* THE USERS */ select null grantee, username granted_role from
我希望它在脚本或C++应用程序中。首选脚本。以下是如何找到用户的权限:
select
lpad(' ', 2*level) || granted_role "User, his roles and privileges"
from
(
/* THE USERS */
select
null grantee,
username granted_role
from
dba_users
/* THE ROLES TO ROLES RELATIONS */
union
select
grantee,
granted_role
from
dba_role_privs
/* THE ROLES TO PRIVILEGE RELATIONS */
union
select
grantee,
privilege
from
dba_sys_privs
)
start with grantee is null
connect by grantee = prior granted_role;
这将显示哪些用户具有膨胀的权限。您可以在shell脚本中通过键入
sqlplus / as sysdba --(if you are root on the box)
spool user_privileges.txt
@whos_a_root.sql --(if that's what you call your script)
spool off
exit;
在Oracle中,“root”或“administrative”特权到底是什么意思?您希望用户被授予SYSDBA吗?或者,在较旧的Oracle版本中,有一个DBA角色,该角色拥有一组广泛的权限,用户可以执行大部分操作。它在11g中具有一组精简的功能。@client09给出的答案对于准确确定每个用户可以做什么很有价值 对我来说,Oracle中的root用户是SYSDBA帐户,默认情况下是SYS用户。任何被授予此权限的人都可以“作为SYSDBA”登录,这使该用户能够完全控制数据库。您可以通过以下选择列出授予此权限的用户:
SELECT * FROM v$pwfile_users;
有趣的是,如果我被授予SYSDBA角色,并以SYSDBA身份登录,Oracle会话中的实际用户是SYS:
SQL> create user test identified by test;
User created.
SQL> grant create session to test;
Grant succeeded.
SQL> grant sysdba to test;
Grant succeeded.
SQL> connect test/test as sysdba
Connected.
SQL> select user from dual;
USER
------------------------------
SYS
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
TEST TRUE FALSE FALSE
询问如何做某事与询问某事不同。