在ORACLE中,表的类型有如下七种:

堆组织表,索引组织表,索引聚簇表,散列聚簇表,嵌套表,临时表,对象表。下面得内容只是介绍在实际应用中经常使用的表类型,详细的介绍可以看TOM的EXPERT ONE-ON-ONE第六章,而以下内容,几乎99%都是源自该书,然后自己再总结整理出来的。

一、堆组织表:

存储方式随机无序的,寻找合适的地方空间进行存储,我们现在使用的表,如果没有特别指定,一般都是这种。

一个进程使用一个FREELISTS,当该FREELISTS用光后,不会到

另一个FREELISTS中找空间(即使你设定了多个FREELISTS),它

将直接提高表高水位标志,也就是说,FREELISTS是管理高水位以下的块,以上的块只有FREELIST为0是才能使用。在9I以后的版本,如果采取了ASSM管理方式,FREELISTS参数是不能更改的。

pctused,控制块进入FREELISTS,加上PCTFREE控制块出FREELISTS;例如:PCTUSED 40,PCTFREE 10,意味着块的使用率不能超过40%

块用来更新需要保留的空间为10%,当一个块要重新增加到FREELISTS,必须使用率是低于40%,当一个块使用率达到60%时,它不

会从FREELISTS撤销,只要在该块使用达到90%的时候,会从FREELISTS中撤销(因为该块的PCTFREE为10%)。

二、索引组织表:

数据按主码存储和排序,同索引结构一样,不过数据直接存储于主码后面。适用于信息检索、空间和OLAP程序。索引组织表的适用情况:

1、 代码查找表。

2、 经常通过主码访问的表。

3、 构建自己的索引结构。

4、 加强数据的共同定位,要数据按特定顺序物理存储。

5、 经常用between…and…对主码或唯一码进行查询。数据物理上分类查询。如一张订单表,按日期装载数据,想查单个客户不同时期的订货和统计情况。

索引组织表创建语法:

SQL> create table t2

2 (x int primary key,

3 y char(2000) default rpad('a',2000,'d'),

4 z date

5 )

6 organization index ——表示创建的表类型是IOT

7 nocompress ——同索引的压缩选项一样,表示是否对相同索引条目值进行压缩存储

8 pctthreshold 50 ——当行的大小超过块大小的百分比时,超过列数据存储至溢出段

9 including y ——IOT中每行including指定列前边的列都存储到索引块中,其余列存储到溢出块中

10 overflow ——IOT中行太大时允许设置另一溢出段来保存溢出的数据,同行迁移相似

11 /

Table created.

索引组织表数据是有序的,当检索数据的时候能降低逻辑读和物理读。没有了PCTUSED参数,但是考虑到overflow段时,通过

pctthreshold和PCTFREE来考虑块的使用

三、索引聚簇表:

存储一组表的一种方法。某些相同的列放在同一个块上。在把数据放入之前,必须需要创建“聚簇索引”。聚簇索引的工作时拿走

一个聚簇码值,并且返回包含那个码的块的块地址。当检索数据的时候,ORACLE将读聚簇码,确定块地址,然后读数据。创建语法

如下:

SQL> create cluster test(id number)size 1024;

Cluster created.

---上面1024表示每个聚簇码的大小,如果数据块是8K,那么一个数据块将最大容纳7个聚簇码。每个聚簇存储一种值。

SQL> create index idx_test_id on cluster test;

Index created.

SQL> create table test_10(id number,name varchar2(32)) cluster test(id);

Table created.

SQL> create table test_20(id number,age number(3)) cluster test(id);

Table created.

Cluster created.

SQL> create index idx_test_id on cluster test;

Index created.

SQL> create table test_10(id number,name varchar2(32)) cluster test(id);

Table created.

SQL> create table test_20(id number,age number(3)) cluster test(id);

Table created.

SQL>drop index idx_test_id;

Index dropped.

SQL> select * from test_10 t1,test_20 t2 where t1.id=t2.id and t1.id=1;

select * from test_10 t1,test_20 t2 where t1.id=t2.id and t1.id=1

*

ERROR at line 1:

ORA-02032: clustered tables cannot be used before the cluster index is built

四、散列聚簇表

和索引聚簇表类似,不同的是使用散列函数代替聚簇索引;

五、临时表

临时表用来保存事务或会话期间的中间结果。临时表的数据只有对当前会话是可见,即使在当前会话COMMIT数据以后也是不可见的

SQL> create global temporary table temp_table_transaction on commit delete rows as

2 select *from scott.emp where 1=0;

表已创建。

SQL> create global temporary table temp_table_session on commit preserve rows as

2 select *from scott.emp where 1=0;

表已创建。

SQL> insert into temp_table_session select *from scott.emp;

已创建14行。

SQL> insert into temp_table_transaction select *from scott.emp;

已创建14行。

SQL> select session_cnt,transaction_cnt from

2 (select count(*) session_cnt from temp_table_session),

3 (select count(*) transaction_cnt from temp_table_transaction);

14 14

SQL> commit;

提交完成。

SQL> select session_cnt,transaction_cnt from

2 (select count(*) session_cnt from temp_table_session),

3 (select count(*) transaction_cnt from temp_table_transaction);

14 0

