举例讲解oracle表空间、段、区和块

上传人:第*** 文档编号:32820503 上传时间:2018-02-12 格式:DOCX 页数:5 大小:23.27KB
返回 下载 相关 举报
举例讲解oracle表空间、段、区和块_第1页
第1页 / 共5页
举例讲解oracle表空间、段、区和块_第2页
第2页 / 共5页
举例讲解oracle表空间、段、区和块_第3页
第3页 / 共5页
举例讲解oracle表空间、段、区和块_第4页
第4页 / 共5页
举例讲解oracle表空间、段、区和块_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《举例讲解oracle表空间、段、区和块》由会员分享,可在线阅读,更多相关《举例讲解oracle表空间、段、区和块(5页珍藏版)》请在金锄头文库上搜索。

1、举例讲解 Oracle 表空间、段、区和块Oracle 逻辑存储结构分为空间、段、区、块四种。表空间、段、区和数据块分别表示了Oracle 进行数据存储的不同层次和结构。本文首先讲解了对块、区、段、空间的理解,最后通过创建表空间 h2,并在表空间 h2 上创建表 regions,以及查询表空间、段、区,来进一步加深对表空间、段、区、块的认识。1、 Oracle 数据块( Oracle Data Block)数据块 Block 是 Oracle 数据信息的最小逻辑存储单元。注意,这里说的是 Oracle 环境下的最小单位。Oracle 也就是通过数据块来屏蔽不同操作系统存储结构的差异。无论是Wi

2、ndows 环境,还是 Unix、Linux 环境,其操作系统存储结构和方式、甚至字符排列的方式都是不同的。Oracle 利用数据块将这些差异加以屏蔽,全部数据操作采用对 Oracle 块的操作,相当于是一个层次的抽象。 Oracle 所有对数据的操作和空间分配,实际上都是针对数据块 Block 的操作。我们从数据表中搜索出一行,实际中 Oracle 就会从内存缓冲区(或者硬盘)中读取到该行所在的数据块,再返回这数据块上的指定数据行。Oracle 无论是在缓冲区,还是在硬盘,进行数据操作的最小单位都是数据块。 数据块是有大小的,在一个数据库建立的时候,通过参数进行设置。注意,在 Oracle

3、数据库参数中,只有数据块大小的参数是建库之后不能进行修改的。数据块的大小,在一个数据库中可以支持多个。数据块的大小是通过 kb 字节个数来指定的,默认为 8KB。相关参数为 db_block_size,下面是查看 block 大小的语句。SQL show parameter db_block_size;NAME TYPE VALUE- - -db_block_size integer 8192 设置数据块的大小是依据不同类型的系统的。如果数据块设置比较大,那么一次读取的数据行较多,相应对 SGA 内存消耗比较大,特定查询引发的换入换出可能较多。如果设置的过小,频繁的 IO 逻辑物理读也会引起性

4、能问题。与数据块有关系的另一个参数就是 db_file_multiblock_read_count,表示一次从物理存储中读取的数据块数量。对一些数据挖掘系统,可以考虑调节此参数略大一些。2、比 block 更高的一个单位,区 extent。区 extent,是比数据块大一级的存储结构,表示的是一连串连续的数据块集合。我们知道,物理存储通常是随机的读写过程。即使在同一个文件里,我们也不能保证相同的一个信息是存储在绝对连续的物理存储空间的。Oracle 数据存储同样如此。 在进行存储数据信息的时候,Oracle 将分配数据块进行存储,但是不能保证所有分配的数据块都是连续的结构。所以,出现分区 ex

5、tent 的概念,表示一系列连续的数据块集合。视图 dba_extents(或者 all_extents、user_extents )是我们研究区结构的重要手段。SQL desc dba_extents;名称 类型 是否为空 - - - OWNER VARCHAR2(30) SEGMENT_NAME VARCHAR2(81) PARTITION_NAME VARCHAR2(30) SEGMENT_TYPE VARCHAR2(18) TABLESPACE_NAME VARCHAR2(30) EXTENT_ID NUMBER FILE_ID NUMBER BLOCK_ID NUMBER BYTES

6、 NUMBER BLOCKS NUMBER RELATIVE_FNO NUMBER 从视图结构中,我们可以清晰看出区的几个特点。首先,分区是带有段特定性的。数据段 segment 是区的上层组织单位,一个数据库对象对应一个 segment,数据库对象是归属在不同的 schema(owner)上的。所以,通过不同的数据段名称、不同的 owner,乃至不同的 tablespace 表空间信息,就可以定位到数据区extent 的信息描述。其次,另一部分信息是关于该区 extent 的分配信息,如所在文件编号,起始数据块 block编号和数据块数量等内容。3、数据段 segment数据段是与数据库对象

7、相对应,一般一个数据库对象对应一个数据段。多个 extent 构成一个数据段,每个数据段实际上就是数据库一个对象的代表。从 dba_segments 视图中,可以看清数据段的结构。SQL desc dba_segments;名称 类型 是否为空 说明 - - - -OWNER VARCHAR2(30) SEGMENT_NAME VARCHAR2(81) PARTITION_NAME VARCHAR2(30) SEGMENT_TYPE VARCHAR2(18) TABLESPACE_NAME VARCHAR2(30) HEADER_FILE NUMBER HEADER_BLOCK NUMBER

8、BYTES NUMBER BLOCKS NUMBER EXTENTS NUMBER INITIAL_EXTENT NUMBER NEXT_EXTENT NUMBER MIN_EXTENTS NUMBER MAX_EXTENTS NUMBER PCT_INCREASE NUMBER FREELISTS NUMBER FREELIST_GROUPS NUMBER RELATIVE_FNO NUMBER BUFFER_POOL VARCHAR2(7) 从类型列的说明信息中,可以看出数据段的类型是多样的。任何种类的数据库对象,本质上都是一种数据段。数据表、索引、回滚、聚集这些都是数据段的一种表现形式。

9、同时,数据段是在数据对象创建的时候就已经创建出来,随着对象体积的增大,而不断分配多个extents 进行管理。另外可看出该数据库对象分配的空间大小和数据块、分区个数。使用这个视图,可以方便的获取到指定 schema 的所有对象大小。SQL select owner,sum(bytes)/1024/1024 as vol, sum(blocks) as totalblocks,sum(extents) as totalextents from dba_segments group by owner having owner=SYS;OWNER VOL TOTALBLOCKS TOTALEXTEN

10、TS- - - -SYS 819.25 104864 4151上面查询,说明 SYS 的 schema,所占用空间 819.25MB,包括 104864 个数据块和 4151 个分区。 一个对象创建出来之后,在 segment 层次上是分配一个分区 extent 和八个数据块 block。有一个问题需要注意,通常我们的数据段是与数据对象相关。一个数据对象对应一个segment。但是,分区表的时候,一个分区要对应一个 segment 对象。还有就是,segment对象是可以指定存储在那个表空间里,实现存储划分的基础也就在于此。不同的 segment划分建立在不同的表空间里,才有可能存放在不同的文

11、件中,最后分布在不同的物理存储。分区实际上就是存在分开存储的可能。一般一个对象是不会跨物理存储进行存放的,分区表是对应的多个 segment。所以,分区表分开存储空间是可能的。4、表空间 tablespace表空间 TableSpace,是存储结构中的最高层结构。建立一个表空间的时候,需要指定存储的文件。一个表空间可以指定多个数据文件,多个文件可以在不同的物理存储上。也就是说,表空间是可以跨物理存储的。但是有一点就是,表空间下一级对象数据段的存储,是不能指定存储在那个文件里的。所以,要想让数据对象访问 IO 负载均衡,需要指定不同的数据对象在不同的表空间里。这也就是为什么将数据表和索引建立在不

12、同的表空间的原因。表空间通过 v$tablespace 进行访问。SQL desc v$tablespace;名称 类型 是否为空- - -TS# NUMBER NAME VARCHAR2(30) INCLUDED_IN_DATABASE_BACKUP VARCHAR2(3) BIGFILE VARCHAR2(3) FLASHBACK_ON VARCHAR2(3) ENCRYPT_IN_BACKUP VARCHAR2(3) 相对于前面的结构视图,表空间视图的结构要简单的多,只是一些描述信息。其中两个参数需要注意一下。一个是 bigfile,是一个标志位,标志表空间是不是所谓的大文件表空间。大文

13、件表空间是在 10g 中推出的一个新特性,处于性能考虑,可以设置表空间为大文件表空间,存储 32T的数据,但是要求数据文件只能有一个。另一个是 flashback_on,表示表空间的闪回特性是否开启。要注意,数据表段区块的概念集合,很容易与 schema 的结构相混淆。 schema 是一个组织概念,是来自于经典数据库理论范畴。在 oracle 中,Schema 就是一个组织概念,一个 user对应的就是一个 schema。schema 是逻辑对象的集合组织,同表空间等概念不是一个层面的。在一个 schema 里,是可以将对象建立在任何数据表空间内的,只有一个默认表空间的概念 default tablespace。指定默认表空间是在创建用户的时候指定的。5、举例说明SQL create tablespace h2 datafile d:appadministratororadatah2_1.dbf size 5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号