谈谈Oracle 数据库的系统权限UNLIMITED TABLESPACE

作者:赵全文 网名:guest

前日上午,开发同学反馈,应用程序在连接一套Oracle 11.2.0.4.0数据库的生产用户时,一直报“无操作表空间”的权限。于是,我赶紧连到SQLPLUS里进行查看该用户具有什么样的权限(包括系统权限、角色权限和对象权限),没有发现什么异常。大家都知道,一般在建立用户以后,都会给CONNECT和RESOURCE的角色权限。然后,我连到其它无报错的另一套Oracle 11.2.0.4.0数据库的生产用户上查看,两套数据库进行对比,发现报错的那套数据库没有“UNLIMITED TABLESPACE”的系统权限,给授予了该系统权限以后,又和开发同学联系,他说已经正常了。

鉴于以上的故障处理,下面我们来看一看,Oracle数据库里的几个角色和用户是否具有UNLIMITED TABLESPACE的系统权限?

1.查看3个角色,CONNECT、RESOURCE和DBA。

(1)查看CONNECT角色,见下图,发现这个角色只具有CREATE SESSION的系统权限。

(2)查看RESOURCE角色,见下图,发现这个角色具有8个系统权限,但是没有发现UNLIMITED TABLESPACE的系统权限。

(3)查看DBA角色,见下图,发现该角色具有的系统权限更多,我对PRIVILEGE的列进行了降序处理,以U开头的系统权限都显示在了最前面,但并没有发现UNLIMITED TABLESPACE。

2.查看2个用户,SYS和SYSTEM。

(1)查看SYS用户,见下图,发现SYS用户是具有UNLIMITED TABLESPACE的系统权限。

(2)查看SYSTEM用户,见下图,发现SYSTEM用户也具有UNLIMITED TABLESPACE的系统权限。

从上面的查看,我们可以得出如下结论,

  • 角色CONNECT、RESOURCE和DBA都不具有UNLIMITED TABLESPACE的系统权限;
  • 用户SYS和SYSTEM都具有UNLIMITED TABLESPACE的系统权限。

接下来,我们再看看,3个角色CONNECT、RESOURCE和DBA具有什么样的角色权限?

1.角色CONNECT和RESOURCE,见下图,发现没有任何的角色权限。

2.角色DBA,见下图,发现该角色具有很多的角色权限。

最后,我们在测试库创建一个表空间TEST和一个用户TEST,并设置表空间TEST为用户TEST的默认表空间,授予CONNECT和RESOURCE的角色权限,观察该用户具有什么样的系统权限?操作步骤如下,

(1)查看数据库版本,如下图,

(2)创建表空间TEST,见下图,

(3)创建用户TEST,见下图,

(4)给用户TEST授予CONNECT的角色权限,并查看该用户具有的系统权限,见下图,发现并没有什么系统权限。

(5)给用户TEST授予RESOURCE的角色权限,并查看该用户具有的系统权限,见下图,居然发现具有了UNLIMITED TABLESPACE的系统权限。

从这个操作和前面的演示可以得出,RESOURCE角色本身没有UNLIMITED TABLESPACE的系统权限,但是给普通用户授予了该角色,就使得该用户默认具有了UNLIMITED TABLESPACE的系统权限。带着这个疑问,查了一下Google,发现AskTom这个网站的回答很权威,而且很有说服力。见操作步骤,如下图,

如上,有人提问Tom Kyte大师,为什么RESOURCE角色本身没有UNLIMITED TABLESPACE的系统权限,但是给普通用户授予了RESOURCE的角色,该用户就具有了UNLIMITED TABLESPACE的系统权限呢?

大师是这样回答的,那个UNLIMITED TABLESPACE的系统权限已经被硬编码到RESOURCE角色中了,是特殊的一个权限。见下图所示,

下面还有来自印度的Haroon大师给出了评论,他是这样阐述的,在RESOURCE角色里,UNLIMITED TABLESPACE是一个隐藏的系统权限,它在Oracle 12.1.0.1的版本中已经修复了这个bug,并且在12.1.0.1中,创建的普通用户在授予RESOURCE的角色以后,默认不具有UNLIMITED TABLESPACE的系统权限,所以在撤销UNLIMITED TABLESPACE的权限时会报错,提示没有授予过该权限,见下图红色方框描述,

下面把Tom Kyte大师的工作经历show一下,以作为我继续研究Oracle的源动力和精神支柱。

(6)给用户TEST授予DBA的角色权限,查看用户具有的系统权限,再将用户的DBA角色权限撤销,再次查看用户具有的系统权限有哪些?见下图操作,

