1 / 74

第九讲 数据库逻辑结构

第九讲 数据库逻辑结构. 本章学习目标 Oracle 对逻辑存储结构和物理存储结构的管理是分别进行的, Oracle 的逻辑存储结构能够适用于不同的操作系统平台和硬件平台。本章介绍 Oracle 数据库的逻辑结构,即表空间、扩展区、段和数据块的概念及管理方法。. 学习内容. 9.1 数据库逻辑结构概述 9.2 数据块 9.3 扩展区 9.4 段 9.5 表空间及其管理. 9.1 数据库逻辑结构概述. 9.1.1 逻辑结构 9.1.2 逻辑结构与物理结构的对应关系. 表空间. 段. 数据块. 扩展区. 数据文件. 数据库.

axl
Download Presentation

第九讲 数据库逻辑结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九讲 数据库逻辑结构 本章学习目标 Oracle对逻辑存储结构和物理存储结构的管理是分别进行的,Oracle的逻辑存储结构能够适用于不同的操作系统平台和硬件平台。本章介绍Oracle数据库的逻辑结构,即表空间、扩展区、段和数据块的概念及管理方法。

  2. 学习内容 • 9.1 数据库逻辑结构概述 • 9.2 数据块 • 9.3 扩展区 • 9.4 段 • 9.5 表空间及其管理

  3. 9.1 数据库逻辑结构概述 • 9.1.1 逻辑结构 • 9.1.2 逻辑结构与物理结构的对应关系

  4. 表空间 段 数据块 扩展区 数据文件 数据库

  5. 数据存储单位 • 数据块 最小的逻辑存储单位,由多个操作系统块组成 • 扩展区 一组连续的数据块 • 段 有共同结构的一个或几个扩展区,数据对象(Table, Index, 等)以 段的形式存在

  6. 表空间 逻辑上用来保存各种段,物理上由多个操作系统文件组成。 • 文件 属于某个表空间的物理文件

  7. 逻辑结构与物理结构的对应关系 数据库 表空间 数据文件 段 扩展区 操作系统块 数据块

  8. 从物理上看,一个数据库是由一到多个数据文件(data file)组成;一个数据文件是由一到多个操作系统块(os block)组成。 • 从逻辑和物理存储结构的联系来看,一个表空间是由多个数据文件组成,一个数据文件是由多个扩展区组成,一个数据库块是由多个操作系统块组成。 • 一个数据库块是Oracle最小的逻辑存储单位,一个操作系统块是进行I/O的最小单位。

  9. 9.2 数据块 • 9.2.1 数据块的概念与结构 • 9.2.2 块空间的使用及存储参数 • 9.2.3 行链接和行迁移

  10. 数据块 (BLOCK) 9.2.1 数据块的概念与结构 块管理数据 空闲空间 行数据

  11. 块管理数据的结构 包含一般的块信息,如块的地址,所属段的类型等 块头 包含块中存储数据所属表的信息 表目录 包含数据区每行数据的地址 行目录

  12. 数据块概念小结 • 数据块为Oracle分配、读或写的最小的存储单元,又称逻辑块或ORACLE块。 • 一个数据块对应一个或多个从现有数据文件中分配的操作系统块,每个Oracle数据库的数据块大小由初始化参数db_block_size在创建数据库时指定。 • 数据块的大小应该是操作系统块的整数倍,数据块大小的最大值取决于操作系统

  13. 9.2.2 块空间的使用及存储参数

  14. 空闲空间 空闲空间 行数据 块管理数据 PCTFREE = 20% PCTUSED = 40%

  15. PCTFREE=20 PCTUSED=40 Inserts Inserts 80% 1 2 80% Inserts Inserts 40% 3 4 块空间的使用

  16. PCTFREE PCTFREE参数给出保留空间的最小百分比,用于行的UPDATE操作。在遭遇到PCTFREE后,这块被填满且不能进行INSERT操作。

  17. PCTFREE的影响 1、可把块填 得较满 2、易引起行迁移 低 PCTFREE 1、剩下多的空间给以后修改用 2、需更多的块存数据 3、减少行链和重组数据的代价 高

  18. PCTUSED 当块中数据加上头和目录数据的百分比小于PCTUSED时,可以插入数据。

  19. 数据块(Block)的存储参数 默认值:Pctfree 10 Pctfree, Pctused互相消涨, 其和不超过100Pctused 40 Inittrans 1或 2 单一块中最初活动的事务数Maxtrans 255 单一块中最大事务数 常见的几种分配方案: 大量Update操作 Pcrfree 20 Pctused 40 大量Insert, Select, 少量Update Pctfree 5 Pctused 60 体积大的表, Select较多 Pctfree 5 Pctused 90 仅仅用于查询的 Pctfree 0

  20. 9.2.3 行链接和行迁移 • 行链接发生于插入时 行太长,数据块放不下,该行数据存放在该段的多个数据块中 • 行迁移发生于修改时 修改后行变长,空闲空间不够,该行数据被整个迁移到另一个数据块中。

  21. 行迁移 After update Before update

  22. 9. 3 扩展区 • 9.3.1 扩展区的概念 • 9.3.2 扩展区的分配和释放 • 9.3.3 扩展区的参数设置

  23. 9.3.1 扩展区的概念 • 一个区是一组连续的Oracle块。 • Oracle按区向段分配空间,当段创建后,它至少由一个区组成。区是Oracle存储分配的最小单位。 • 一个区不能跨越数据文件,一个区只能惟一地属于一个数据文件。

  24. 9.3.2 扩展区的分配和释放 • 下述情况下向段分配扩展区 • 段创建时 • 扩展时 • 下述情况下从段释放扩展区 + 删除对象时 (Drop) + 清空数据时(Truncated) + 自动改变大小时 (仅对回滚段)

  25. 9.3.3 扩展区的参数设置 initial 最初分配的空间 next 下一步分配的空间数 maxextents 段生成时最大分配extent数 Minextents 段生成时最小分配extent数 pctincrease 增长率 optimal 尽量设小 (缺省为空,仅用 回滚段) 决定extent的参数

  26. 表空间、表、索引、分区、快照、快照日志 的存储参数 默认值 最小值Initial 5个数据块 2个数据块Next 5个数据块 1个数据块Minextents 1 1Maxextents 根据数据块大小而定 1Pctincrease 50 0 推荐使用:大小一致的, 增长率较低存储分配 initial = next表空间的 pctincrease 1其它数据对象 pctincrease 0

  27. 存储参数的设定规则 • 对象级的存储参数设置值覆盖表空间级的设置 • 未在对象级设置存储参数,由表空间级的设置决定 • 未在表空间级设置存储参数,由Oracle数据库级参数设置决定 • 存储参数改变后,新的选项只针对未分配的extents有效。

  28. 9. 4 段 • 9.4.1 段的概念 • 9.4.2 段的分类 • 9.4.3 查询段信息

  29. 9.4.1 段的概念 • 段是为表空间内特定逻辑存储结构分配的空间。例如分配给表的所有存储空间是一个段。 • 段无法跨越表空间,但是段可以跨越属于一个表空间的多个数据文件。 • 每个段由一个或多个区组成。 • DBA_SEGMENTS中保存段的有关信息

  30. 9.4.2 段的分类 • 数据段 一个数据段可存放一个未经分区的表或聚簇,也可以存放表的一个分区。 • 索引段 保存索引中的索引条目 • 临时段 存放排序操作中生成的临时表的数据 • 回滚段 存放事务所修改数据的旧值,当进行回退操作或实例失败时使用。

  31. 9.4.3 查询段信息 • DBA_SEGMENTS • 一般信息 • OWNERSEGMENT_NAME • SEGMENT_TYPE • TABLESPACE_NAME • 大小 • EXTENTS • BLOCKS • 存储参数 • INITIAL_EXTENT • NEXT_EXTENT • MIN_EXTENTS • MAX_EXTENTS • PCT_INCREASE

  32. 获得已用子段的信息 • DBA_EXTENTS • 标识信息 • OWNER • SEGMENT_NAME • EXTENT_ID • 位置和大小 • TABLESPACE_NAME • FILE_ID • BLOCK_ID(该区的第一个块的块号) • BLOCKS

  33. 检查空闲子段的信息 • DBA_FREE_SPACE • 位置和大小 • TABLESPACE_NAME • FILE_ID • BLOCK_ID(该文件自由段的第一个块号) • BLOCKS (该自由段占用的块数)

  34. 9. 5 表空间及其管理 • 9.5.1 表空间的概念 • 9.5.2 表空间分类 • 9.5.3 表空间的存储管理方式 • 9.5.4 表空间管理

  35. 9.5.1 表空间的概念 • 从逻辑上看,数据库中的数据存储在表空间中,而从物理上看,则是存储在与表空间对应的数据文件中。 • 在一个表空间中可以有多个同它有关联的数据文件,但一个数据文件只能属于一个表空间,表空间的大小是它所对应的数据文件大小的总和。

  36. 9.5.2 表空间分类 • 系统表空间 在创建数据库时,Oracle将会创建SYSTEM表空间。所有数据词典对象都存储在这一表空间中。一般不放用户的数据,但是用户脚本,如过程,函数,包等却是保存在数据字典中的。

  37. 非系统表空间 (1) 临时表空间:存放用户的排序等临时 数据,临时段占有的空间会在下次系统启动的时候全部被释放 (2) 回滚段表空间:临时存放修改前的数据 (3) 用户表空间:一般是由用户建立,来存取用户数据(包括索引)的表空间。

  38. 多个表空间的优势 • 将数据字典与用户数据分离开来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突。 • 将回退数据与用户数据分离开来,避免由于硬盘损坏而导致永久性的数据丢失。 • 将表空间的数据文件分散保存到不同的硬盘上,平均分布物理I/O操作。

  39. 能够将某个表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份和恢复。能够将某个表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份和恢复。 • 能够将某个表空间设置为只读状态,从而将数据库的一部分设置为只读状态。 • 能够为某种特殊用途专门设置一个表空间,比如临时表空间等,以优化表空间的使用效率。 • 能够更加灵活地为用户设置表空间限额

  40. 9.5.3 表空间的存储管理方式 • 字典管理方式 表空间的扩展区管理信息保存在system表空间的数据字典中,称为“字典管理方式”。 • 本地管理方式 在本地管理的表空间中,每个数据文件内都维护一个位图,以了解该数据文件内块的空闲或使用状态,被称为“本地管理方式”。

  41. 9.5.4 表空间管理 • 9.5.4.1 创建表空间 • 9.5.4.2 修改表空间 • 9.5.4.3 删除表空间 • 9.5.4.4 表空间及数据文件信息查询 • 9.5.4.5 注意问题

  42. 9.5.4.1 创建表空间 • 创建字典管理表空间 • 创建本地管理表空间 • 创建临时表空间

  43. 创建字典管理表空间 CREATE TABLESPACE testspace DATAFILE ‘f:\orcl\testspace1.dbf' SIZE 100M , ‘f:\orcl\testspace2.dbf' SIZE 100M DEFAULT STORAGE (INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) EXTENT MANAGEMENT DICTIONARY;

  44. 创建本地管理表空间 • 不能指定create tablespace的default storage和minimum extent子句。 • 所有段的初始区和后续区可以具有统一的大小(UNIFORM),也可以由Oracle来自动决定后续区的大小和增加方式(AUTOALLOCATE)。 CREATE TABLESPACE user_data DATAFILE ‘f:\orcl\user_data_01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;

  45. 创建临时表空间 如果没有为数据库用户指定一个专门的临时表空间,这些临时数据在默认情况下将存储在system表空间中,这样做的结果是会占用system表空间的存储空间,并且频繁地分配和释放临时段会在system表空间中产生大量的存储碎片,从而影响整个数据库的性能。为了避免在system表空间内存储临时数据,DBA应当在数据库中创建一个专门用来存储临时数据的临时表空间,

  46. 创建字典管理的临时表空间 create tablespace temp datafile ‘f:\orcl\temp01.dbf’ size 300M default storage (initial 2M next 2M pctincrease 0 maxextents unlimited) extent management dictionary temporary;

  47. 创建本地管理的临时表空间 create temporary tablespace temp tempfile ‘f:\orcl\temp_01.dbf’ size 500M extent management local uniform size 10M;

  48. 9.5.4.2 修改表空间 • 改变表空间存储设置 • 改变表空间状态 • 改变表空间尺寸 • 重定位数据文件

  49. 改变表空间存储设置 • 使用命令alter tablespace命令来改变表空间的缺省存储定义 Alter TABLESPACE tablespace { minimum extent integer [k|m] | default storage_clause} 例1:将表空间中区的最小尺寸定义为2M alter tablespace app_data minimum extent 2m;

  50. 例2:将表空间的缺省存储参数定义为第一个区大小2M,第二个区大小2M,每个段最多分配999个区例2:将表空间的缺省存储参数定义为第一个区大小2M,第二个区大小2M,每个段最多分配999个区 alter tablespace app_data default storage{ initial 2m next 2m maxextents 999);

More Related