赋予普通用户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.
问题解决!!
正文到此结束