user_segments和user_tables的区别?

delphisanding1 2011-07-01 06:10:34
这2张数据字典都能查找到用户创建的表,它两有什么区别?

是user_tables只能查找到当前用户所有的table的信息,而user_segments是查询到当前用户所有的segment信息?

那我创建的临时表为什么在user_tables中能查找到,而在user_segments中找不到呢?

-------------------------------------------------------------------------------------------------------

segment到底应该怎么理解?老师说一张表就是一个segment,那segment还可以是索引,其他数据库对象等等。
...全文
1583 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fenghuolin 2011-11-19
  • 打赏
  • 举报
回复 1
[Quote=引用 2 楼 upc05070000 的回复:]

我认为 一张表是一个segment 但是一个segment不一定只能是一张表
关于临时表在table中有 在segment中没有的问题 要看你的数据库是什么版本
11g中默认 只有插入数据时 才给表分配segment 为了节省资源 新建的空表不分配 当然也可以配置新建时分配
[/Quote]我的是 10g版本我也遇到了 这个问题 那是为什么呢? 11g是默认?10g的又是什么机制呢?
eweixia 2011-09-28
  • 打赏
  • 举报
回复
学习一下啊
delphisanding1 2011-07-07
  • 打赏
  • 举报
回复
多谢各位!
huangdh12 2011-07-06
  • 打赏
  • 举报
回复
段有分为索引段,表段,回滚段,临时段等等。
hahazhubang 2011-07-05
  • 打赏
  • 举报
回复 1
user_tables 是当前用户下的表.
user_segments 是oracle对象存储的体现。
segment的类型很多,比如表、索引、分区表、簇等等。
正常来说,一个segment类型就分配一个对应的segment.
比如create table,同时又建个索引,那么就会存在两个segment.
ylp198296 2011-07-04
  • 打赏
  • 举报
回复
创建Oracle 临时表,可以有两种类型的临时表:

会话级的Oracle临时表

事务级的临时表 。
1) 会话级的临时表因为这这个临时表中的数据和你的当前会话有关系,当你当前SESSION 不退出的情况下,临时表中的数据就还存在,而当你退出当前SESSION 的时候,临时表中的数据就全部没有了,当然这个时候你如果以另外一个SESSION 登陆的时候是看不到另外一个SESSION 中插入到临时表中的数据的。

即两个不同的SESSION 所插入的数据是互不相干的。当某一个SESSION 退出之后临时表中的数据就被截断(truncate table ,即数据清空)了。会话级的临时表创建方法:

1.Create Global Temporary Table Table_Name

2.(Col1 Type1,Col2 Type2...) On Commit Preserve Rows ;

举例:

1.create global temporary table Student

2.(Stu_id Number(5),

3.Class_id Number(5),

4.Stu_Name Varchar2(8),

5.Stu_Memo varchar2(200)) on Commit Preserve Rows ;

2) 事务级临时表是指该临时表与事务相关,当进行事务提交或者事务回滚的时候,Oracle临时表中的数据将自行被截断,其他的内容和会话级的临时表的一致(包括退出SESSION 的时候,事务级的临时表也会被自动截断)。事务级临时表的创建方法:

1.Create Global Temporary Table Table_Name

2.(Col1 Type1,Col2 Type2...) On Commit Delete Rows ;

举例:

1.create global temporary table Classes

2.(Class_id Number(5),

3.Class_Name Varchar2(8),

4.Class_Memo varchar2(200)) on Commit delete Rows ;

3) 两中类型临时表的区别

会话级临时表采用 on commit preserve rows ;而事务级则采用 on commit delete rows ;用法上,会话级别只有当会话结束临时表中的数据才会被截断,而且事务级临时表则不管是 commit 、 rollback 或者是会话结束,Oracle临时表中的数据都将被截断

UPC子夜 2011-07-02
  • 打赏
  • 举报
回复
我认为 一张表是一个segment 但是一个segment不一定只能是一张表
关于临时表在table中有 在segment中没有的问题 要看你的数据库是什么版本
11g中默认 只有插入数据时 才给表分配segment 为了节省资源 新建的空表不分配 当然也可以配置新建时分配
delphisanding1 2011-07-02
  • 打赏
  • 举报
回复
大致了解答案了,但是谁回答下让我确认下?
delphisanding1 2011-07-02
  • 打赏
  • 举报
回复
多谢各位
304的的哥 2011-07-02
  • 打赏
  • 举报
回复
段(segment)是表空间中主要的组织结构,有很多种段,回滚段,临时段,索引段........
段分为区段,区段分为块,块是oracle中最小的空间分配单位,数据就存储在这里;
一个段中可以存放多个表的数据,比如几十行的小表;
一个表也可能占用多个段,比如数据量大的表,分区表;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