




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 ORACLEORACLE 的数据存储管理的数据存储管理 一一 序言序言 对于 ORACLE 系统而言 它的存储可以分为物理存储和逻辑存储 物理 存储的最小单位为 DATA BLOCK 数据块 ORACLE 每一个模式对象都有一 个逻辑存储 它就叫做段 SEGMENT 而它实际上也是由多个数据块构成 这是指段的物理构成 段在逻辑上是由多个范围 EXTENT 构成 在上述 三个概念之上 对于数据库的物理和逻辑构成还有两个更大的概念 它们 就是表空间 TABLESPACE 和数据文件 DATA FILE 对于一个数据库实 例 INSTANCE 它在物理上是由多个数据文件构成 在逻辑上是由多个表 空间构成 一个表空间至少拥有一个数据文件 而一个数据文件只能属于 一个表空间 二二 基本概念基本概念 1 1 数据块数据块 数据块 DB BLOCK 是数据库中最小的 最基本的存储单元 它们是 数据库能分配给对象的最小的存储单元 ORACLE 数据块是 ORACLE 能从磁盘 读或写的最小单元 不要把 ORACLE 数据块和操作系统块混淆在一起 操作 系统块是操作系统能从磁盘读或写的最小单元 数据块容量总是操作系统 容量的整数倍 否则会浪费 I O 和空间 当 ORACLE 决定对一张表进行全表 扫描时 从磁盘读取数据的时候 读取数据的量总是数据块容量的整数倍 由为初始化参数 DB FILE MULTIBLOCK READ COUNT 的值与 DB BLOCK SIZE 的大小的乘积设定 2 2 范围范围 范围 EXTENT 是表空间中分配的相邻的数据块 当 ORACLE 需要为对象 分配空间时 总是把一些相邻的块当作一个范围来分配 避免每次都要为 快速增长的表或索引分配块 ORACLE 为对象分配的范围的大小是可控的 因此应该将范围的大小设置的足够大 以便对象不需要经常进行扩展 同 时 范围是不可以跨数据文件的 精品文档 2欢迎下载 3 3 段段 段 SEGMENT 包含表空间中一种指定类型的逻辑存储结构 是由一组范 围组成 在 ORACLE 数据库中主要有四种类型的段 数据段 索引段 回滚 段和临时段 数据段 对于每一个非聚集的表有一数据段 表的所有数据存放在该段 索引段 每一个索引有一索引段 存储索引数据 回滚段 用于临时存储要撤消的信息 临时段 当 SQL 语句产生的结果需要排序并且已经超出 SORT AREA SIZE 的大小时 ORACLE 在表空间中建立临时段存 储排序的数据 ORACLE 对所有段的空间分配 以范围为单位 4 4 表空间表空间 一个数据库划分成一个或多个逻辑单位 该逻辑单位称为表空间 TABLESPACE 表空间可以将相关的逻辑结构组合在一起 每一个 ORACLE 数据库包含一个名为 SYSTEM 的表空间 在数据库建立 时自动建立 在该表空间中包含有整个数据库的数据字典表 表空间利用增加数据文件或修改现在数据文件的大小可扩大表空间 表空间的大小为组成该表空间的数据文件的大小的和 5 5 数据文件数据文件 对于任何一个数据库实例而言 它都是由多个数据文件 DATA FILE 构 成 它是存储数据的基础 是 ORACLE 系统的物理概念 对于 ORACLE 系统 而言 它的数据文件大体上可以由两种设备构成 一是实实在在的操作系 统上的一个文件 一是创建于在存储阵列上的 RAW DEVICE 无论是文件还是 RAW DEVICE 它们同样都有如下限制和特性以及在它 们之上的操作 对于一个数据库实例而言 它所能拥有的最大数据文件的 数目是由多方面的因素构成 它们包括 操作系统能够打开的最大文件数 目 db files 的数目 建立数据库时的参数 maxdatafiles 数目 在上述参 数中 以操作系统的限制为主 其次为 maxdataflies 最后为 db files 也就是说如果操作系统允许打开的文件数为 32 而 maxdatafiles 设置为 48 的话 系统认为打开的文件数目最大为 32 如果操作系统允许最大的打 开文件数目为 64 maxdatafiles 数目为 32 db files 数目为 48 那么系 统的最大数目为 32 而不是 48 如果数据文件是操作系统的一个文件的话 那么 ORACLE 还承担操作系 精品文档 3欢迎下载 统要完成的任务 也就是完成创建文件的工作 但是对于 RAW DEVICE 而言 则必须先建好设备卷 VOLUMN 然后才能由 ORACLE 使用 三三 管理存储空间管理存储空间 1 1 对控制文件的管理对控制文件的管理 1 1 1 1 控制文件的作用控制文件的作用 控制文件是个二进制的文件 它包含以下信息 数据库名称 建立时 间 日志文件和数据文件位置 表空间名 日志的历史记录 备份信息 用在 8I 中 可以被 RMAN 使用 日志序号 检查点信息 由于控制文件 记录着数据库的一些非常重要的信息 因此 数据库每次做完物理修改后 都应该做一个控制文件的备份 在数据库 NOOPEN MOUNT 状态时 已经读入控制文件 但没有检查控 制文件中的文件是否存在 利用 ORACLE 的这个特点 我们能够在 MOUNT 状 态下对数据文件进行处理 比如让一个数据文件 ONLINE OFFLINE 或建立一 个新的数据文件 具体操作见 七 故障分析及处理 1 2 1 2 备份控制文件备份控制文件 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 该语句的功能是在初始化参数 USER DUMP DEST 所指定的路径下生成一 个跟踪文件 记录创建控制文件的 SQL 语句 ALTER DATABASE BACKUP CONTROLFILE TO FILE NAME 该语句的功能是在初始化参数 USER DUMP DEST 所指定的路径下生成一 个二进制的控制文件 2 2 对数据文件的管理对数据文件的管理 2 1 2 1 改变数据文件大小改变数据文件大小 一个数据文件在建立之后并不是说不可以改变该大小 同样可以通过命令 使该数据文件改变大小 首先 通过命令可以使数据文件在需要的时候自动扩 展 也就是说它能够自动扩大该文件 命令如下 alter database datafile filename autoexend on 其次是对于一个数据文件在使用过程中如果还有 大量的空间没有使用 那么可以从该数据文件回收空间 但是如果该数据文件 精品文档 4欢迎下载 是由 RAW DEVICE 构成 则即使是回收了空间 但是该空间也不能被其余使用 因为它是基于卷 VOLUMN 的管理 涉及到的命令如下 alter database datafile filename resize new size 该命令非常实用 因为在日常 的工作中 在创建一个表空间或往表空间中添加一个数据文件时 常常由于不 小心使小数点出错 此时就可以不必删除该数据文件 而只需使用该命令修改 数据文件的大小 同时对于达到对于文件数目最大限制的时候 如果不想修改 数据文件 那么就可以使用上述命令对已经存在的文件添加空间 2 2 2 2 数据文件改名数据文件改名 对于数据文件的改名 具体的操作步骤如下 首先要使数据库处于 NOOPEN 的状态下 STARTUP MOUNT 其次 在操作系统下拷贝要重命名的文件到另一文 件名 最后使用 alter database rename file filename1 to filename2 2 3 2 3 使数据文件在线或离线使数据文件在线或离线 命 令如下 alter database datafile datafile name offline drop online 当数据库没有运行在归档模式下 使数据文件离线要加 DROP 选项 要使离线的数据文件重新在线 要先进行介质恢复 recover datafile datafile name 3 3 对于表空间的管理对于表空间的管理 3 1 3 1 创建表空间创建表空间 在数据库中建立表空间 使用 CREATE TABLESPACE 命令 命令格式 如下 create tablespace 表空间名 datafile 文件说明 autoextend off on next size maxsize unlimited size minimum extent size default storage 存储参数 permanent temporary online offline 其中 DATAFILE 子句说明组成表空间的数据文件名及大小 精品文档 5欢迎下载 AUTOEXTEND 子句决定数据文件是否可以自动扩展以及扩展的限制 MINIMUM EXTENT 子句用于控制表空间中的空闲空间的碎片 限制 表空间中的空闲范围和使用范围的最小大小 也就是说表空间上每次分 配的范围最小要为 MINIMUM EXTENT 子句设置的大小 或者是它的整倍 数 这个参数对表空间上的存储的对象起作用 如 在建表空间的时候 指定 MINIMUM EXTENT 2M 如果在这个表空间上建表时指定存储参数 为 STORAGE INITIAL 1M NEXT 1M PCTINCREASE 0 那么通过查询 USER EXTENTS 可以看出 这张表的实际分配的每个范围均为 2M 而不是 STORAGE 参数中指定的 1M 注 MINIMUM EXTNET 在字典管理的临时表空间 dictionary managed temporary tablespace 上不起作用 PERMANENT TEMPORARY 子句指定表空间是永久性的还是临时性的 对于永久性的表空间 可以在上面建表 索引等 而在临时性的表空间 上不能建表 索引等 只充许存储排序时产生的临时段 如果临时表空 间采用临时性的 它的性能会高于采用永久性的表空间 因为在永久性 的临时表空间上分配的临时段 在不再使用时会被 SMON 进程清理掉 需 要的时候由系统重新分配 而临时性的临时表空间上只分配一个临时段 即使不用了也不清理 这样避免了系统分配临时段的开销 DEFAULT STORAGE 决定了今后建表或建索引时默认的存储策略 也 就是说如果没有修改建表或索引的参数时 系统就用该默认参数 其关 键字和参数说明 INITIAL 指定对象的第一个范围的大小 NEXT 指定分配给对象的下一个范围的大小 PCTINCREASE 指定第二个范围之后的每个范围比前一个范围的增长 的百分数 缺省值为 50 就是说 从第三个范围开始 每次扩展均为 NEXT 1 PCTINCREASE 100 为了能让 ORACLE 更好的整理数据碎片 因此建议该参数的值不能设得太大 但也不能设为 0 而应该设置为一 个较小的值 MINEXTENTS 指定分配给一个新建对象的最小范围数 其缺省值为 1 对于回滚段的缺省值和最小值为 2 MAXEXTENTS 指定 ORACLE 允许对象拥有的最大范围 可以指定一个 具体的数字 也可以用 UNLIMITED 3 2 3 2 修改表空间修改表空间 如果想修改一个已经存在的表空间 可以使用修改表空间的命令 ALTER TABLESPACE 通过该命令 可以做到 修改缺省的表空间的存储参数 命令如下 ALTER TABLESPACE tablespace name DEFAULT STORAGE 存储子 精品文档 6欢迎下载 句 修改后的存储参数只对以后在该表空间中新建的对象起作用 使表空间在线或离线 使表空间离线 OFFLINE 有以下三个选项 NORMAL 对表空间的所有数据文件执行一个检查点 表空间的 所有数据文件都必须在线 缺省的选项是 NORMAL TEMPORARY 对表空间的所有在线数据文件执行一个检查点 不 必保证所有的文件可写 将表空间返回到在线前 所有 的离线文件要求进行介质恢复 IMMEDIATE 不要确保表空间的文件可用 不执行检查点 将表 空间返回到在线前 必须执行介质恢复 3 3 3 3 增加表空间大小增加表空间大小 当一个表空间的大小不够时 除了通过前面的命令 ALTER DATABASE 修改数据文件的大小外 还可以往表空间中增加数据文件 命令如下 ALTER TABLESPACE tablespace name ADD DATAFILE datafile name SIZE datafile size 3 4 3 4 重新命名数据文件重新命名数据文件 在重命名时要使表空间离线 同时 该命令同样并不修改操作系统下 的文件名 只是修改控制文件中的数据文件名 操作步骤如下 使表空间离线 接着用操作系统的命令拷贝要重命名的数据文件到新 的文件 然后修改数据文件名 ALTER TABLESPACE tablespace name RENAME DATAFILE datafile 1 TO datafile 2 最后使表空间在线 3 5 3 5 开始或停止备份开始或停止备份 让表空间开始或停止备份主要是用于联机热备份 数据库要处于 ARCHIVELOG 模式 一次热备份的操作步骤如下 使表空间处于备份状态 在该状态下 不能使表空间正常离线 不能关 闭数据库 不能开始该表空间的另一个后备 ALTER TABLESPACE tablespace name BEGIN BACKUP 在表空间开始备份的时候 不能执行 TABLESPACE OFFLINE 精品文档 7欢迎下载 NORMALLY SHUTDOWN 数据库 除了 SHUTDOWN ABORT 或开始这个表 空间的另一个备份 然后拷贝与表空间相关联的数据库文件 接着退出表空间的备份状态 ALTER TABLESPACE tablespace name END BACKUP 执行 ALTER SYSTEM SWITCH LOGFILE 强制日志切换 使 ORACLE 创建 一个归档日志文件 备份归档日志文件 不备份联机重做日志文件 备份控制文件 热备份的内部机制 在发出 ALTER TABLESPACE BEGIN BACKUP 命令 时 属于该表空间的数据文件得到 HOT BACKUP IN PROGRESS 标志 该 命令将对热备份模式下的所有数据文件做断点检查 这意味着在热备份模 式下属于这些数据文件的任何脏缓冲区都写入磁盘 BEGIN BACKUP 并不是 让表空间处于 READ ONLY 的状态 用户还是可以修改处于备份状态的表空 间上的数据 但在热备份期间修改数据将产生大量的重做记录 ALTER TABLESPACE END BACKUP 命令创建一个包含开使备份检查点 SCN 的重做记 录 SCN 同时也是热备份数据文件的头 这就是 ORACLE 知道备份期间产生 的重做记录何时运用到文件的原因 换句话说 使用热备份时 在恢复期 间 DBA 至少要运用 BEGIN BACKUP 和 END BACKUP 命令之间产生的重做记录 以使备份数据文件保持连续 3 6 3 6 使表空间成为使表空间成为 PERMANENTPERMANENT 表空间或表空间或 TEMPORARYTEMPORARY 表空间表空间 当新建表空间时 默认为 PERMANENT 表空间 可以在表空间上存储数 据 而 TEMPORARY 表空间是不允计存储数据的 不允计把一个已经存储数 据的表空间改为 TEMPORARY 表空间 命令如下 ALTER TABLESPACE tablespace name PERMANENT TEMPORARY 3 7 3 7 让表空间可读写或只读让表空间可读写或只读 让表空间只读 可读写命令如下 ALTER TABLESPACE tablespace name READ ONLY WRITE 4 4 为对象设置存储参数为对象设置存储参数 4 1 4 1 表的存储参数表的存储参数 create table table name 精品文档 8欢迎下载 pctfree 整数 pctused 整数 initrans 整数 maxtrans 整数 tablespace 表空间名 storage 存储子句 参数说明 pctused 和 pctfree 参数 在建表时用到关于存储空间的管理参数是 PCTFREE 和 PCTUSED 此 两个参数控制了数据块中自由空间在插入和更新操作中的使用 这两个 参数构成了每一数据块的总体构成 PCTFREE 参数为块中保留的未用空间的百分数 用于修改已存在块 中的行 该参数指定块中保留出的空间用于数据的修改使用 PCTUSED 当一数据块为填满后 由 PCTFREE 决定 该块从 FREE LIST 中移走 不能考虑插入新行 但是当它使用低于 PCTUSED 参数时 又把它放到 FREE LIST 中 可以用来插入新行 上述两个参数的值的总和不能超 过 100 并且在这两个参数中又以 PCTFEE 最为重要 现把该参数重要 的原因解释如下 一个数据库表中的每一行以一行片 ROW PIECE 或 多个行片形式存储 如果一个整行可插入到单个数据块中 那该行初始 存储为一个行片 如果不能插入到单个数据块或者由于对已存在行修改 引起超出该块时 可能会发生两件事情 行链接 行迁移 如果发生 行链接 那么 一行就必须使用多个行片进行存储单行数据 一个数据 块通常对每一行仅包含一个行片 如果一行的所有部分可存放在一块中 则以一行片存储 如果数据在一个数据块中无法存放的话 而在其余块 中无法找到有足够的空间存放改行数据的话 那么就会发生行链接的问 题 ROW CHAIN 如果在其余块中能找到足够的空间存放该行的数据 那么 这一整行的数据就全部转移到另一能够容纳下该行数据的块中 这一现象叫做行迁移 ROW MIGRATION 发生行迁移时 数据要从一 个数据块移到另一数据块 在此情况下将加大系统 I O 的负担 在 ORACLE 数据库中对数据的查找是以 ROWID 进行查找的 如果发生行链 接的话 那么对于数据的查找将进行跨块查询 这将大大的增加系统的 I O 负担 对于上述提到的行链接问题 绝大部分是由于 PCTFREE 太小造成的 在发生行链接问题之后 就应该进行相应的处理 首先进行行链接问题 的确认 用如下语句可以查找哪些表发生了行链接问题 ANALYZE TABLE TABLE NAME LIST CHAINED ROWS INTO CHAINED ROWS 在做上 述操作之前需建立表 CHAINED ROWS 该表可通过脚本 UTLCHAIN SQL 来创 建 该脚本存放在 oracle home rdbms admin 下或在本地 ORAWIN95 目 录下的 orawin95 rdbms73 admin 下 在找到链接的行之后 就要对这 些数据进行处理 由于在 CHAINED ROWS 存放数据的 ROWID 那么就可 以把这些数据先存放在临时表中 然后把这些数据删除 修改表的 精品文档 9欢迎下载 PCTFREE 值 再把临时表的数据插入到表中 上述操作在表无主外键关 系时 相对容易处理 如果存在主外键关系的话 那么在删除数据之时 还应该把相应外键的数据删除 如果知道两条关于存储在表中的数据的信息 就可以用公式计算 PCTFREE 的适当值 需要的信息是第一次插入行时它们的平均长度和它 们达到最大长度时行的一平均长度 PCTFREE 100 最大长度 插入时的长度 最大长度 例如 如果一张表有一行在插入时平均长度为 153 字节 最大长度 为 180 字节 那么 PCTFREE 应该为 100 180 153 180 15 在上述两个参数中要综合进行考虑 不能片面的强求某一个参数的 值要多大 而忽略另一个参数 因此在日常设计中要把这两个参数综合 考虑 配合使用 通过合理配置这两个参数 希望达到下列目的 A 高写入数据和回收数据的性能 B 少数据块中未用的空间的数量 C 减少数据块之间行链接的数量 INITRANS 和 MAXTRANS 参数 INITRANS 参数决定了同时能够允许多少个事务对表或索引进行处理 也就是指定表的每一数据块中分配的事物项的初值 由于 ORACLE 在对 表或索引进行操作之前 对每一数据块的修改 都要在块中申请一个事 物项 该事物项的值的大小大约为 24 个字节 该参数保证可同时并发 修改块的最小事物数 它避免动态事物项的开销 如果该参数的值开的 太小的话 在 ORACLE 中并发操作的操作一多 那么系统将在此数据块 上加一个 BLOCK 数据块 级的锁 MAXTRANS 参数决定了最多能够同时允许多少个事务对表或索引进行 处理 ORACLE 允许在每一数据块上创建最多 255 个事务槽 一般来说 并不需要修改 MAXTRANS 参数的值 PCTINCREASE 参数 对于表及索引的 PCTINCREASE 均设为 0 让表或索引的扩展能够线 性增加 4 2 4 2 索引的存储参数索引的存储参数 索引没有 PCTUSED 参数 由于索引存储的特殊性 它的 PCTFREE 可以 设得很小 大多数索引分为两类 新索引项随机插入现有值中 或新索引项 总有一个比所有现在值大的值 前者经常在字符数据列上找到 后者通常 是数值主关键字列上的索引 用于一个序列发生器 在以随机次序插入值的索引中 极少的项存储在非常靠后的叶块中 而放在叶块的有序序列的某个叶块上 当这些块中的一个填满并且必须分 裂时 ORACLE 不会对将来可能在同一值域中添加的项作任何假设 因此 精品文档 10欢迎下载 它在中间分裂块 当前块留一半项而把另一半项移到新的叶块中 这样一 半对一半的分裂使新项的可用空间最大 落入第一部分值域的可能性与落 入第二部分的可能性一样大 当一个新索引项有一个比其他当前项更大的值 时 它将添加到索引 的最后叶块中 当这个块填满并要分裂时 ORACLE 可能无法完成一半对 一半的块分裂 如果新项有一个最大值 ORACLE 增加一个新叶块并把新 记录存储在它上面 在所有新项都有更大的值的索引中 这个模块将在新 叶块上提供最大的可能空间 这正是存储所有新项的地方 它还节省从当 前叶块移到一半项的开销 从而释放不会以任何方式再使用的空间 四四 数据存储的其它管理数据存储的其它管理 1 1 管理数据文件竞争管理数据文件竞争 在一个特殊时间段内 以比大多数其他文件高得多的频率访问的数据文 件称为热点 从调整角度看 热点应尽可能减少 大多数数据库服务器都 使用数据文件分布在许多磁盘驱动器上以极大地发挥并行 I O 的潜力 热 点导致少数几个磁盘驱动器满负额地运行 而大多数其它磁盘在那里闲着 如果一个磁盘满负荷运行 任何进一步的请求不得不在一个队列里等候服 务 因此 我们应该找出热点 把经常访问的数据文件分散在不同的磁盘驱 动器中 在 ORACLE 中 对每个数据文件的物理读取和物理写都记录在 V FILESTAT 查看每个数据文件的物理读写个数 就可以识别哪些数据文 件是热点 报告的物理读写值是从上次启动数据加时开始计数的 为了确 定一段特定时期的热点 必须比较这段时期开始和结束时的 V FILESTAT 视 图的内容 下面的 SQL 语句显示每个数据文件的物理读写值 并将物理存取的总数 排序 select name phyrds phywrts phyrds phywrts total from v filestat a v datafile b where a file b file order by total desc 查看这个 SQL 语句的结果顶部的数据文件 可以确定最常访问的物理设 备 如果顶部的数据文件都在同一物理磁盘驱动器或控制器上 应考虑把 它们移到不同的驱动器或控制器上 解决热点问题可以用几个方法 重建表空间 让表空间有更多的数据文件 文件规模更小 并位于 不同磁盘驱动器和控制器上 使用 RAID 技术 如 RAID5 精品文档 11欢迎下载 2 2 表空间数据碎片整理表空间数据碎片整理 表空间数据碎片的整理有三种方法 ORACLE 自动进行整理 方法是将表空间的存储参数 PCTINCREASE 值改为非 0 一般将其设为 1 命令如下 ALTER TABLESPACE tablespace name DEFAULT STORAGE PCTINCREASE 1 这样 ORACLE 的 SMON 进程便会将碎片自动合并 手工合并数据碎片 命令如下 ALTER TABLESPACE tablespace name COALESCE 通过 EXPORT IMPORT 工具进行 EXPORT 命令有一个参数是 COMPRESS 这个标志在读表时会引发 EXPORT 确定该表所分配的物理空间量 它会向输出的 DMP 文件写入一 个新的初始化存储参数等于全部所分配的空间 EXPORT 完后 跟据具 体情况删除数据库中的表或用户 再 IMPORT 表或用户到数据库中 3 3 表的高位标志表的高位标志 在每张表中 都有一个高位标志 来记录表的记录所到达的位置 如果 对一张进行全表扫描 那么 ORACLE 会扫描到该表的高位标志为止 而不管 该表的实际记录是多少 高位标志总是以 5 个数据块的大小来扩展 而且 只前进不后退 除非 TRUNCATE 表 DELETE 操作不影响表的高位标志 因此 我们有可能会碰到这种情况 统计一张表的记录有多少条 耗费了比较长 的时间 统计的结果却是 0 这就是因为表的高位标志设置的问题 在这种 情况下 我们可以进行 TRUNCATE 表 但 TRUNCATE 表时 该表不能被别的表 的外键关联 或该外键状态为 DISABLED 或者我们可以重建这张表 可以通过以下的 PL SQL 块查看表的高位标志信息 SET SERVEROUTPUT ON DECLARE OP1 NUMBER OP2 NUMBER OP3 NUMBER OP4 NUMBER OP5 NUMBER OP6 NUMBER OP7 NUMBER BEGIN DBMS SPACE UNUSED SPACE 用户 表名 TABLE OP1 OP2 OP3 OP4 OP5 OP6 OP7 精品文档 12欢迎下载 DBMS OUTPUT PUT LINE TOTAL BLOCKS OP1 DBMS OUTPUT PUT LINE TOTAL BYTES OP2 DBMS OUTPUT PUT LINE UNUSED BLOCKS OP3 DBMS OUTPUT PUT LINE UNUSED BYTES OP4 DBMS OUTPUT PUT LINE HWM OP1 OP3 1 END 4 4 表的条纹化表的条纹化 所谓的表的表的第纹化就是把表分在几个数据文件中 这几个数据文件 可以处在不同的磁盘下 从而提高 I O 性能 如 CREATE TABLESPACE TEST DATAFILE C DATAFILE FILE1 DBF SIZE 501M D DATAFILE FILE2 DBF SIZE 501M E DATAFILE FILE3 DBF SIZE 501M CREATE TABLE TEST TABLESPACE TEST STORAGE INITIAL 500M NEXT 500M PCTINCREASE 0 目前 大部分的主机都支持 RAID5 RAID5 本身已经把数据分散在各个 磁盘 无需手工进行条纹化处理 5 5 NOLOGGINGNOLOGGING 参数的使用参数的使用 NOLOGGING 参数的功能是只产生尽可能少的重算信息 不往日志文件里 写数据修改的信息 只记录系统数据字典修改的内容 从而提高往表里插 记录或建索引的速度 NOLOGGING 参数能影响的操作如下 DML 语句 INSERT INTO SELECT SQL LOADER DDL 语句 CREATE TABLE AS SELECT CREATE INDEX ALTER INDEX REBUILD ALTER INDEX REBUILD PARTITION ALTER INDEX SPLIT PARTITION ALTER TABLE SPLIT PARTITION ALTER TABLE MOVE PARTITION 但是 在 CREATE TABLE 或 CREATE INDEX 等命令完成后 以后再往 表里 INSERT DELETE UPDATE 记录时 还是会产生重算信息 索引也是一 精品文档 13欢迎下载 样 因此 如果在建表或建索引时 表里没有数据 NOLOGGING 就没有什么 效果了 五五 估计空间需求估计空间需求 在创建新的表或新的索引时 需要估计数据需要多少存储空间 有三种方 法来实现 做一个粗略的估测 从数据子集中预测 估计行容量 块容量 估计块中的自由空间等 在此基本上计算出 总的空间需求 1 1 收集基本信息收集基本信息 DB BLOCK SIZE select value from v parameter where name db block size KCBH UB1 UB2 UB4 KTBBH KTBTT KDBH KDBT SB2 select component type description type size from v type size where type in KCBH UB1 UB2 UB4 KTBBH KTBIT KDBH KDBT SB2 COMPONEN TYPE DESCRIPTION TYPE SIZE S UB1 UNSIGNED BYTE 1 1 S UB2 UNSIGNED BYTE 2 2 S UB4 UNSIGNED BYTE 4 4 S SB2 SIGNED BYTE 2 2 KCB KCBH BLOCK COMMON HEADER 20 KTB KTBIT TRANSACTION VARIABLE HEADER 24 KTB KTBBH TRANSACTION FIXED HEADER 48 KDB KDBH DATA HEADER 14 KDB KDBT TABLE DIRECTORY ENTRY 4 INITRANS PCTFREE 在创建表时需要知道将要使用的 INITRANS 和 PCTFREE 参数的值 如果 没有指定这些参数 那么使用默认值 INITRANS 的默认值为 1 PCTFREE 的 默认值为 20 精品文档 14欢迎下载 2 2 为表估计空间为表估计空间 为表估计容量 要做以下几点 计算出每个数据库块中有多少空间可以用来存储数据 在估计的基本上确定每一行的平均容量 根据前面两个值计算需要的块数 2 1 2 1 估计每个块的可用空间数估计每个块的可用空间数 每个块中的可用存储空间数首先依赖于块的容量 额外开销和数量和 PCTFREE 的值 计算公式为 SPACE FOR DATA CEIL DB BLOCK SIZE KCBH UB4 KTBBH INITRANS 1 KTBIT KDBH 1 PCTFREE 100 KDBT CEIL 函数的作用是把小数转换成比它大的最接近于它的整数 如 CEIL 5 1 的值为 6 2 2 2 2 估计行的容量估计行的容量 计算行容量的第一步是把单个的列累加在一起 计算出行的最大值 但是在实际使用中 要根据每列中容纳的平均数据来考虑自己的需要 从 而算出行的平均容量 附 常用数据类型与容量 数据类型容量 CHAR X 长度是 X 字节 VARCHAR2 X 长度是 X 字节 NUMBER X Y NUMBER 列的最大容量为 21 字节 这个数值依赖于 存储值 每个字节两个数字 另外一个代表指数 一个代表负号 仅当数字为负 例如 数值 1 要 占用 2 个字节 数值 1 要占用 3 个字节 DATE8 个字节 另外 想知道某个类型的列占用的字节数可以用函数 VSIZE 计算 如 SQL SELECT VSIZE SYSDATE FROM DUAL VSIZE SYSDATE 8 得到了列容量的总和 就可以用下面的公式为每一行估计空间的大小 精品文档 15欢迎下载 ROWSIZE MAX UB1 3 UB4 SB2 3 UB1 列占用的字节 MAX 函数的作用是返回两个数中较大的一个 2 3 2 3 估计需要的块数估计需要的块数 BLOCKS REQUIRED CEIL 要存储的行数 FLOOR SPACE FOR DATA ROWSIZE FLOOR 函数的功能是取比该小数小的最大整数值 公式中要存储的行数则需要我们跟据实际情况来估计 3 3 为索引估计空间为索引估计空间 估计索引的空间需求相似于估计表的空间需求 但它们的计算方法不同 因为索引的结构不同于表 但基本的步骤是相同的 3 1 3 1 估计每个块的可用空间估计每个块的可用空间 SPACE FOR DATA DB BLOCK SIZE 113 24 INITRANS DB BLOCK SIZE 113 24 INITRANS PCTFREE 100 3 2 3 2 估计索引目录需要的存储空间估计索引目录需要的存储空间 对索引来说 估计大小时需要计算出每一个索引目录的平均占用空间 即索引中的所有列的长度的总和 在计算出长度的总和后 就可以用下面的 公式来估计一个索引目录的空间 ENTRY SIZE 2 10 SUM OF COLUMN SIZES 3 3 3 3 估计需要的块估计需要的块 BLOCKS REQUIRED CEIL 1 05 要存储的行数 FLOOR SPACE FOR DATA ENTRY SIZE 六六 数据存储设计数据存储设计 在一个数据库安装完毕之后 系统中已存在如下表空间 它们分别是 SYSTEM TOOLS RBS USERS TEMP 等 上述表空间在安装时用户可根据当地 系统的实际情况进行系统表空间的划分 使它们尽可能分离 在创建表空间时 应该考虑以下几点 精品文档 16欢迎下载 把由用户创建的其余表空间同系统表空间进行分离 把数据表空间同索 引表空间分离 回滚段用的表空间 临时表空间等都应该分离 把操作频繁和不经常操作的表划分在不同的表空间中 把用户数据与数据字典数据分开 把不同应用组的数据分别放在不同的表空间中 为了减少 I O 的竞争 把不同表空间的数据文件放在不同的硬盘上 在系统安装时 还应该考虑控制文件和可重作日志文件要尽可能的分配在 不经常使用的盘上 在上述原则中 对日常系统最有用的原则是把索引空间同数据表空间分离 开来 把它们分离出来的理由如下 与表相关联的索引会导致 I O 和表增长 碎 片问题的出现 碎片问题同样要求将数据段从系统表空间中分离出来 同时对 索引的数据操纵和查询时将会由大量的输入 输出 索引段同样因为不恰当的大 小或无法预料的表增长问题而导致碎片 将应用索引分离到一个单独的表空间 中 将大大减少管理数据空间和索引空间碎片问题的工作量 七七 ORACLE8IORACLE8I 新特性新特性 在 ORACLE8I 中 对表空间的管理增加了三个新特性 本地管理的表空间 可移动的表空间以及增加了临时表空间的一些特殊选项 1 1 本地管理的表空间本地管理的表空间 在 ORACLE8I 下有有两种类型的表空间 本地管理的表空间和字典管理的表 空间 目前我们常用的表空间属于字典管理的表空间 这类的表空间我们可以 通过 ORACLE 提供的一些数据字典 如 DBA FREE SPACE 等来查看表空间的使用 情况和剩余空间大小 而对于本地管理的表空间 在每个数据文件上都有一个 位图去管理 跟踪本身的数据块是否已经被分派 位图中的每一位相当于数据 文件中的一个数据块或一组数据块 当表空间的范围被分派或者被释放时 ORACLE 会修改位的值来体现它所管理的范围的当前状态 当些改变是不产生回 滚信息的 因为它们没有修改数据字典 除了修改表空间的限额 QUOTA 信息 对于这类的表空间 是无法通过查询 DBA FREE SPACE 字典表来查询空间的使用 情况 在建立数据库 CREATE DATABASE 时 也可以在系统表空间上指定 EXTENT MANAGEMENT LOCAL 子句 如果把系统表空间建为本地管理的表空间 别的表空 间还是可以指定为字典管理 但是所有的回滚段要建立在本地管理的表空间上 本地管理的表空间比起数据字典管理的表空间有以下优点 本地管理的表空间消除了递归的空间管理操作 并且不产生回滚信息 本地管理的表空间可以自动跟踪相邻的空闲空间 不需要去合并空闲的 范围 精品文档 17欢迎下载 改进同时进行的空间操作性能 需要的信息存储在段的头部和位图块中 通过位值的改变说明空间是否 分配 0 分配 1 未分配 减少用户依靠数据字典 建立本地管理的表空间的 SQL 语句 CREATE TABLESPACE tablespace name EXTENT MANAGEMENT LOCAL AUTOALLOCATE UNIFORM SIZE 大小 对于建立字典管理的表空间的子句为 EXTENT MANAGEMENT DICTIONARY 如果不写 EXTENT MANAGEMENT 子句则默认为字典管理的表空间 在建立本地管 理的表空间时 DEFAULT STORAGE 子句将不再起作用 对于字典管理的表空间 每个数据文件的第一个数据块的大小用于存放内 部信息 其余的空间用于存放数据 对于本地管理的表空间 每个数据文件的构成分为 一个用于存放 ECOVER 头的数据块 一段文件头 包含 数据文件是否可以被重置大小 RESIZE 它的最 大大小 以及每次 REISZE 后增加的空间大小 位图空间的大小 每个文件头最少要分配 64K 的空间用于位图空间 但 位图空间的大小还是决定于当前数据文件的大小 文件的最大大小和表 空间中范围的大小 例如 一个数据文件大小为 80M 表空间定义的范 围大小为 16K 那么文件头中会分配 80 1024 16 8 640K 的空间用于 位图管理 想管理最大文件所需要的位图数据块大小是非常高的 初始 分配的位图大小可能无法管理所有的数据块 当一个文件扩展很多次 位图中已经没有剩余空间时 在扩展过程中 文件尾部的一些数据块也 会用来管理数据文件的内部信息 这些数据块成为位图尾部的一部分 用于存放数据的空间大小 2 2 临时表空间临时表空间 在 ORACLE8I 下 临时表空间也有两方管理方式 字典管理的临时表空间 和本地管理的临时表空间 建立字典管理的临时表空间的 SQL 语句 CREATE TABLESPACE TABLESPAC NAME DATAFILE TEMPORARY 建立本地管理的临时表空间的 SQL 语句 CREATE TEMPORARY TABLESPACE TABLESPACE NAME TEMPFILE EXTENT MANAGEMENT LOCAL UNIFORM SIZE 大小 字典管理的临时表空间与本地管理的临时表空间的区别 本地管理的临时表空间 在建立后就是 NOLOGGING 的 不产生重算信息 不能改为 LOGGING 而字典管理的表空间在建立后是 LOGGING 的 可以 通过 ALTER TABLESPACE 命令改为 NOLOGGING 本地管理的临时表空间 在建立后就是临时性 TEMPROARY 的 不能改 为永久性 PERMANENT 而字典管理的表空间在建立后是临时性 精品文档 18欢迎下载 TEMPROARY 却可以可以通过 ALTER TABLESPACE 命令改永久性 PERMANENT 在建立本地管理的临时表空间时 必需用 TEMPFILE 子句 其数据文件 的信息是记录在 DBA TEMP FILES 数据字典中的 而建立本地管理的临 时表空间时 必需用 DATAFILE 子句 其数据文件的信息是记录在 DBA DATA FILES 数据字典中 本地管理的临时表空间还有以下特点 无法将本地管理的表空间改为临时性的 必需要在建立表空间时就指定 为本地管理的临时表空间 无法将本地管理的临时表空间设为只读状态 无法将本地管理的临时表空间的临时文件重命名 介质恢复时不认可临时文件 在 ALTER DATABASE 命令中使用 CREATE TEMPFILE 可以用 CREATE D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校教育与职业技能培训协议
- 企业运营成本控制方案库
- 艺术流派及发展历程概述:美术课堂教学设计
- 直接引语与间接引语的转换规则:六年级英语语法课教案
- 小猪学样550字(11篇)
- 纪念塔课件教学
- 银滩之旅250字(12篇)
- 关于七夕节的英语作文11篇
- 2025年事业单位招聘统计类试卷:统计学在美学中的
- 2025年商务英语(BEC)中级考试真题模拟卷:模拟实战演练
- 2025年足球裁判三级试题及答案
- 2025年秋期部编版四年级上册小学语文教学计划+教学进度表
- 2025年特种设备检验检测项目合作计划书
- 安全生产投入费用明细
- 2025年司机三力考试题库及答案
- 铁路动态设计管理办法
- 奔驰GL350GL450GL550中文版说明书
- 智能微电网应用技术课件
- 泌尿外科围手术期护理
- 光谷华科附小数学试卷
- 大学班助培训
评论
0/150
提交评论