您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle存储空间管理及应用方案
Oracle存储空间管理及应用摘要:本文详细介绍了Oracle存储架构及其存储体系的管理和应用,包括表空间、回滚段、临时表等,还对其在管理和应用时常见的错误进行了分析探讨主题词:Oracle技术表空间数据文件回滚段临时表错误一、引言数据库空间的有效使用和维护不仅是数据库管理的重要工作,也是大多数开发人员所关心的内容,它直接关系到数据库性能的发挥。Oracle提供了不少方法用于数据空间的使用、监控和维护,同时也在各版本中陆续对这方面的功能进行了增强,目的在于简化这方面工作的复杂度,提高应用的运行效率。本文希望通过系统地介绍这方面的有关概念,让大家能更好地规划使用数据空间,正确使用Oracle提供的有关功能特性,提高应用的执行效率。二、Oracle数据库的存储体系及有关概念2.1Oracle数据库的逻辑结构从应用者的角度来考察数据库的组成。自下向上,数据库的逻辑结构共有6层:2.2Oracle数据库的存储结构数据库的存储结构指逻辑结构在物理上的实现,共有3层其中:数据文件:用于存放所有的数据,以DBF为扩展名。日志文件:记录了对数据库进行的所有操作,以LOG为扩展名。控制文件:记录了数据库所有文件的控制信息,以CTL为扩展名。综上,Oracle数据库的数据存储空间在逻辑上分为多个表空间,每个表空间由系统中的一个或多个物理数据文件构成;Oracle存储数据的基本单位是块,其大小在建库时由DB_BLOCK_SIZE参数确定,一个或多个连续的块构成一个区间(EXTENT),它作为数据对象存储的基本单位来使用。在Oracle中,每个基本数据对象使用的空间称为段(SEGMENT),段存放在唯一的表空间上,每个段实际上是一系列区片(更为准确地是数据块)的集合。每个简单数据对象对应一个段;对于分区对象如分区表、索引,则每个(子)分区对应一个段,由各个(子)分区共同构成一个完整的数据对象。名词解释:表空间(Tablespace):为数据库提供使用空间的逻辑结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件。表空间可分为System表空间、非System表空间和回滚段表空间,其中,System表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。除此之外,还能包含用户数据。段(Segment):数据库一种逻辑结构,如表段,索引段,回滚段等,段存在于表空间中,并对应一定的存储空间,共有四种类型的段:表/数据(Table/Data):保存表数据索引(Index):保存索引数据回滚(Rollback):保存回滚数据,用于回滚一次事务处理,以及保持读操作一致性临时(Temporary):用于满足排序的需要,比如查询和索引创建中的ORDERBY从句区间(Extent):段的存储可以分成一个或多个区间,每个区间占用一定数量的数据块(block)块(Block):数据库最小的存储单位,由Block参数(db_block_size)指定三、表空间及数据文件3.1表空间简介通常,有以下几种类型的表空间(除数据表空间需用户自己创建外,其它6种表空间在数据库创建时均会默认建立1个):3.1.1系统表空间(SYSTEM)系统表空间是每个Oracle数据库都必须具备的部分,是安装数据库时自动建立的。它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段等管理数据库自身所需的信息。一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表空间损坏了,只能重新生成数据库。3.1.2临时表空间(TEMP)临时表空间并不包含真正的数据,临时表空间中存储数据库中动态生成的对象,如排序操作或表连接时的临时数据等;临时表空间也是Oracle用于存储其所有临时表的所在。在一些非常繁忙的数据库中,可能会存在多个临时表空间。3.1.3工具表空间(TOOLS)工具表空间用于保存数据库工具软件所需的数据库对象,如像OracleReports这样的工具软件在工作时就有自己的一组专用表。OracleReports把这些表存放在数据库中。大多数DBA都将支持工具运行所需的表存放在这个表空间中。3.1.4用户表空间(USERS)用户表空间用于存放用户的私有信息,用户的专用数据库对象。3.1.5回滚表空间(RBS)Oracle数据库需要在一个地方保存恢复(Undo)信息。回滚表空间中存放数据库对象的回滚段,在出现失败和临时终止事务时,可以用回滚段使数据库对象退回到旧值。3.1.6数据和索引表空间数据表空间用来存放用户的应用数据,索引表空间用来存放应用数据对象的索引。索引可以帮助Oracle迅速找到表中存放的数据。3.2表空间的管理和使用3.2.1创建表空间创建表空间的脚本示例如下:createtablespacets_namedatafile--创建名为ts-name的表空间'c:\oracle\oradata\file1.dbf'size100m,--表空间的文件1,大小为100M'c:\oracle\oradata\file2.dbf'size100m--表空间的文件2,大小为100Mminimumextent550k--最小区间大小为550K[logging/nologging]--记录日志/不记录日志defaultstorage(initial500k--初始大小为500Knext500k--下一个区大小为500Kmaxextents500--最大区间数为500个pctinccease0)--增量为0[online/offline]--联机/脱机[permanent/temporary]--永久/临时【巡检实例】--创建数据表空间--数据文件e:\oracle\oradata\qin\xjgl_data01.dbf,初始尺寸1G,可自动扩展,最大为5G--存储属性:初始大小10M,下一个大小10M,增量为0,最大数量为500createtablespacexjgl_datadatafile'e:\oracle\oradata\qin\xjgl_data01.dbf'size1000Mautoextendonnext500mmaxsize5000mdefaultstorage(initial10Mnext10Mmaxextents500pctincrease0);--创建索引表空间(最好跟数据表空间建在不同的磁盘上)--数据文件:e:\oracle\oradata\qin\xjgl_idx01.dbf,初始尺寸500G,可自动扩展,最大为2G--存储属性:初始大小5M,下一个大小5M,增量为0,最大数量为400createtablespacexjgl_idxdatafile'e:\oracle\oradata\qin\xjgl_idx01.dbf'size500Mautoextendonnext250mmaxsize2000mdefaultstorage(initial5Mnext5Mmaxextents400pctincrease0);--创建LOB段表空间--数据文件:e:\oracle\oradata\qin\xjgl_idx01.dbf,初始尺寸500G,可自动扩展,最大为1G--存储属性:初始大小5M,下一个大小5M,增量为0,最大数量为100createtablespacexjgl_data_lobsdatafile'e:\oracle\oradata\qin\xjgl_data_lobs01.dbf'size500Mautoextendonnext250mmaxsize1000mdefaultstorage(initial10Mnext10Mmaxextents100pctincrease0);3.2.2改变表空间尺寸为表空间增加新的数据文件其脚本如下所示:altertablespacexjgl_dataadddatafile'e:\oracle\oradata\qin\xjgl_data02.dbf'size200m调整数据文件尺寸其脚本如下所示:alterdatabasedatafile'e:\oracle\oradata\qin\xjgl_data01.dbf'resize400m允许(或禁止)数据文件的自动扩展其脚本如下所示alterdatabasedatafile'e:\oracle\oradata\qin\xjgl_data02.dbf'autoextendonnext10mmaxsize500m;改变数据文件的可用性其脚本如下所示alterdatabasedatafile'e:\oracle\oradata\qin\xjgl_data02.dbf'online[offline]以上调整通过OracleDBAStudio进行也可调整数据文件尺寸时,如果是减小,不能减小到小于已用到空间数量3.2.3改变表空间状态和存储设置表空间联机其脚本如下所示:ALTERTABLESPACExjgl_dataONLINE表空间脱机其脚本如下所示:ALTERTABLESPACExjgl_dataOFFLINENORMAL[TEMPORARY/IMMEDIATE/FORRECOVER]设置表空间为只读ALTERTABLESPACExjgl_dataREADONLY修改表空间的存储设置ALTERTABLESPACExjgl_dataDEFAULTSTORAGE(…)整理空间碎片可通过先将某表空间用export导出,再用import将其导入实现删除表空间DROPTABLESPACE“xjgl_data”[includingcontents];注:1)表空间非空时,加上includingcontents关键字才可将其删除2)删除表空间并不是删除正在使用的数据文件,必须使用操作系统删除数据数据文件3.2.4表空间迁移可通过下列步骤实现(只适用于非系统表空间。不能用于回滚段、临时段的表空间)1)置表空间状态为脱机altertablespacexjgl_dataoffline;2)使用操作系统命令来移动文件$movee:\oracle\oradata\qin\xjgl_data01.dbfe:\3)使用altertablespace来更改数据库中的文件名alterdatabaserenamefile'e:\oracle\oradata\qin\xjgl_data01.dbf'to'e:\xjgl_data01.dbf';4)重新置表空间状态为联机altertablespacexjgl_dataonline;3.3管理数据文件数据文件是构成表空间和数据库的物理文件,存放在操作系统中。数据文件管理使用时应注意以下几点:1)初始化参数DB_FILES(默认为1024)设置一个实例可以建立的最大数据文件数。当数据文件的个数达到初始化参数DB_FILES的值时,必须修改DB_FILES的值并重新启动数据库使修改生效。2)归档模式下数据文件可以单独OFFLINE,而非归档模式数据文件不能正常OFFLINE。3)数据文件的重命名和移植操作有两种方法实现。对于单个非SYSTEM表空间的数据文件的转移或重命名可以在数据库打开的情况下完成,对于多个表空间或SYSTEM表空间的数据文件的转移或重命名,只能在数据库的MOUNT模式下进行。4)Oracle没有办法删除已经加载到数据库的数据文件。只能通过删除表空间的方式将表空间和它包含的全部数据文件删除,不能只删除一个单独的数据文件。ALTERDATABASEDATAFILE……OFFLINEDROP语句只能使数据文件不再使用,并没有从数据库上真正删除掉数据文件。5)初始化参数DB_BLOCK_CHECKSUM设置Oracle是否对BLOCK进行校验。不管是否设置这个值,SYSTEM表空间都会进行校验。如果设置为TRUE,那么DBWn进程会对每个写回磁盘的BLOCK进行校验计算,结果存放到BLOCK
本文标题:Oracle存储空间管理及应用方案
链接地址:https://www.777doc.com/doc-11670 .html