您的位置:首页 > 数据库 > Oracle

Oracle管理中常用的SQL语句(用户信息)

2009-02-23 14:19 567 查看
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2006/06/13/oracle-management-sql/以及本声明。

Oracle管理中常用的SQL语句。

用户信息
确认用户角色
确认用户的系统权限
确认用户的对象权限

用户信息

DBA_USERS表中的主要列如下。

列名说明
USERNAME用户名
USER_ID用户的唯一id
PASSWORD加密后的密码
ACCOUNT_STATUS用户状态(正常、锁定、密码过期等)
DEFAULT_TABLESPACE默认表空间
TEMPORARY_TABLESPACE排序时使用的临时表空间
CREATED该用户的创建时间
使用下面的SQL语句可以确认用户信息。
SELECT username
, user_id
, password
, account_status
, default_tablespace
, temporary_tablespace
, created
FROM dba_users

推荐格式如下:
col username form a20
col default_tablespace form a20
col temporary_tablespace form a20
col password form a20
col account_status form a30

用以下的SQL语句可以查找系统中默认密码的用户,以检查安全隐患。
SELECT username "User(s) with Default Password!"
FROM dba_users
WHERE password IN (
'E066D214D5421CCC', -- dbsnmp
'24ABAB8B06281B4C', -- ctxsys
'72979A94BAD2AF80', -- mdsys
'C252E8FA117AF049', -- odm
'A7A32CD03D3CE8D5', -- odm_mtr
'88A2B2C183431F00', -- ordplugins
'7EFA02EC7EA6B86F', -- ordsys
'4A3BA55E08595C81', -- outln
'F894844C34402B67', -- scott
'3F9FBD883D787341', -- wk_proxy
'79DF7A1BD138CF11', -- wk_sys
'7C9BA362F8314299', -- wmsys
'88D8364765FCE6AF', -- xdb
'F9DA8977092B7B81', -- tracesvr
'9300C0977D7DC75E', -- oas_public
'A97282CE3D94E29E', -- websys
'AC9700FD3F1410EB', -- lbacsys
'E7B5D92911C831E1', -- rman
'AC98877DE1297365', -- perfstat
'66F4EF5650C20355', -- exfsys
'84B8CBCA4D477FA3', -- si_informtn_schema
'D4C5016086B2DC6A', -- sys
'D4DF7931AB130E37'  -- system
)

确认用户角色

DBA_ROLE_PRIVS表中的主要列如下。

列名说明
GRANTEE接受该角色的用户名或角色名
GRANTED_ROLE赋予用户或角色的角色名
ADMIN_OPTION赋予时是否带有ADMIN OPTION(YES/NO)
DEFAULT_ROLE是否为默认角色
用下面的SQL语句可以确认赋予用户SCOTT的角色。
SELECT granted_role
, admin_option
, default_role
FROM dba_role_privs
WHERE grantee='SCOTT'

确认用户的系统权限

DBA_SYS_PRIVS表中的主要列如下。

列名说明
GRANTEE接受权限的用户名或角色名
PRIVILEGE系统权限名
ADMIN_OPTION赋予时是否带有ADMIN OPTION(YES/NO)
使用下面的SQL语句显示某个用户的系统权限。
SELECT privilege
, admin_option
FROM dba_sys_privs
WHERE grantee='SCOTT'

但是,仅通过DBA_SYS_PRIVS表无法看到SYSDBA和SYSOPER权限的赋予情况。可以使用下面的SQL语句。下面的SQL语句确认SYS用户的权限。
SELECT privilege
, admin_option
FROM dba_sys_privs
WHERE grantee='SYS'
UNION
SELECT DECODE(sysdba, 'TRUE', 'SYSDBA', NULL)
, 'YES'
FROM v$pwfile_users
WHERE username='SYS'
AND sysdba='TRUE'
UNION
SELECT DECODE(sysoper, 'TRUE', 'SYSOPER', NULL)
, 'YES'
FROM v$pwfile_users
WHERE username='SYS'
AND sysoper='TRUE'

确认用户的对象权限

DBA_TAB_PRIVS表的主要列如下。

列名说明
GRANTEE接受该权限的用户名
OWNER对象的拥有者
TABLE_NAME对象名
GRANTOR赋予权限的用户
PRIVILEGE权限名
GRANTABLE赋予该权限时是否带有GRANT OPTION
HIERARCHY赋予该权限时是否带有HIERARCHY OPTION
使用下面的SQL语句可以查看用户的对象权限。
SELECT privilege priv
, owner||'.'||table_name table_name
, grantee
, grantable
FROM dba_tab_privs
WHERE owner='SCOTT'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: