ORACLE中CONNECT和RESOURCE角色丢失处理

最近遇到比较奇怪的问题,数据库版本11GR2(11.2.0.4),给用户授权时遇到CONNECT和RESOURCE角色不存在问题,以下为具体处理过程:

1:首先确认角色是否存在(若不存在,创建相关角色):

select * from dba_roles where role in ('RESOURCE','CONNECT');

 --以上查询得知,角色确实不存在,既然不存在的话,那么我们接下来创建这2个默认角色,如下:

CREATE ROLE "CONNECT"  NOT IDENTIFIED;

CREATE ROLE "RESOURCE"  NOT IDENTIFIED;

2:确认以上默认角色包括哪些具体权限,并赋权给上述角色:

CONNECT

Provides the CREATE SESSION system privilege.

RESOURCE

Provides the following system privileges: CREATE CLUSTERCREATE INDEXTYPECREATE OPERATORCREATE PROCEDURECREATE SEQUENCECREATE TABLECREATE TRIGGERCREATE TYPE.

拥有这两个角色的用户都拥有什么权限呢?可以使用如下语句查看一下:

SELECT *
  FROM DBA_SYS_PRIVS
 WHERE GRANTEE IN ('RESOURCE', 'CONNECT')
 ORDER BY 1;

--上图中可以看到,正常情况下数据库默认角色CONNECT和RESOURCE存在且具有上述权限。

下面,我们来根据创建的角色分别来授予默认权限:

--赋权给新创建的CONNECT角色:

grant CREATE SESSION to CONNECT;

--赋权给新创建的RESOURCE角色:

grant CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER, CREATE TYPE to RESOURCE;

至此,数据库中这2个默认角色就都创建好了,并赋予了权限:

下面正常创建用户及授权正常...

create user test identified by "test123" default tablespace USERS temporary tablespace TEMP;

grant CONNECT,RESOURCE to TEST;

GRANT CREATE VIEW TO TEST;

另外:可以通过以下方法查询用户拥有的权限

方法一:PL/SQL,右键点击左侧导航栏中该用户(TEST)"查看"按钮:

方法二:SQL查询语句

--查询对象权限:
SELECT * FROM dba_tab_privs a WHERE a.grantee = '用户名';
--查询角色权限:
SELECT * FROM dba_role_privs a WHERE a.GRANTEE = '用户名';
--查询系统权限:
SELECT * FROM dba_sys_privs a WHERE a.GRANTEE = '用户名';

--查看角色对应权限语句:

SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE LIKE 'CONNECT'; --查询connect角色的权限


SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE LIKE 'RESOURCE'; --查询 RESOURCE角色的权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值