转载

赋予普通用户DBA权限,default role 显示“NO”

我2014年在医院his项目,给门诊医生站创建用户,遇到一奇怪问题,赋予该用户dba角色,然后没有dba权限,后来发现在该用户下dba不是default role 很奇怪!
后来有一个小师弟也遇到这个问题,现在把当时的文档发表给大伙共享

数据库版本
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

创建用户mzys,授予角色connect、resource、dba(其实一个dba角色就够了)


登陆mzys发现当前会话没有dba角色
SQL> conn mzys/mzys
Connected.
SQL> select * from session_roles;


ROLE
------------------------------
CONNECT
RESOURCE

查询该用户是拥有dba角色,担不是default role
SQL> select * from user_role_privs;
USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
MZYS                            CONNECT                        NO  YES NO
MZYS                            DBA                            NO  NO NO
MZYS                            RESOURCE                       NO  YES NO

很奇怪,门诊医生站用户MZYS自创建后没有指定过default role,为什么赋予dba角色时,默认不是default role。
解决:
1、在当前用户会话下,临时解决
SQL> set role connect,resource,dba;


Role set.

查询session_roles
SQL> select * from session_roles;


ROLE
------------------------------
CONNECT
RESOURCE
DBA
SELECT_CATALOG_ROLE
HS_ADMIN_SELECT_ROLE
EXECUTE_CATALOG_ROLE
HS_ADMIN_EXECUTE_ROLE
DELETE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
DATAPUMP_EXP_FULL_DATABASE


ROLE
------------------------------
DATAPUMP_IMP_FULL_DATABASE
GATHER_SYSTEM_STATISTICS
SCHEDULER_ADMIN
WM_ADMIN_ROLE
JAVA_ADMIN
JAVA_DEPLOY
XDBADMIN
XDB_SET_INVOKER
OLAP_XS_ADMIN
OLAP_DBA


21 rows selected.
但是查询user_role_privs
SQL> select * from user_role_privs;


USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
MZYS                            CONNECT                        NO  YES NO
MZYS                            DBA                            NO  NO NO
MZYS                            RESOURCE                       NO  YES NO

2、永久解决
SQL> conn / as sysdba
Connected.
SQL> alter user mzys default role all;
User altered.

问题解决!!
正文到此结束
Loading...