ORA-01536: space quota exceeded for tablespace案例

最近在做数据治理的过程中,回收了部分账号的权限,因为角色RESOURCE里拥有CREATE TABLE的权限,所以我想回收RESOURCE角色。例如,对于TEST账号,收回其创建表的权限,就收回了授予其的RESOURCE的角色,结果不到几小时,SUPPORT人员就反馈这个账号遇到了ORA-01536错误。开始还有点懵,后面梳理清楚后,才感慨自己踩了一个大坑。下面简单的重新构造、模拟这样的一个案例。

SQL> select * from v$version;

BANNER
TEST                           UNLIMITED TABLESPACE                     NO

SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='TEST';

GRANTEE                        GRANTED_ROLE                   ADM DEF
RESOURCE                       CREATE TRIGGER                           NO
RESOURCE                       CREATE SEQUENCE                          NO
RESOURCE                       CREATE TYPE                              NO
RESOURCE                       CREATE PROCEDURE                         NO
RESOURCE                       CREATE CLUSTER                           NO
RESOURCE                       CREATE OPERATOR                          NO
RESOURCE                       CREATE INDEXTYPE                         NO
RESOURCE                       CREATE TABLE                             NO

8 rows selected.

用账号TEST登录数据库,创建了一个test表

然后收回账号TEST的RESOURCE角色,如下所示:

然后此时TEST做DML操作就会报ORA-01536错误,如下

那么为什么出现这种情况呢? 其实刚开始我也有点懵,检查表空间发现表空间正常,检查RESOURCE角色,发现里面没有关于表空间的配额限制。怎么回收RESOURCE角色,就整出这么一档子事呢?那么到底是怎么一回事呢,直到我看到Doc ID 465737.1才豁然开朗。

其实细心的人应该也有所发现(上面截图),如果您授予或撤销用户的 RESOURCE 或 DBA 角色,ORACLE会隐式授予或撤销该用户的 UNLIMITED TABLESPACE 系统权限。Doc ID 465737.1中介绍,其实当角色在Oracle 7.0 中首次引入时,RESOURCE 和 DBA 的权限从旧的Oracle V6中迁移到新的角色中。 但是由于不允许为 RESOURCE 和 DBA 角色授予 UNLIMITED TABLESPACE权限,为了保持与Oracle V6版本的向后兼容性,解析器会自动将语句转换为”grant resource to abc “自动变为”grant resource,unlimited tablespace to abc “并且将”revoke resource from abc “自动变为”revoke resource, unlimited tablespace from abc “。 授予和撤销 DBA 角色时也是如此。 也就是说UNLIMITED TABLESPACE的系统权限已经被硬编码到RESOURCE角色。而我们创建用户时,没有额外授予用户关于表空间使用配额。所以一旦系统权限UNLIMITED TABLESPACE被收回,就出现问题了。

解决这个问题也比较简单,设置账号使用表空间的配额限制或不限制用户使用表空间,如下所示

ORA-01536 After Revoking DBA Role (Doc ID 465737.1)

To Bottom

In this Document

Symptoms

Cause

Solution

References

Oracle Database – Enterprise Edition – Version 8.1.7.4 to 11.2.0.4 [Release 8.1.7 to 11.2]
Information in this document applies to any platform.

ORA-01536: space quota exceeded for tablespace ‘

SQL> conn /as sysdba
Connected.

SQL> create user testrights identified by testos;
User created.

SQL> grant connect, resource to testrights;
Grant succeeded.

SQL> connect testrights/testos;
Connected.

SQL> CREATE TABLE “TESTRIGHTS”.”TESTTAB” ( “TESTFIELD” VARCHAR2(200) NOT NULL
, CONSTRAINT “TESTPK” PRIMARY KEY (“TESTFIELD”) VALIDATE ) TABLESPACE “USERS” STORAGE ( INITIAL 64M) ;
Table created.

SQL> conn /as sysdba
Connected.

SQL> grant dba to testrights;
Grant succeeded.

SQL> revoke dba from testrights;
Revoke succeeded.

SQL> show user
USER is “SYS”
SQL> drop table testrights.testtab;
Table dropped.

SQL> conn testrights/testos;
Connected.

SQL> CREATE TABLE “TESTRIGHTS”.”TESTTAB” ( “TESTFIELD” VARCHAR2(200) NOT NULL
, CONSTRAINT “TESTPK” PRIMARY KEY (“TESTFIELD”) VALIDATE ) TABLESPACE “USERS” STORAGE ( INITIAL 64M) ;

CREATE TABLE “TESTRIGHTS”.”TESTTAB” ( “TESTFIELD” VARCHAR2(200) NOT NULL ,
CONSTRAINT “TESTPK” PRIMARY KEY (“TESTFIELD”) VALIDATE ) TABLESPACE “USERS”
STORAGE ( INITIAL 64M)
*
ERROR at line 1:
ORA-1536: space quota exceeded for tablespace ‘USERS’

SQL> conn /as sysdba
Connected.

SQL> grant connect, resource to testrights;
Grant succeeded.

SQL> conn testrights/testos;
Connected.

SQL>
SQL> CREATE TABLE “TESTRIGHTS”.”TESTTAB” ( “TESTFIELD” VARCHAR2(200) NOT NULL , CONSTRAINT “TESTPK” PRIMARY KEY (“TESTFIELD”) VALIDATE ) TABLESPACE “USERS”
STORAGE ( INITIAL 64M) ;

Table created.

