总结,下面是两个问题。问题1是用户可以在所有表空间创建表;问题2是exp不能导出空表

问题1:

版本:oracle 11.2.0.1.0

select * from v$version;

创建用户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.

现在的问题是: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.

表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'

解决方法:
这是因为 11g中的 deferred_segment_creation 延迟段创建特性,在CREATE TABLE DDL执行时实际不会在指定的表空间上生成segment ,
而会延迟到实际有INSERT数据后才会产生segment,因为没有实际的segment所以也就不会使用到tablespace quota 表空间配额, 
但是在INSERT数据时 如果没有对应表空间的quota的话 仍会报 ORA-01950错误。
SQL> alter session set deferred_segment_creation=FALSE;
System altered.

conn aaa/test

SQL> create table tvs(t1 int) tablespace sysaux;
create table tvs(t1 int) tablespace sysaux
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'SYSAUX' 
如以上演示, "alter system set deferred_segment_creation=FALSE;"后 禁用该11g新特性,回复到10g的状态。

问题2:
Oracle 11G在用EXPORT导出时,空表不能导11G R2中有个新特性,当表无数据时,不分配segment,以节省空间

解决方法:
方法1、insert一行,再rollback就产生segment了。该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。
方法2、设置deferred_segment_creation 参数 ,该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改SQL语句:
alter system set deferred_segment_creation=false scope=both;需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。
用以下这句查找空表select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
把查询结果导出,执行导出的语句,强行修改segment值,然后再导出即可导出空表,
注意:数据库插入数据前,修改11g_R2参数可以导出空表
查找空表select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
方法3、Oracle 10g以后增加了expdp和impdp工具,用此工具也可以导出空的表

下面附上一个查询一个用户在哪些表空间有unlimited tablespace权限:
/* Formatted on 6/8/2012 9:10:59 AM (QP5 v5.215.12089.38647) */
SELECT username, tablespace_name, privilege
FROM (SELECT grantee username, 'Any Tablespace' tablespace_name, privilege
FROM ( -- first get the users with direct grants
SELECT p1.grantee grantee, privilege
FROM dba_sys_privs p1
WHERE p1.privilege = 'UNLIMITED TABLESPACE'
UNION ALL
-- and then the ones with UNLIMITED TABLESPACE through a role...
SELECT r3.grantee, granted_role privilege
FROM dba_role_privs r3
START WITH r3.granted_role IN
(SELECT DISTINCT p4.grantee
FROM dba_role_privs r4, dba_sys_privs p4
WHERE r4.granted_role = p4.grantee
AND p4.privilege =
'UNLIMITED TABLESPACE')
CONNECT BY PRIOR grantee = granted_role)
-- we just whant to see the users not the roles
WHERE grantee IN (SELECT username FROM dba_users)
OR grantee = 'PUBLIC'
UNION ALL
-- list the user with unimited quota on a dedicated tablespace
SELECT username, tablespace_name, 'DBA_TS_QUOTA' privilege
FROM dba_ts_quotas
WHERE max_bytes = -1)
WHERE tablespace_name LIKE UPPER ('SYSTEM')
OR tablespace_name = 'Any Tablespace' AND username = 'TEST';

oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结相关推荐

  1. Oracle 11gR2新特性--延迟段创建(Deferred Segment Creation)和exp不能导出空表

    Oracle 11gR2新特性--延迟段创建(Deferred Segment Creation)和exp不能导出空表 真题1. 什么是延迟段创建(Deferred Segment Creation) ...

  2. oracle表段是什么,【DB笔试面试274】在Oracle中,什么是延迟段创建(Deferred Segment Crea......

    A答案如下所示: 在Oracle 11.2中,当创建一个空表或者空分区时,为了加快创建速度,Oracle并不会立即分配初始段和空间,实际的表段(Table Segement)被延迟到第一行数据插入时创 ...

  3. oracle 延迟段,DUL 支持Oracle 19c , 如何手动处理延迟段创建的表

    oracle dul是oracle的恢复利器, 它的传奇功能不再解释,但是dul和其它工具一样也是需要段(SEGMENT)块信息恢复数据,但是从oracle 11g开始支持了延迟段创建,那么使用dul ...

  4. 关于延迟段创建-P1

    文章目录 1 疑问点 2 环境创建 2.1 创建用户 2.2 创建表test 2.3 查看表的段信息 2.4 延迟段创建相关参数 1 疑问点 P1页有句话说道: 在Oracle 11.2.0.3.0以 ...

  5. Oracle 11g R2 RAC 高可用连接特性

    转自-阿里巴巴许春值 1.scan概念 什么叫 SCAN,SCAN (Single Client Access Name) 是 Oracle 从11g R2 开始推出的,客户端可以通过 SCAN 特性 ...

  6. oracle 延迟段,oracle - 未启用延迟段创建功能(ORA-00439) - 堆栈内存溢出

    我有带有DDL的.sql脚本文件超过60个表. 我正在尝试将脚本复制粘贴到SQL Developer中,连接到"Oracle Database 11g Express Edition Rel ...

  7. oracle 11g函数包缓存,Oracle11新特性——PLSQL函数缓存结果(一)

    Oracle11g新增的SQL缓存结果集的功能前面已经介绍过了.同时Oracle对PL/SQL的函数也进行了相应的增加.允许函数缓存返回结果. 先看一个简单的例子: SQL> CREATE TA ...

  8. 玩转oracle 11g(34):创建用户并锁定

    创建用户 锁定用户

  9. 玩转oracle 11g(2):创建数据库

    纯属个人操作,不懂私聊我 在程序列表中 oracle 的文件下,找到 database configuration assistant 下一步 继续下一步 定制数据库 命名测试歌谣 取消勾选,下一步 ...

最新文章

  1. 微信小程序页面间传递json数据
  2. 使用您自己的规则在Eclipse中自定义PMD
  3. mysql批量插入 增加参数_MySql 的批量操作,要加rewriteBatchedStatements参数
  4. Codeforces Round #253 DIV1 C 馋
  5. Python 爬取zw年鉴
  6. idea风格ui java_IDEA主题美化
  7. ubuntu双系统卸载并重新安装
  8. D. Dirty Deeds Done Dirt Cheap
  9. 赵鑫:强化学习在京东广告序列推荐中的应用
  10. 南京大学计算机学类,并未开放计算机专业:南京大学2020年强基计划政策分析...
  11. Android万能遥控菜单选择添加,将小米米家万能遥控器添加到Home Assistant
  12. 【英语做题】英语“八股文“学习
  13. http://blog.sina.com.cn/s/blog_7f5ad8c20101cnna.html#commonComment
  14. Polkit权限提升漏洞(CVE-2021-4034)利用及修复
  15. 天池-金融风控训练营-task2-数据分析
  16. 智能化软件开发微访谈·第十九期暨2022新年特辑:软件智能化开发:进展与挑战...
  17. 院士齐聚智造名城 2022全球智博会嘉宾阵容公布
  18. 3dsmax蒙皮教程,加载bip动作(菜鸟程序版)
  19. HyperSnap老牌截图工具 简体中文绿色汉化
  20. python制作的网站例子_利用Python绘制Jazz网络图的例子

热门文章

  1. Nancy之结合TinyFox调试备忘
  2. cordova + vue cli构建跨平台应用
  3. 27. FormPanel类的defaults属性
  4. ASP.NET 获取IIS应用程序池的托管管道模式
  5. 【Unity3D】资源对象、预设、查找对象、组合模式等知识点
  6. 怎样在Ubuntu 14.04中安装Java
  7. 分析RAC下一个SPFILE整合的三篇文章的文件更改
  8. iOS中UITextField 使用全面解析
  9. 【原创】CGAL中,2D Arrangements学习笔记
  10. Java高级-线程同步机制实现