普通表 分区表 大对象表之间不同的segment分配
2013-10-16 16:14
295 查看
普通表 分区表 大对象表之间不同的segment分配
分类:oracle 2013-04-11 22:50
35人阅读 评论(0)
收藏
举报
[sql]
view plaincopyprint?
scott@ORCL> create table table1 (id number,name varchar2(2));
表已创建。
scott@ORCL> create table table2 (id number,time date) partition by range(time)
2 ( partition p1 values less than (to_date('2010-10-1','yyyy-mm-dd')),
3 partition p2 values less than (to_date('2010-11-1','yyyy-mm-dd')),
4 partition p4 values less than (maxvalue)
5 );
表已创建。
scott@ORCL> create table table3 (id number,name clob);
表已创建。
--没有插入数据,oracle未给表分配空间
scott@ORCL> select count(*) from user_segments where segment_name ='TABLE1';
COUNT(*)
----------
0
scott@ORCL> col segment_name for a20;
--分区表虽未插入数据,但已分配空间
scott@ORCL> select segment_name,partition_name from user_segments where segment_name ='TABLE2';
SEGMENT_NAME PARTITION_NAME
-------------------- ------------------------------
TABLE2 P1
TABLE2 P2
TABLE2 P4
--大对象字段也未分配空间
scott@ORCL> select segment_name,partition_name from user_segments where segment_name ='TABLE3';
未选定行
scott@ORCL> insert into table1 values(1,'a');
已创建 1 行。
--普通表插入数据之后分配空间
scott@ORCL> select count(*) from user_segments where segment_name ='TABLE1';
COUNT(*)
----------
1
scott@ORCL> insert into table3 values(1,'a');
已创建 1 行。
--大对象表也是在插入数据之后分配空间
scott@ORCL> select segment_name,partition_name from user_segments where segment_name ='TABLE3';
SEGMENT_NAME PARTITION_NAME
-------------------- ------------------------------
TABLE3
---查看大数据表分配多少个segment
scott@ORCL> select count(*) from dba_segments;
COUNT(*)
----------
13104
scott@ORCL> drop table table3 purge;
表已删除。
scott@ORCL> select count(*) from dba_segments;
COUNT(*)
----------
13101
--发现大数据对象表分配了三个segment,仔细对比创建表之后,分配了哪些segment
scott@ORCL> create table user_segment1 as select * from user_segments;
表已创建。
scott@ORCL> create table table3 (id number,name clob);
表已创建。
scott@ORCL> insert into table3 values(1,'a');
已创建 1 行。
scott@ORCL> col segment_name for a35;
--大数据表分配了三个segment
--表本身的segment
--大对象的segment
--LOBINDEX是为定位LOB字段内容自动创建的索引,无法删除,Oracle会自动维护。
scott@ORCL> select segment_name,segment_type from user_segments where segment_name not in(select segment_name from user_segment1);
SEGMENT_NAME SEGMENT_TYPE
----------------------------------- ------------------
SYS_IL0000089578C00002$$ LOBINDEX
TABLE3 TABLE
SYS_LOB0000089578C00002$$ LOBSEGMENT
USER_SEGMENT1 TABLE
scott@ORCL> create table table1 (id number,name varchar2(2)); 表已创建。 scott@ORCL> create table table2 (id number,time date) partition by range(time) 2 ( partition p1 values less than (to_date('2010-10-1','yyyy-mm-dd')), 3 partition p2 values less than (to_date('2010-11-1','yyyy-mm-dd')), 4 partition p4 values less than (maxvalue) 5 ); 表已创建。 scott@ORCL> create table table3 (id number,name clob); 表已创建。 --没有插入数据,oracle未给表分配空间 scott@ORCL> select count(*) from user_segments where segment_name ='TABLE1'; COUNT(*) ---------- 0 scott@ORCL> col segment_name for a20; --分区表虽未插入数据,但已分配空间 scott@ORCL> select segment_name,partition_name from user_segments where segment_name ='TABLE2'; SEGMENT_NAME PARTITION_NAME -------------------- ------------------------------ TABLE2 P1 TABLE2 P2 TABLE2 P4 --大对象字段也未分配空间 scott@ORCL> select segment_name,partition_name from user_segments where segment_name ='TABLE3'; 未选定行 scott@ORCL> insert into table1 values(1,'a'); 已创建 1 行。 --普通表插入数据之后分配空间 scott@ORCL> select count(*) from user_segments where segment_name ='TABLE1'; COUNT(*) ---------- 1 scott@ORCL> insert into table3 values(1,'a'); 已创建 1 行。 --大对象表也是在插入数据之后分配空间 scott@ORCL> select segment_name,partition_name from user_segments where segment_name ='TABLE3'; SEGMENT_NAME PARTITION_NAME -------------------- ------------------------------ TABLE3 ---查看大数据表分配多少个segment scott@ORCL> select count(*) from dba_segments; COUNT(*) ---------- 13104 scott@ORCL> drop table table3 purge; 表已删除。 scott@ORCL> select count(*) from dba_segments; COUNT(*) ---------- 13101 --发现大数据对象表分配了三个segment,仔细对比创建表之后,分配了哪些segment scott@ORCL> create table user_segment1 as select * from user_segments; 表已创建。 scott@ORCL> create table table3 (id number,name clob); 表已创建。 scott@ORCL> insert into table3 values(1,'a'); 已创建 1 行。 scott@ORCL> col segment_name for a35; --大数据表分配了三个segment --表本身的segment --大对象的segment --LOBINDEX是为定位LOB字段内容自动创建的索引,无法删除,Oracle会自动维护。 scott@ORCL> select segment_name,segment_type from user_segments where segment_name not in(select segment_name from user_segment1); SEGMENT_NAME SEGMENT_TYPE ----------------------------------- ------------------ SYS_IL0000089578C00002$$ LOBINDEX TABLE3 TABLE SYS_LOB0000089578C00002$$ LOBSEGMENT USER_SEGMENT1 TABLE
相关文章推荐
- 普通表 分区表 大对象表之间不同的segment分配
- 反射实现两个对象属性名不同之间的映射
- [C#] 不同类型的对象之间快速拷贝(比反射快十倍)
- Unity事件管理类,用于不同对象之间传递消息
- jquery对象跟dom对象之间有什么不同
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Atitit 容器化技术之道 attilax著 1. 概念 1 1.1. 容器是应用服务器中位于组件和平台之间的接口集合。 1 1.2. 有时候也指集合的概念,里面可以存放不同对象 2 1.3. 、新
- 【Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用】的改进!
- 如何比较两个Oracle数据库之间对象的不同
- java中Integer对象不同创建方法之间的区别
- oracle 11gR2 创建无数据对象临时不分配segment
- PHP中不同类之间函数式调用对象与同类中对象的函数式使用
- List中存放不同类型对象之间的转换
- Windows AWE API 内存分配和普通内存分配的不同点
- 不同Activity之间的数据传递---Bundle对象的实现
- 求类的对象之间,不同类的对象之间如果共享一个对象的方法
- PHP中不同类之间函数式调用对象与同类中对象的函数式使用
- 对象空间在内存中的不同分配
- 创建普通内部类对象与创建嵌套类对象的不同