linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Linux数据库 >

ORA

时间:2019-05-21  来源:未知  作者:admin666

结论先行:
1,此表的创建用户权限无问题,表上有其他用户创建的索引
2,报错时,这个索引的创建用户在表空间上无权限或配额
3,dba权限的回收,会导致UNLIMITED TABLESPACE系统权限被回收
4,处理方法:给索引创建用户授予权限或配额
grant UNLIMITED TABLESPACE to username;

alter user username quota unlimited on tablespace_name;

报错官方解释:
Oracle@oel:/home/oracle oerr ora 01950
01950, 00000, "no privileges on tablespace '%s'"
// *Cause:  User does not have privileges to allocate an extent in the
//          specified tablespace.
// *Action: Grant the user the appropriate system privileges or grant the user
//          space resource on the tablespace.

测试过程如下:
1,创建测试表
TEST@regan1 create table test tablespace test as select * from sys.dba_objects;

Table created.

TEST@regan1 create index idx_test_01 on test(OBJECT_NAME) tablespace test;

Index created.

TABLESPACE_NAME      TABLESPACE_T SUM_SPACE(M) SUM_BLOCKS USED_SPACE(M) USED_RATE(%) FREE_SPACE(M)
-------------------- ------------ ------------ ---------- ------------- ------------ -------------
USERS                PERMANENT            1399    179040          1330        95.05            69
TEST                PERMANENT            200      25600            4        1.94          196

2,创建测试用户
SYS@regan1 create user test02 identified by test;

User created.

SYS@regan1 select username,default_tablespace from dba_users where username like 'TEST%';

USERNAME                      DEFAULT_TABLESPACE
------------------------------ ------------------------------
TEST                          TEST
TEST02                        USERS

SYS@regan1 grant connect to test02;

Grant succeeded.

SYS@regan1 grant resource to test02;

Grant succeeded.

3,创建测试用户下索引
TEST@regan1 grant index on test to test02;

Grant succeeded.

SYS@regan1 grant unlimited tablespace to test02;

Grant succeeded.

TEST02@regan1   create index idx_test_02 on test.test(OBJECT_ID) tablespace test;

Index created.

TEST@regan1 select index_name,tablespace_name,status from dba_indexes where table_name='TEST';

INDEX_NAME                    TABLESPACE_NAME      STATUS
------------------------------ -------------------- --------
IDX_TEST_01                    TEST                VALID
IDX_TEST_02                    TEST                VALID

4,查看索引extent
TEST@regan1 select OWNER,EXTENT_ID,BYTES/1024 from dba_extents where SEGMENT_NAME='IDX_TEST_02';

OWNER                          EXTENT_ID BYTES/1024
------------------------------ ---------- ----------
TEST02                                  0        64
TEST02                                  1        64
TEST02                                  2        64
TEST02                                  3        64
TEST02                                  4        64

5,插入测试
TEST@regan1 insert into test select * from test;

14082 rows created.

TEST@regan1 COMMIT;

Commit complete.

TEST@regan1 select OWNER,EXTENT_ID,BYTES/1024 from dba_extents where SEGMENT_NAME='IDX_TEST_02';

OWNER                          EXTENT_ID BYTES/1024
------------------------------ ---------- ----------
TEST02                                  0        64
TEST02                                  1        64
TEST02                                  2        64
TEST02                                  3        64
TEST02                                  4        64
TEST02                                  5        64
TEST02                                  6        64
TEST02                                  7        64
TEST02                                  8        64

9 rows selected.

6,授予dba权限并回收
SYS@regan1 select * from dba_sys_privs where grantee='TEST02';

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
TEST02                        UNLIMITED TABLESPACE                    NO

SYS@regan1 grant dba to test02;

Grant succeeded.

SYS@regan1 revoke dba from test02;

Revoke succeeded.

SYS@regan1 select * from dba_sys_privs where grantee='TEST02';

no rows selected

7,插入测试
TEST@regan1 insert into test select * from test;
insert into test select * from test
            *
ERROR at line 1:
ORA-01950: no privileges on tablespace 'TEST'

TEST@regan1 select OWNER,EXTENT_ID,BYTES/1024 from dba_extents where SEGMENT_NAME='IDX_TEST_02';

OWNER                          EXTENT_ID BYTES/1024
------------------------------ ---------- ----------
TEST02                                  0        64
TEST02                                  1        64
TEST02                                  2        64
TEST02                                  3        64
TEST02                                  4        64
TEST02                                  5        64
TEST02                                  6        64
TEST02                                  7        64
TEST02                                  8        64

9 rows selected.

8,授予配额或权限
上面是授予UNLIMITED TABLESPACE权限,以下使用配额。
SYS@regan1 alter user test02 quota  unlimited on test;

User altered.

SYS@regan1 select * from dba_ts_quotas where username='TEST02';

TABLESPACE_NAME      USERNAME                            BYTES  MAX_BYTES    BLOCKS MAX_BLOCKS DRO
-------------------- ------------------------------ ---------- ---------- ---------- ---------- ---
TEST                TEST02                            589824        -1        72        -1 NO

9,插入测试
TEST@regan1 insert into test select * from test;

28173 rows created.

TEST@regan1 select OWNER,EXTENT_ID,BYTES/1024 from dba_extents where SEGMENT_NAME='IDX_TEST_02';