当断开会话,重新连接的时候会看到上面都是0,临时表比正常表产生的REDO少得多,由于临时表必须产生包含数据得UNDO信息,所

以会产生一定数量得REDO日志,UPDATE和DELETE产生最多得REDO日志,INSERT和SELECT产生得REDO日志最少;

expert one on one oracle,数据库表——EXPERT ONE-ON-ONE ORACLE相关推荐

  1. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

  2. Oracle数据库表设计时的注意事项

    Oracle数据库表设计时的注意事项  表是Oracle数据库中最基本的对象之一.万丈高楼从平地起,这个基础对象对于数据库来说,非常重要.因为其设计是否合理,直接跟数据库的性能相关.从Oracle数据 ...

  3. Oracle数据库查看表空间sql语句、查看Oracle数据库表空间剩余 、修改表空间、库备份

    一  Oracle数据库查看表空间sql语句 1.oracle查看表空间当前用户 SQL>  select  username,default_tablespace  from user_use ...

  4. Oracle 数据库表空间不足拓展方法实例演示,表空间剩余大小查看,通过新增表空间文件拓展表空间,表空间文件路径查看

    Oracle 数据库表空间 第一章:表空间的拓展 ① 查看剩余表空间大小 ② 查看表空间文件路径 ③ 通过新增表空间文件拓展表空间 ④ 查看表空间已分配大小 第一章:表空间的拓展 ① 查看剩余表空间大 ...

  5. linux数据库创建表空间语句,如何用LINUX用命令创建ORACLE数据库表空间和用户

    如何用LINUX用命令创建ORACLE数据库表空间和用户 文本模式下如何建 更新时间:2019-06-21 19:36 最满意答案 先su 到 oracle用户,SYS用户以DBA身份登陆 //创建临 ...

  6. 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件

    http://suan2046.iteye.com/blog/379539 标题:查看Oracle数据库表空间大小,是否需要增加表空间的数据文件 在数据库管理中,磁盘空间不足是DBA都会遇到的问题,问 ...

  7. oracle数据库中表被锁,Oracle数据库表被锁问题处理

    Oracle数据库表被锁问题处理 半仙 自动化运维 在操作Oracle数据库的时候,有时候会由于操作不当等引起数据库表被锁定,锁定后表不能修改,在前端直接反应就是业务无法正常操作,在pl/sql De ...

  8. 查询oracle表上重复的数据库,如何确定Oracle数据库表重复的记录

    正在看的ORACLE教程是:如何确定Oracle数据库表重复的记录. 作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示O ...

  9. 创建oracle 数据库表空间,角色,用户的sql语句

    创建oracle 数据库表空间,角色,用户的sql语句 1.创建角色 CREATE ROLE "QIUDINGROLE" NOT IDENTIFIED; GRANT "C ...

最新文章

  1. mllib逻辑回归 spark_Spark Mllib中逻辑回归
  2. 在docker中搭建apache Tomcat+JDK环境
  3. Bitcoin.com推出BCH新图表,加大对BCH的支持
  4. WebForms 开发基础
  5. Android 使用本地应用在线播放流媒体文件
  6. 算法训练营12-动态规划
  7. windows下adb shell命令杀进程方式
  8. 修饰符.lazy .number .trim
  9. [转]项目方面的做人处事
  10. websocket如何保持连接压力测试统计最后断开了几个链接
  11. 2021-10-14 矩阵求导相关
  12. 永久删除谷歌浏览器缩略图_“暮光之城”如何永久破坏了Google图片搜索
  13. sqlserver导入sql文件的方式
  14. 《Python+Kivy(App开发)从入门到实践》自学笔记:Python文件+.kv 文件实现“Hello world”
  15. 工具应用——Chrome浏览器 F12控制台中文改成英文
  16. PIBOT移植ROS2记录(2)-添加Node与cmd_vel
  17. 手机app数据爬取难度等级评估
  18. 163邮箱开启SMTP权限
  19. android 自定义铃声 代码,Android通过代码设置铃声
  20. 固态硬盘颗粒:SLC/MLC/TLC有什么区别?

热门文章

  1. ggplot2版聚类物种丰度堆叠图
  2. CSDN付费专栏写作感悟及成长之路、兼论学习会员模式的创作者协同效应
  3. Python使用matplotlib可视化华夫饼图(Waffle Chart) 、华夫饼图可以直观地显示完成度(百分比)或者部分占整体的比例、从不同的分类变量来可视化华夫饼图(Waffle Chart
  4. R语言psych包的corr.test函数计算相关性并给出所有相关性的显著性(Correlation matrix and tests of significance via corr.test())
  5. R语言ggplot2可视化基本散点图(设置X轴使用对数坐标)、并把成对的数据点用线条(line)连接起来、自定义配置线条颜色(Connecting Paired Points with lines)
  6. python包NiBabel对医学影像文件格式进行读写:python包NiBabel简介集示例
  7. R语言将多张可视化结果图像保存到PDF中实战:多图保存到同一PDF页、将多个绘图保存到PDF格式的不同页面
  8. 基因组测序数据分析:测序技术
  9. 第三章--数据链路层
  10. python用merge匹配和左连接_左手用R右手Python系列——数据合并与追加