This issue has been discussed in bug 6494010.

The behavior seen in the above example is expected and not a bug

When roles were first introduced into Oracle in 7.0, the old Oracle V6 privileges of RESOURCE and DBA were migrated to use the new role functionality. But because the RESOURCE and DBA roles are not allowed to be granted UNLIMITED TABLESPACE, in order to preserve the backwards compatibility with V6, the parser automatically transforms statements such that “grant resource to abc” automatically becomes “grant resource, unlimited tablespace to abc” and “revoke resource from abc” automatically becomes “revoke resource, unlimited tablespace from abc”. The same is true when granting and revoking the DBA role. This behaviour used to be well documented in the SQL reference guide which read:

Note: If you grant or revoke the RESOURCE or DBA role to or from a user, Oracle implicitly grants or revokes the UNLIMITED TABLESPACE system privilege to or from the user.

To Resolve this issue you need to :

1] Grant DBA or Resource Role back to the user from whom it was revoked.

BUG:6494010 – ORA-01536 AFTER GRANTING,REVOKING ROLE DBA

参考资料:

ORA-01536 After Revoking DBA Role (Doc ID 465737.1)

Original: https://www.cnblogs.com/kerrycode/p/14861386.html
Author: 潇湘隐者
Title: ORA-01536: space quota exceeded for tablespace案例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546406/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 条件平差

    例子: 三角形内角观测: 注解: 1.上面这个方程是观测方程,这个方程里面有3个未知数,一个方程解3个未知数是不可能解出来的,下面把这个方程表示成矩阵的形式: 注解: 1.小写c代…

    技术杂谈 2023年5月31日
    0117
  • 分析自动打卡脚本——大一入学遗作

    HTTP协议 1.何为HTTP协议 HTTP协议又名超文本传输协议,是一种基于TCP/IP的传输协议,顾名思义,其传输的内容为超文本内容,在互联网早期,我们只能传输非二进制的文本,…

    技术杂谈 2023年7月11日
    066
  • FCBU喜马拉雅音频批量下载器

    如上无法下载,请点这里试试>>> 下载② 对于360杀毒软件、360卫士对本软件报病毒的严正声明!点击查看文件校验信息 ,下载文件后请对比文件校验信息,以防文件被…

    技术杂谈 2023年5月31日
    095
  • React-native 导航插件React Navigation 4.x的使用

    文档 英文水平可以的话,建议直接阅读英文文档 简单使用介绍 安装插件 yarn add react-navigation react-native-reanimated react…

    技术杂谈 2023年5月31日
    068
  • gin CRUD

    gin CRUD gin CRUD // units package dal //cxg 2022-7-29 import ( "net/url" "…

    技术杂谈 2023年5月30日
    084
  • EducationalDPContest社论

    SoyTony 让我放歌词: Wish You Were Gay SoyTony 不让我放中文歌词, 《Wish You Were Gay》Baby, I don’t …

    技术杂谈 2023年7月24日
    048
  • TCP/IP和UDP

    TCP/IP即传输控制/网络协议,是面向连接的协议,发送数据前要先建立连接(发送方和接收方的成对的两个之间必须建 立连接),TCP提供可靠的服务,也就是说,通过TCP连接传输的数据…

    技术杂谈 2023年7月24日
    055
  • gauss杀进程

    1)查询当前所有连接的状态 select datname,pid,application_name,state from pg_stat_activity; 2)关闭当前state…

    技术杂谈 2023年7月24日
    070
  • 如何通过接口工具,和复制浏览器的请求参数,来模拟调式接口

    问题: 1、对于书写的接口,在自己调试的时候,一般都是通过接口工具比如 ApiPost 或者 PostMan等工具,来构建参数,进行请求,然后调试输出。这是常规的操作,就不在细说。…

    技术杂谈 2023年7月11日
    064
  • 线性表-顺序表

    线性表的顺序存&#…

    技术杂谈 2023年7月25日
    086
  • 日常踩坑_JPA聚合查询

    背景提要 需求是要进行分组并统计每组的数量,本来以为JPA有GroupBy的语法的,看了一圈才发现原来没有这个语法,只能通过自己写sql的方式这其中又分为写原生sql(即 nati…

    技术杂谈 2023年7月25日
    051
  • SGU 319. Kalevich Strikes Back (线段树)

    Time limit per test: 0.5 second(s)Memory limit: 65536 kilobytes input: standardoutput: sta…

    技术杂谈 2023年5月31日
    099
  • 如何在电脑上配置Vue开发环境

    一,开发环境 : Node JS(npm) Visual Studio Code(前端IDE) 安装NodeJS 下载地址: nodejs中文网 Visual Studio Cod…

    技术杂谈 2023年7月11日
    072
  • volatile关键字的用法

    volatile关键字 什么是可见性? 可见性是指线程A改变变量的值后,线程B可以马上看到更改后变量的值 volatile的作用 关键字volatile提示线程每次从共享内存中读取…

    技术杂谈 2023年7月24日
    059
  • pageoffice代码优化前备份

    package com.huajun.pageoffice.controller; import com.alibaba.fastjson.JSON; import com.hua…

    技术杂谈 2023年5月31日
    0108
  • maven 配置远程仓库服务器密码

    如果maven仓库被指定为私库或者有权限设定的话,一般来说是可以下载jar包的。但是发布jar包就有问题了 如果maven仓库设置了权限系统,用户不仅需要具有远程仓库的权限,还需要…

    技术杂谈 2023年5月30日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球