OWNER                          EXTENT_ID BYTES/1024
------------------------------ ---------- ----------
TEST02                                  0        64
TEST02                                  1        64
TEST02                                  2        64
TEST02                                  3        64
TEST02                                  4        64
TEST02                                  5        64
TEST02                                  6        64
TEST02                                  7        64
TEST02                                  8        64
TEST02                                  9        64
TEST02                                10        64
TEST02                                11        64
TEST02                                12        64
TEST02                                13        64
TEST02                                14        64
TEST02                                15        64
TEST02                                16      1024

17 rows selected.

TEST@regan1 rollback;

Rollback complete.

TEST@regan1 select OWNER,EXTENT_ID,BYTES/1024 from dba_extents where SEGMENT_NAME='IDX_TEST_02';

OWNER                          EXTENT_ID BYTES/1024
------------------------------ ---------- ----------
TEST02                                  0        64
TEST02                                  1        64
TEST02                                  2        64
TEST02                                  3        64
TEST02                                  4        64
TEST02                                  5        64
TEST02                                  6        64
TEST02                                  7        64
TEST02                                  8        64
TEST02                                  9        64
TEST02                                10        64
TEST02                                11        64
TEST02                                12        64
TEST02                                13        64
TEST02                                14        64
TEST02                                15        64
TEST02                                16      1024

17 rows selected.
----这步可以看到,rollback后索引的extent依然处于分配状态。

SYS@regan1 alter user test02 quota 0 on test;

User altered.

SYS@regan1 select * from dba_ts_quotas where username='TEST02';

no rows selected

TEST@regan1 insert into test select * from test;

28164 rows created.
----这步可以看到,索然权限和配额都已经没有,但是之前已分配的extent仍然可以使用。

TEST@regan1 insert into test select * from test;
insert into test select * from test
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'TEST'
----继续插入则由于缺少权限和配额,插入报错。

更多Oracle相关信息见Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

友情链接
  • Salesforce闹剧:共享用户数据后陷入数小时的瘫痪
  • 韩国政府计划从Windows 7迁移到Linux
  • Redis作者antirez:开源维护者的挣扎
  • 最常用还是最近搜索?你的Chrome地址栏如何自动填充?
  • Stack Overflow安全事件新进展:部分用户私人信息遭窃
  • 英特尔发布Clear Linux开发者版本
  • 思科报告Nexus 9000数据中心交换机,PI软件和EPN管理器中的严重
  • Google AI工程师介绍Translatotron,一种端到端的直接语音翻译模
  • Racket 7.3 发布,改进了Racket
  • V8 7.5 Beta 发布,WebAssembly隐式缓存
  • 开发人员辩论是否为Fedora 31阻止基于密码的Root SSH登录
  • Mozilla,Cloudflare和其他人建议使用BinaryAST以加快JavaScript
  • GCC 10支持使用SSE指令模拟MMX
  • KDE Plasma 5.16 beta发布,许多增强功能
  • Microsoft开源VS Code扩展Web Template Studio,可轻松创建全栈W
  • NotePad++ 正则表达式替换高级用法
  • 针对Linux 5.1内核更新的MuQSS补丁
  • DXVK 1.2 发布,支持Direct3D 11特定于供应商的扩展
  • NVIDIA 430.14 Linux驱动程序发布,Vulkan性能优化
  • SMPlayer 19.5.0发布,如何在Ubuntu中安装它
  • Phoronix Test Suite 8.8 正式发布
  • LLVM Clang 9.0采用初始C2x语言模式
  • 使用Linux操作系统的网络安全:您需要知道的一切
  • SwiftWasm
  • Mesa 19.1
  • Wine 4.0.1 发布,44个修复
  • Flutter启用新的lint规则来构建更好的Chrome OS应用程序
  • Proton 4.2
  • 微软开源基于近邻图的最近邻搜索算法SPTAG
  • GitHub Package Registry测试版发布,新的软件包管理服务
  • Mozilla修复旧版Firefox插件bug,专用扩展现可用于Firefox 52
  • 如何在Mozilla Firefox中获得扩展建议
  • Google和Collabora为Chrome OS设备的Linux 5.1内核进行重大更改
  • Ant Design 3.18.1 发布,企业级UI设计语言
  • Atom 1.37 发布,跨平台文本编辑器
  • Apple发布iOS 12.3和tvOS 12.3,macOS Mojave 10.14.5,watchOS
  • G7国家将在6月模拟跨境网络攻击
  • VirtualBox 6.0.8 发布,Linux Kernel 3.16.35与共享文件夹一起
  • Linux kernel 5.1.1第一个点发布,可准备好进行大规模部署
  • KDE Frameworks 5.58 发布,许多修复及改进
  • 英特尔的Clear Linux OS为Linux开发人员提供量身定制的工作流程
  • KDE Plasma 5.16桌面环境将带来全新的通知
  • 微软确认WSL与WSL2共存,以及Windows Linux子系统的更多信息
  • Apple发布了iOS 12.4,macOS 10.14.6,watchOS 5.3和tvOS 12.4的
  • Clear Linux 准备新的内核选项
  • Linux新闻 第972页
  • 如何在Ubuntu 18.04上配置MySQL主从复制
  • ORA
  • 领航时时彩
  • 九龙图库下载
  • 现金开户
  • 宝盈娱乐注册-上鼎狐网
  • 老时时彩360