ORACLE11G用户在任何表空间都有创建表的权限问题
2012-06-07 11:04
435 查看
oracle 11.2.0.1.0 32bit
1:创建用户aaa,给其connect和resource角色,但回收unlimited tablespace权限:
SQL> create user aaa identified by aaa default tablespace users;
User created.
SQL> grant connect,resource to aaa;
Grant succeeded.
SQL> revoke unlimited tablespace from aaa;
Revoke succeeded.
SQL> select * from role_sys_privs where role='RESOURCE';
ROLE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE TABLE NO
RESOURCE CREATE INDEXTYPE NO
8 rows selected.
SQL> alter user aaa quota unlimited on users;
User altered.
2:现在的问题是:aaa在任何表空间都有创建表的权限
[oracle@master /]$ sqlplus aaa
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jun 6 18:38:25 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> create table test1(id int) tablespace users;
Table created.
SQL> create table test2 (id int) tablespace system;
Table created.
SQL> create table test3(id int) tablespace zaodian;
Table created.
3:表test1可以正常插入数据,test2和test3都无法插入数据,这是正常的:
SQL> insert into test1 values(1);
1 row created.
SQL> insert into test2 values(1);
insert into test2 values(1)
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'SYSTEM'
SQL> insert into test3 values(1);
insert into test3 values(1)
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'ZAODIAN'
导致这样的情况是:
ORACLE11G新特性:deferred_segment_creation 默认为true导致的,这个参数使创建表的时候,并不会使用任何的segment,当真正有数据插入的时候才会使用相关segment,所以会导致可以在任何表空间建立表的假象,但插入数据时会报错无权限
解决此问题: alter system set deferred_segment_creation=false 即可。
1:创建用户aaa,给其connect和resource角色,但回收unlimited tablespace权限:
SQL> create user aaa identified by aaa default tablespace users;
User created.
SQL> grant connect,resource to aaa;
Grant succeeded.
SQL> revoke unlimited tablespace from aaa;
Revoke succeeded.
SQL> select * from role_sys_privs where role='RESOURCE';
ROLE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE TABLE NO
RESOURCE CREATE INDEXTYPE NO
8 rows selected.
SQL> alter user aaa quota unlimited on users;
User altered.
2:现在的问题是:aaa在任何表空间都有创建表的权限
[oracle@master /]$ sqlplus aaa
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jun 6 18:38:25 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> create table test1(id int) tablespace users;
Table created.
SQL> create table test2 (id int) tablespace system;
Table created.
SQL> create table test3(id int) tablespace zaodian;
Table created.
3:表test1可以正常插入数据,test2和test3都无法插入数据,这是正常的:
SQL> insert into test1 values(1);
1 row created.
SQL> insert into test2 values(1);
insert into test2 values(1)
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'SYSTEM'
SQL> insert into test3 values(1);
insert into test3 values(1)
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'ZAODIAN'
导致这样的情况是:
ORACLE11G新特性:deferred_segment_creation 默认为true导致的,这个参数使创建表的时候,并不会使用任何的segment,当真正有数据插入的时候才会使用相关segment,所以会导致可以在任何表空间建立表的假象,但插入数据时会报错无权限
解决此问题: alter system set deferred_segment_creation=false 即可。
相关文章推荐
- 同一张表上有不同用户创建的索引造成表空间无权限问题
- oracle11g用plsql developer创建表空间 创建用户 以及赋予权限
- Oracle11g 创建表空间、创建用户、授予权限、锁定、解锁以及删除用户等
- Oracle11g创建表空间、创建用户、角色授权、导入导出表以及中文字符乱码问题
- ORACLE11g 创建表空间、用户和分配权限
- Oracle 创建用户、修改用户信息、为用户分配权限、为用户分配表空间配额、删除用户
- Oracle创建表空间、创建用户以及授权、查看权限
- Oracle创建表空间、创建用户以及授权、查看权限
- oracle创建表空间以及创建用户赋予权限
- Oracle创建表空间、创建用户以及授权、查看权限
- Oracle创建表空间,用户,分配权限
- oracle 数据库表空间、用户、权限的创建与删除
- PLSQL创建表空间,创建用户,添加权限
- 创建数据库表空间和分配用户权限
- 在linux系统下,创建oracle数据库表空间、用户权限操作功能
- oracle 创建表空间,用户,赋权限
- 创建表空间,用户,分配权限
- Oracle创建表空间、创建用户以及授权、查看权限
- Oracle创建表空间、创建用户以及授权、查看权限
- 用oralce 自带工具sql developer 创建表空间,用户,权限