***oracle点知识2——数据扩展的分配和回收管理

1、如何决定数据扩展分配的数量与容量:

每个段的定义中包含了数据扩展的存储参数,这个参数可以表征数据创建表或者索引的时候为数据扩展分配多少数据块,或者限定 一个表(一个数据段)最多可以有多少 数据扩展。我们可以在 CREATE TABLE 语句中用STORAGE子句设定这个参数,如果没有设定,那就用这个段所在表空间的默认参数。

在本地管理表空间中,一个数据扩展的容量可以使手工设定的固定值,也可以是系统自动设定的可变值,注意:这是在创建表空间时就设定好的跟上面的在段内的存储参数是不一样的。在创建表空间的时候,可以用UNIFORM 这个设定固定值,也可以用AUTOALLOCATE设定为可变值。

  • 对于固定容量(UNIFORM)的数据扩展,用户可以为数据扩展设定容量或使用默认大小(1 MB)。用户须确保每个数据扩展的容量至少能包含5个数据块(database block)。本地管理(locally managed)的临时表空间(temporary tablespace)在分配数据扩展时只能使用此种方式。
  • 对于由系统管理(AUTOALLOCATE)的数据扩展,由Oracle决定新增数据扩展的最佳容量,其最小容量为 64 KB。如果创建表空间时使用了“segment space management auto”子句,且数据块容量大于等于
    16 KB,Oracle扩展一个段时(segment)所创建的数据扩展的最小容量为 1 MB。对于永久表空间(permanent tablespace)上述参数均为默认值

在本地管理的表空间(locally managed tablespace)中,INITIAL,NEXT,PCTINCREASE,和 MINEXTENTS 这四个存储参数可以作用于段(segment),但不能作用于表空间。INITIAL,NEXT,PCTINCREASE,和 MINEXTENTS 相结合可以用于计算段的初始容量。当段容量确定后,Oracle使用内部算法确定其中每个初始数据扩展(extent)的容量。

2、数据扩展如何被分配:

oracle根据表空间的管理方式不同,分为本地管理或者数据字典管理,现在除了system表空间意外,基本上都是本地管理。

所以我们只说本地管理表空间数据扩展的分配方式:对于本地管理的表空间,当需呀新的数据块来存储数据的时候,首先选择一个数据此表空间的物理的数据文件,然后搜索此数据文件的位图,查找连续的数据块。如果此数据文件中没有足够的空间用来存储数据,那oracle会继续查找下一个数据此表空间的数据文件。

3、数据扩展的回收:

oracle提供了一个叫segment advisor的工具,他能依据方案对象内存储空间的碎片程度判定是否需要回收数据扩展。

一般情况下,在oracle移除一个方案对象之前,这个方案对象里的数据扩展是不会被回收的,也就是说,你只要分配给人家了,人家还没死,你就不能要会来。但是,有几个很不地道的情况还是可以要会来的。来咱看看:

1) 表、簇表的所有者,或者拥有delete any权限的用户,可以使用一个DDL语句 叫 TRUNCATE ....DORP STORAGE 语句将表或者簇表的语句清除。这时,里面的段就可以回收了。。人家还没死呢。。哎。。

2)一个段中如果有没有使用的数据扩展,dba可以用一个语句来收集回来:

ALTER TABLE table_name DEALLOCATE UNUSED.

3)如果用户为回滚段(rollback segment)设定了 OPTIMAL 参数,Oracle将周期性地从其中回收数据扩展。

数据扩展被释放后,oracle会修改数据文件中的位图,将新释放的数据扩展视为可用空间,其内的数据无法被访问。

4、看几个特殊情况:

1、簇表中的数据扩展:因为整个簇才是一个段,所以当oracle移除(drop)一个簇表中的表时,其中的数据扩展不会被回收,如果想回收,那只能通过移除(truncate)整个簇表来实现。(哈希簇表除外,这个以后研究他)

2、物化视图及其日志的数据扩展回收与表是一样的,不再做重复介绍。

3、索引的数据扩展,只要索引存在,那就不会被回收,但是删除了索引,或者将索引对应的表删除之后,索引就会被自动回收了。

4、临时表中临时段的数据扩展管理:当Oracle执行完一个 SQL 语句,且在执行过程中使用的临时段(temporary segment)时,Oracle自动地移除(drop)临时段,并将属于此临时段的数据扩展(extent)空间还给临时段所在的表空间(tablespace)。当用户执行单一排序(single sort)语句时,Oracle将在此用户的临时表空间(temporary
tablespace)中创建为这个排序服务的临时段(temporary segment),并在执行后将此临时段使用的数据扩展回收。但是对于多重排序(multiple sort),可能会使用临时表空间(temporary tablespace)中专为排序而创建的排序段(sort segment)。在每个实例中只会分配一个排序段,在排序操作使用后也不会被回收,而是继续供以后的多重排序使用。同一会话或同一事务的多个
SQL 语句,有可能共同使用一个临时表(temporary table)的临时段(temporary segment)存储临时数据。在这种情况下,Oracle在会话或事务结束后 才移除(drop)临时段,并为临时段所在表空间回收使用的数据扩展(extent)。

5、回滚段的数据扩展管理:Oracle周期性地检查数据库回滚段(rollback segment)的容量是否超过了最优值(optimal size)。如果回滚段超过了这个最优值(即回滚段中的数据扩展(extent)过多),Oracle将自动地从回滚段回收一些数据扩展。

时间: 2024-09-12 16:12:03

***oracle点知识2——数据扩展的分配和回收管理的相关文章

***oracle点知识3——数据段和索引段管理

在Oracle数据库中,段往往被用来存储特定逻辑对象的所有数据.如当建立数据库表或者索引时,Oracle就会为这些对象分配存储空间,以存放他们所需要的信息.段是由一个或者多个区组成的.不要看段是Oracle数据库中一个不起眼的角色,其实,在其中,仍然隐藏着许多不为人知的管理技巧.若数据库管理员能够掌握这些内容,或许,其工作会变得轻松许多. 技巧一:对大表执行分区段. 表分区段用于存储分区表中某个分区的数据.如把某一个表分为几个区,每个区就对应一个表分区段.这么设置是可行的.因为根据段管理规则,在

***oracle点知识1——数据块总结

(一) 一直以来对"块"的概念总是含混不清,从字面意义理解,只知道这是ORACLE存放数据的最小单位,然而它的内部世界如何呢,本人打算从今天开始连载几篇文档,对它进行深度分析. 通过很多文档.资料,了解到了数据库基本结构鱼刺图: 基本上每个对象对应一个段( Segment),只有分区对应多个段,这里的对象包括table,index,partition等等,段可以跨越多个数据文件. 每个段又有多个区(extent)来组成,这些区不能跨越多个数据文件,同时在系统使用过程中自动扩展. 最后是

Oracle基础知识-数据迁移

我们常需要对Oracle数据库进行迁移,迁移到更加高级的主机上.迁移到远程的机房上.迁移到不同的平台下 一.exp/imp: 这也算是最常用最简单的方法了,一般是基于应用的owner级做导出导入. 操作方法为:在新库建立好owner和表空间,停老库的应用,在老库做 [sql] view plaincopyprint? exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000 传dmp文件到新库,在新库做 [sql

Oracle 表空间与数据文件

--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时段-->如临时表数据与排序段                      回滚段-->用于事物回滚或闪回内存的撤销数据     表空间分类:系统表空间(sys

[Oracle入门级]知识概况

oracle各个版本间的主要技术更新 oracle 8 增加数据库创建和存储对象 oracle 8i 整体性能提升 oracle9i 实施应用集群 oracle 10g 支持网格计算 oracle 11g 自我调整 自我管理 oracle后缀中的字母含义: i : 包含internet部署的新功能 g: 专注于新兴的网格计算模型 c: 云服务 cloud oracle中数据库与实例的概念 数据库:信息的物理存储.数据库是物理的,由存储在磁盘中的文件组成 实例:服务器上运行的软件,提供了对数据库的

Oracle基础知识-启动Oracle常见疑难问题分析

实例和数据库的启动与关闭是DBA的重要职责之一.只有打开数据库,其他用户才能对数据库中的数据进行操作.一旦数据库关闭,便不能对其操作.对于DBA们来说,关闭和重新启动数据库以便优化.调整应用程序的运行是经常碰到的事情.如果用户已经进入了数据库,使用SHUTDOWN IMMEDIATE 或SHUTDOWN ABORT命令来执行关闭数据库,则用户将失去连接,直到数据库重新启动.经常关闭和启动会对数据库性能造成一定的影响,当然也会影响到用户对数据库的使用.本文从管理数据库的角度来分析在Oracle启动

Oracle基础知识-SQL简单命令

SQL语句包括两个部分:1 DDL 数据定义语言 2 DML 数据控制语言 DDL: create:创建一个表 [html] view plaincopyprint? create table b( clob char(1) ); alter:增加已经定义的表列的分配 drop:删除一个表 desc:查看一个表的定义 DML: selelct: [html] view plaincopyprint? select * from b; insert: [html] view plaincopypr

VMware发布大数据扩展 试图虚拟化Hadoop

VMware近日宣布,将允许用vSphere来管理Hadoop集群.这样一来,成千上万的VMware企业客户将能够使用他们已经熟悉的软件来控制Hadoop部署.从技术方面说,这提高了该公司在虚拟化基础设施运行Hadoop节点的水平,同时将虚拟化的优势带到了大数据平台. VMware日前推出了VMware vSphere Big Data Extensions(大数据扩展),这将允许该公司广受欢迎的基础设施管理软件来控制企业客户建立的Hadoop集群.该扩展仍然需要一个基础Hadoop平台,Hor

oracle清空所有表数据_oracle

方法: 1. 删除所有外键约束 2. drop表 3. 添加外键约束 代码使用powerdesign生成 /*==============================================================*/ /* DBMS name: ORACLE Version 10g */ /* Created on: 2013/8/16 14:30:03 */ /*=======================================================