从上面两图可以得出,DBA的角色权限杀伤力很大呀,授予的时候,没什么影响,撤销的时候,就把原先的UNLIMITED TABLESPACE的系统权限悄悄的给收回了,感觉好恐怖哟!所以告诫大家,一定不要给普通用户授予DBA的角色权限,如果曾经授予过,再撤销以后,一定要给普通用户单独授予UNLIMITED TABLESPACE的系统权限或重新授予一次RESOURCE的角色权限。见下图所示,



如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:guestart的DBA学习笔记,您的支持是对我最大的鼓励!


时间: 2024-12-09 10:31:57

谈谈Oracle 数据库的系统权限UNLIMITED TABLESPACE的相关文章

谈谈Oracle数据库的关闭

之前说过了Oracle数据库的启动,今天再来说说Oracle数据库的关闭. 一.数据库关闭的三个阶段 Oracle数据库启动过程包括三个步骤: NOMOUNT -> MOUNT -> OPEN,数据库的SHUTDOWN实际也是有三个步骤:CLOSE -> DISMOUNT - > SHUTDOWN. SQL> SHUTDOWN; Database closed.Database dismounted.ORACLE instance shut down. 也可从STARTUP状

Oracle中的系统权限管理

在实际的IT项目管理中,对数据库的管理显得尤为重要,一般情况下,数据库的管理工作会有公司中的DBA人员来负责.但是,不是任何有关数据库的操作都要去联系DBA啦,万一人家不在或有其它事情不能立即处理时该怎么办呢?所以,掌握一些常用的数据库管理知识就很有必要的.求人不如求自己靠谱些. 鉴于此,我们先简单的介绍一下数据库中的权限管理吧!其它方面的知识点后面再记录!     在数据库中,我们一般讲权限划分为系统权限和对象权限.我们稍稍介绍一下它们的概念:    1.系统权限:能够正常的访问或使用数据库:

Oracle数据库用户及权限管理_超越OCP精通Oracle视频课程培训08

课程目标 Oracle视频教程,风哥本套oracle教程培训学习用户的管理/创建/删除/修改,.权限与角色的创建与管理,密码策略180天过期的处理,数据库监控与备份权限的用户等的Oracle数据库用户的日常管理与维护. 适用人群 IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 课程地址: http://edu.51cto.com/course/course_id-6472.html 课程简介 本课程介绍: Oracle视频教程,风哥本套oracle教程培训学习用户的管

Oracle常用的系统权限和对象权限介绍

alter any index 修改任意索引的权限 alter any role 修改任意角色的权限 alter any sequence 修改任意序列的权限 alter any snapshot 修改任意快照的权限 alter any table 修改任意表的权限 alter any trigger 修改任意触发器的权限 alter database 修改数据库的权限 alter procedure 修改拥有的存储过程权限 alter sequence 修改拥有的序列权限 alter sess

oracle 数据库导出 表空间查询 与 权限管理 整理

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>导入导出操作 oralce imp help=y; 查看命令使

Oracle数据库添加用户

1.临时表空间和表空间的区别 表空间:此空间是用来进行数据存储的(表.function.存储过程等),所以是实际物理存储区域. 临时表空间:主要用途是在数据库进行排序运算[如创建索引.order by及group by.distinct.union/intersect/minus/.sort-merge及join.analyze命令]. 管理索引[如创建索 引.IMP进行数据导入].访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理. 因为用途不同所以才有了区分,实际上数据库都是有

Linux安装Oracle数据库

一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [[email protected] ~]$ su root #切换到root Password: [[email protected] sonny]# groupadd oinstall #创建用户组oinstall [[email protected] sonny]# groupadd dba #创建用户组dba [[email protected] sonny]# useradd -g oinstall -g d

Centos7.6安装Oracle数据库

一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [[email protected] ~]$ su root #切换到root Password: [[email protected] sonny]# groupadd oinstall #创建用户组oinstall [[email protected] sonny]# groupadd dba #创建用户组dba [[email protected] sonny]# useradd -g oinstall -g d

谈谈Oracle基本操作(上)

当前我们市面上流行的数据库有sybase,Oracle,DB2,Mysql,sqlSever,MSQL, MariaDB 今天我们主要谈谈Oracle数据库 一:Oracle原理 1:什么是数据库:数据库管理的是硬盘中的数据,把数据打包,方便管理,数据增删改查,它的保存数据的是数据库文件;数据库一切都是表:用数据表来保存数据; 2:分类: (1)结构化数据库:保存在硬盘当中,SQL语句查询;以SQL语句模型为基础的数据库 (2)非结构化数据库:mongoDB,Redis,memecache;把数