Oracle 11gR2新建空表不分配Segment
一、引言:
在看《收获,不止Oracle》的神奇,走进逻辑体系世界一章时,需要新建一张表查看Extents的情况,由于该书的环境是ORACLE10G的,因此新建空表以后立刻就分配Segment,而我使用的是Oracle11gR2,新建空表后没有立即分配Segment。这就是11GR2的新特性,延迟段创建,就是说从11GR2开始默认创建的表不会立即分配segment,不会占用磁盘空间,当第一条数据insert时才会分配空间。
二、实验模拟:
SQL> select * from v$version; BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production SQL> create table testnew(id int primary key,name varchar2(10)); Table created SQL> create table testnew_IME(id int primary key,name varchar2(10)) segment creation immediate; Table created SQL> create table testnew_def(id int primary key,name varchar2(10)) segment creation deferred; Table created SQL> select segment_name from user_segments where segment_name like 'TESTNEW%'; SEGMENT_NAME
--------------------------------------------------------------------------------
TESTNEW_IME SQL> select INDEX_NAME,TABLE_OWNER from USER_indexes where table_name='TESTNEW'; INDEX_NAME TABLE_OWNER
------------------------------ ------------------------------
SYS_C0011192 JACK SQL> select INDEX_NAME,TABLE_OWNER from USER_indexes where table_name='TESTNEW_IME'; INDEX_NAME TABLE_OWNER
------------------------------ ------------------------------
SYS_C0011193 JACK SQL> select INDEX_NAME,TABLE_OWNER from USER_indexes where table_name='TESTNEW_DEF'; INDEX_NAME TABLE_OWNER
------------------------------ ------------------------------
SYS_C0011194 JACK SQL> select segment_name from user_segments where segment_name='SYS_C0011192'; SEGMENT_NAME
-------------------------------------------------------------------------------- SQL> select segment_name from user_segments where segment_name='SYS_C0011193'; SEGMENT_NAME
--------------------------------------------------------------------------------
SYS_C0011193 SQL> select segment_name from user_segments where segment_name='SYS_C0011194'; SEGMENT_NAME
-------------------------------------------------------------------------------- SQL> insert into testnew values(1,'anbob.com'); 1 row inserted SQL> commit; Commit complete SQL> select segment_name from user_segments where segment_name like 'TESTNEW%'; SEGMENT_NAME
--------------------------------------------------------------------------------
TESTNEW
TESTNEW_IME SQL> select INDEX_NAME,TABLE_OWNER from USER_indexes where table_name='TESTNEW'; INDEX_NAME TABLE_OWNER
------------------------------ ------------------------------
SYS_C0011192 JACK SQL> select segment_name from user_segments where segment_name='SYS_C0011192'; SEGMENT_NAME
--------------------------------------------------------------------------------
SYS_C0011192 SQL> truncate table testnew; Table truncated SQL> select segment_name from user_segments where segment_name like 'TESTNEW%'; SEGMENT_NAME
--------------------------------------------------------------------------------
TESTNEW
TESTNEW_IME SQL> conn /as sysdba
已连接。
SQL> create table testnew_def(id int primary key,name varchar2(10)) segment creation deferred;
create table testnew_def(id int primary key,name varchar2(10)) segment creation deferred
*
第 1 行出现错误:
ORA-14223: 此表不支持延迟创建段
注意:
11gR2默认是使用segment creation deferred建立,新建的无记录表不分配segment,当insert第一条记录时分配段空间,不会因truncate而回收,并且在sys schema里不支持,exp也不会导出。
关于这个主要还是跟deferred_segment_creation参数有关,在11gR2中该参数的值为true,说明当创建对象(如表),初始没有数据,不会立即创建segment。
如果该参数设置为false,表明之后的创建的表,初始没有数据,会立即创建segment。
下面看一下它的效果:
SQL> alter system set deferred_segment_creation=false; System altered SQL> create table jack(x int); Table created SQL> select segment_name,segment_type,extents,blocks from user_segments where segment_name='JACK'; SEGMENT_NAME SEGMENT_TYPE EXTENTS BLOCKS
-------------------------------------------------------------------------------- ------------------ ---------- ----------
JACK TABLE 1 8
Oracle 11gR2新建空表不分配Segment的更多相关文章
- Oracle空表的分配segment
1.查询相关参数deferred_segment_creation select * from v$parameter where name='deferred_segment_creation' ...
- 转 oracle 11g 导出空表
1.Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出. 2.设置deferred_segment_creation 参数为FALSE后,无论是 ...
- oracle 11G 导出空表失败的解决方法
一.问题原因: 11G中有个新特性,当表无数据时,不分配segment,以节省空间 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除 ...
- Oracle 11g导出空表、少表的解决办法
ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间. 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产 ...
- 解决oracle 11g 导出空表的方法
ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间. 解决方法: 1)insert一行,再rollback就产生segment了 该方法是在在空表中插入数据,再删除,则产 ...
- oracle 11g 导出空表
正常情况下,oracle11g的 exp命令无法导出空表,弥补这个缺陷的方法是 在空表创建之前,更改系统设置: show parameter deferred_segment_creation 查看, ...
- oracle 解决 exp 空表不能导出的问题
原因:oralce_11g 中有个新特性,当表无数据时,不分配 segment,以节省空间,这也就导致了 exp 在导出表时,没有数据的表会被忽略 方法一:我们可以向表中插入数据,在删除,这样数据表就 ...
- Oracle 11gR2 Database UNDO表空间使用率居高不下-转载
客户的数据库是Oracle Database 11.2.0.3.0 for AIX 6.1 64bit的单机数据库.客户查询DBA_FREE_SPACE发现UNDO表空间的使用率高达98%以上.客户的 ...
- Oracle中新建数据表的两种方法
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
随机推荐
- 学习"大众点评网的架构设计与实践"
今天看了一篇"程序员"上的文章:"大众点评网的架构与实践",因为里面谈的架构演变之路中所经历的痛点对我的工作经验来说感同身受,所以觉得文章里的一些解决方案对我还 ...
- MVC 上传文件并展示
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 最近在做自学MVC,遇到的问题很多,索性一点点总结 ...
- RMAN-06059: expected archived log not found, loss of archived log compromises recoverability
归档日志被物理删除后执行rman操作报错: RMAN> backup database plus archivelog; Starting backup at -JUL- :: current ...
- Vagrant配置与使用
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境.它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境. Vagrant is an amaz ...
- PostgreSQL Replication之第十二章 与Postgres-XC一起工作(6)
12.6 添加节点 Postgres-XC允许您在那个过程中的任何一个时间点添加新的服务器到计划中.所有您需要做的是按照我们之前演示的设置一个节点,并在 控制器上调用CREATE NODE.然后,该系 ...
- 最近兰州的js风格写个插件和一个template engine
/* *@Product Name: Rational Framework Author: Calos Description: pager !important: pager */ (functio ...
- bzoj2743 [HEOI2012]采花
做法是每个询问先算出询问区间中花的种类减去区间中只有一朵花的花的种类,这两个子问题都不算难,具体看代码吧.询问可以离线处理,用树状数组维护,复杂度O(nlogn). 不知道是想的复杂了还是打的太low ...
- ligerui_ligerTree_003_配置url参数,加载“树”
配置url参数,加载“树”: 源码下载地址:http://download.csdn.net/detail/poiuy1991719/8571255 效果图:json.txt HTML代码: < ...
- User Managerment 职责不能使用的问题
1.此职责默认的是没有启用授权的(grant),需要在系统管理员职责下搜索到对应的菜单,进行grant 2.就算授权后,用户还是不能进行操作,需要进行以下设置: 1. Log into the app ...
- LIKE 某个变量
declare i ); n number; begin i:='%D0FC02EAR11005%'; select po_header_id into n from po_headers_all w ...