ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:121.92KB ,
资源ID:12993290      下载积分:6 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12993290.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Oracle存储空间管理及应用方案.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Oracle存储空间管理及应用方案.docx

1、Oracle存储空间管理及应用方案Oracle存储空间管理及应用摘要:本文详细介绍了Oracle存储架构及其存储体系的管理和应用,包括表空间、回滚段、临时表等,还对其在管理和应用时常见的错误进行了分析探讨主题词:Oracle技术 表空间 数据文件 回滚段 临时表 错误一、 引言数据库空间的有效使用和维护不仅是数据库管理的重要工作,也是大多数开发人员所关心的内容,它直接关系到数据库性能的发挥。Oracle提供了不少方法用于数据空间的使用、监控和维护,同时也在各版本中陆续对这方面的功能进行了增强,目的在于简化这方面工作的复杂度,提高应用的运行效率。本文希望通过系统地介绍这方面的有关概念,让大家能更

2、好地规划使用数据空间,正确使用Oracle提供的有关功能特性,提高应用的执行效率。二、 Oracle数据库的存储体系及有关概念2.1 Oracle数据库的逻辑结构从应用者的角度来考察数据库的组成。自下向上,数据库的逻辑结构共有6层:2.2 Oracle数据库的存储结构数据库的存储结构指逻辑结构在物理上的实现,共有3层 其中: 数据文件:用于存放所有的数据,以DBF为扩展名。日志文件:记录了对数据库进行的所有操作,以LOG为扩展名。控制文件:记录了数据库所有文件的控制信息,以CTL为扩展名。综上,Oracle数据库的数据存储空间在逻辑上分为多个表空间,每个表空间由系统中的一个或多个物理数据文件构

3、成;Oracle存储数据的基本单位是块,其大小在建库时由DB_BLOCK_SIZE参数确定,一个或多个连续的块构成一个区间(EXTENT),它作为数据对象存储的基本单位来使用。在Oracle中,每个基本数据对象使用的空间称为段(SEGMENT),段存放在唯一的表空间上,每个段实际上是一系列区片(更为准确地是数据块)的集合。每个简单数据对象对应一个段;对于分区对象如分区表、索引,则每个(子)分区对应一个段,由各个(子)分区共同构成一个完整的数据对象。名词解释:表空间(Tablespace):为数据库提供使用空间的逻辑结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件。表空间可分为Sy

4、stem表空间、非System表空间和回滚段表空间,其中,System表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。除此之外,还能包含用户数据。段(Segment):数据库一种逻辑结构,如表段,索引段,回滚段等,段存在于表空间中,并对应一定的存储空间,共有四种类型的段: 表/数据(Table/Data):保存表数据 索引(Index):保存索引数据 回滚(Rollback):保存回滚数据,用于回滚一次事务处理,以及保持读操作一致性 临时(Temporary):用于满足排序的需要,比如查询和索引创建中的ORDER BY从句区间(Ext

5、ent):段的存储可以分成一个或多个区间,每个区间占用一定数量的数据块(block)块(Block):数据库最小的存储单位,由Block参数(db_block_size)指定三、 表空间及数据文件3.1 表空间简介通常,有以下几种类型的表空间(除数据表空间需用户自己创建外,其它6种表空间在数据库创建时均会默认建立1个):3.1.1 系统表空间(SYSTEM)系统表空间是每个Oracle数据库都必须具备的部分,是安装数据库时自动建立的。它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段等管理数据库自身所需的信息。一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用

6、户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表空间损坏了,只能重新生成数据库。3.1.2 临时表空间(TEMP)临时表空间并不包含真正的数据,临时表空间中存储数据库中动态生成的对象,如排序操作或表连接时的临时数据等;临时表空间也是Oracle用于存储其所有临时表的所在。在一些非常繁忙的数据库中,可能会存在多个临时表空间。3.1.3 工具表空间(TOOLS)工具表空间用于保存数据库工具软件所需的数据库对象,如像Oracle Reports这样的工具软件在工作时就有自己的一组专用表。Oracle Reports把这些表存放在数据库中。大多数DBA都将支持工具运行所需的表存放

7、在这个表空间中。3.1.4 用户表空间(USERS) 用户表空间用于存放用户的私有信息,用户的专用数据库对象。3.1.5 回滚表空间(RBS)Oracle数据库需要在一个地方保存恢复(Undo)信息。回滚表空间中存放数据库对象的回滚段,在出现失败和临时终止事务时,可以用回滚段使数据库对象退回到旧值。3.1.6 数据和索引表空间数据表空间用来存放用户的应用数据,索引表空间用来存放应用数据对象的索引。索引可以帮助Oracle迅速找到表中存放的数据。3.2 表空间的管理和使用3.2.1 创建表空间创建表空间的脚本示例如下:create tablespace ts_name datafile -创建名

8、为ts-name的表空间 c:oracleoradatafile1.dbf size 100m , -表空间的文件1,大小为100Mc:oracleoradatafile2.dbf size 100m -表空间的文件2,大小为100Mminimum extent 550k -最小区间大小为550Klogging/nologging -记录日志/不记录日志default storage (initial 500k -初始大小为500Knext 500k -下一个区大小为500Kmaxextents 500 -最大区间数为500个pctinccease 0) -增量为0online/offline

9、 -联机/脱机 permanent/temporary -永久/临时【巡检实例】-创建数据表空间-数据文件e:oracleoradataqinxjgl_data01.dbf,初始尺寸1G,可自动扩展,最大为5G-存储属性:初始大小 10M,下一个大小10M,增量为0,最大数量为500create tablespace xjgl_data datafile e:oracleoradataqinxjgl_data01.dbf size 1000Mautoextend on next 500m maxsize 5000m default storage(initial 10M next 10M ma

10、xextents 500 pctincrease 0);-创建索引表空间(最好跟数据表空间建在不同的磁盘上)-数据文件:e:oracleoradataqinxjgl_idx01.dbf,初始尺寸500G,可自动扩展,最大为2G-存储属性:初始大小 5M,下一个大小5M,增量为0,最大数量为400create tablespace xjgl_idx datafile e:oracleoradataqinxjgl_idx01.dbf size 500Mautoextend on next 250m maxsize 2000m default storage(initial 5M next 5M m

11、axextents 400 pctincrease 0);-创建LOB段表空间-数据文件:e:oracleoradataqinxjgl_idx01.dbf,初始尺寸500G,可自动扩展,最大为1G-存储属性:初始大小 5M,下一个大小5M,增量为0,最大数量为100create tablespace xjgl_data_lobs datafile e:oracleoradataqinxjgl_data_lobs01.dbf size 500Mautoextend on next 250m maxsize 1000mdefault storage(initial 10M next 10M max

12、extents 100 pctincrease 0);3.2.2 改变表空间尺寸 为表空间增加新的数据文件 其脚本如下所示:alter tablespace xjgl_data add datafile e:oracleoradataqinxjgl_data02.dbf size 200m 调整数据文件尺寸其脚本如下所示:alter database datafile e:oracleoradataqinxjgl_data01.dbf resize 400m允许(或禁止)数据文件的自动扩展 其脚本如下所示alter database datafile e:oracleoradataqinxjg

13、l_data02.dbf autoextend on next 10m maxsize 500m; 改变数据文件的可用性 其脚本如下所示alter database datafile e:oracleoradataqinxjgl_data02.dbf onlineoffline 以上调整通过Oracle DBA Studio进行也可 调整数据文件尺寸时,如果是减小,不能减小到小于已用到空间数量3.2.3 改变表空间状态和存储设置 表空间联机 其脚本如下所示:ALTER TABLESPACE xjgl_data ONLINE表空间脱机 其脚本如下所示:ALTER TABLESPACE xjgl_

14、data OFFLINE NORMALTEMPORARY/ IMMEDIATE/ FOR RECOVER 设置表空间为只读ALTER TABLESPACE xjgl_data READ ONLY修改表空间的存储设置 ALTER TABLESPACE xjgl_data DEFAULT STORAGE ()整理空间碎片 可通过先将某表空间用export导出,再用import将其导入实现删除表空间DROP TABLESPACE “xjgl_data” including contents;注: 1) 表空间非空时,加上including contents关键字才可将其删除2) 删除表空间并不是删除

15、正在使用的数据文件,必须使用操作系统删除数据数据文件3.2.4表空间迁移 可通过下列步骤实现(只适用于非系统表空间。不能用于回滚段、临时段的表空间)1) 置表空间状态为脱机alter tablespace xjgl_data offline;2) 使用操作系统命令来移动文件$move e:oracleoradataqinxjgl_data01.dbf e:3) 使用alter tablespace来更改数据库中的文件名alter database rename file e:oracleoradataqinxjgl_data01.dbf to e:xjgl_data01.dbf;4) 重新置表

16、空间状态为联机alter tablespace xjgl_data online;3.3 管理数据文件数据文件是构成表空间和数据库的物理文件,存放在操作系统中。数据文件管理使用时应注意以下几点:1) 初始化参数DB_FILES(默认为1024)设置一个实例可以建立的最大数据文件数。当数据文件的个数达到初始化参数DB_FILES的值时,必须修改DB_FILES的值并重新启动数据库使修改生效。2) 归档模式下数据文件可以单独OFFLINE,而非归档模式数据文件不能正常OFFLINE。3) 数据文件的重命名和移植操作有两种方法实现。对于单个非SYSTEM表空间的数据文件的转移或重命名可以在数据库打开

17、的情况下完成,对于多个表空间或SYSTEM表空间的数据文件的转移或重命名,只能在数据库的MOUNT模式下进行。4) Oracle没有办法删除已经加载到数据库的数据文件。只能通过删除表空间的方式将表空间和它包含的全部数据文件删除,不能只删除一个单独的数据文件。ALTER DATABASE DATAFILE OFFLINE DROP语句只能使数据文件不再使用,并没有从数据库上真正删除掉数据文件。5) 初始化参数DB_BLOCK_CHECKSUM设置Oracle是否对BLOCK进行校验。不管是否设置这个值,SYSTEM表空间都会进行校验。如果设置为TRUE,那么DBWn进程会对每个写回磁盘的BLOC

18、K进行校验计算,结果存放到BLOCK的头部。Oracle下次读取该块时,会根据这个校验结果验证是否存在磁盘错误3.4 应用开发时的若干注意事项1) 在多磁盘系统,为提高数据库的性能,数据表空间和索引表空间应分别存储,回滚段(RBS)表空间和数据表空间分别存储,系统表(SYSTEM)空间与数据库中其它表空间分别存储。2) 创建表及其它对象时,要为其分配一个表空间,如果未指定表空间,则使用当前系统用户确省的表空间。一般可以按如下步骤进行A. 用create user 命令建立用户并给其分配默认表空间和临时表空间,如create user XJGL_SA identified by xjgl def

19、ault tablespace xjgl_data temporary tablespace temp;B. 给用户授权grant connect,resource to XJGL_SA;C. 更改以新建的用户(XJGL_SA)登陆connect xjgl_sa/xjgl;D. 创建表及其它对象这样建表时若不指定表空间,对象将会默认创建到xjgl_data表空间上3) 若表中存在大型对象LOB数据字段段,为提高数据库检索性能,一般都需要为LOB数据指定专用的表空间,并指定nocache 参数(表示不这些LOB数据将不会存贮在内存中,以便在查询时获得最快的访问速度)4) 在建立索引时,如果不指定

20、相应的索引表空间名,那么,该索引就会建立在数据表空间中。这是程序员经常忽略的一个问题。应该在建索引时,明确的指明相应的索引表空间(使用using index tablespace子句)。如CREATE TABLE TEST (NAME VARCHAR2(30) PRIMARY KEY USING INDEX TABLESPACE xjgl_idx PCTFREE 0 STORAGE ( )AGE NUMBER);5) 创建触发器、存储过程、函数和包时都不能为其指定存储空间,它们都会被存储到系统(SYSTEM)表空间中四、 回滚段及临时表的使用4.1 回滚段4.1.1 回滚段概述回滚段用于存放数

21、据修改之前的值(包括数据修改之前的位置和值)。回滚段头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。4.1.2 回滚段的作用事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。

22、而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。4.1.3 回滚段的种类系统回滚段:当数据库创建后,将自动创建一个系统回滚段,该回滚段只用于存放系统表空间中对象的前影像。非系统回滚段:拥有多个表空间的数据库至少应该有一个非系统回滚段,用于存放非系统表空间中对象的数据前影像。非系统回滚段又分为私有回滚段和公有回滚段,私有回滚段应在参数文件的ROLLBACKSEGMENTS参数中列出,以便例程启动时自动使其在线(ONLIN

23、E)。公有回滚段在例程启动时自动在线。 DEFERED(延迟)回滚段:该回滚段在表空间离线(OFFLINE)时由系统自动创建,当表空间再次在线(ONLINE)时由系统自动删除,用于存放表空间离线时产生的回滚信息。4.1.4 回滚段的使用分配回滚段:当事务开始时,ORACLE将为该事务分配回滚段,并将拥有最少事务的回滚段分配给该事务。事务可以用以下语句申请指定的回滚段: SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment事务将以顺序,循环的方式使用回滚段的区(EXTENTS),当当前区用满后移到下一个区。几个事务可以写在回滚段的同一个区

24、,但每个回滚段的块只能包含一个事务的信息。回滚段的扩展(EXTEND):当当前回滚段区的所有块用完而事务还需要更多的回滚空间时,回滚段的指针将移到下一个区。当最后一个区用完,指针将移到第一个区的前面。回滚段指针移到下一个区的前提是下一个区没有活动的事务,同时指针不能跨区。当下一个区正在使用时,事务将为回滚段分配一个新的区,这种分配称为回滚段的扩展。回滚段将一直扩展到该回滚段区的个数到达回滚段的参数MAXEXTENTS的值时为止回滚段的回收: OPTIMAL(最佳大小)参数指明回滚段空闲时收缩到的位置,指明回滚段的OPTIMAL参数可以减少回滚段空间的浪费。4.1.5 回滚段常用操作创建回滚段C

25、REATE PUBLIC ROLLBACK SEGMENT rollback_segmentTABLESPACE tablespaceSTORAGE (INITIAL integerK|M NEXT integerK|MMINEXTENTS integerMAXTENTS integer|UNLIMITEDOPTIMAL integerK|M|NULL) 注: 回滚段可以在创建时指明PRIVATE或PUBLIC,一旦创建将不能修改。 MINEXTENTS 必须大于等于2 PCTINCREASE必须是0 OPTIMAL如果要指定,必须大于等于回滚段的初始大小(由MINEXTENTS指定)建议:

26、一般情况下,INITIAL=NEXT 设置OPTIMAL参数来节约空间的使用 不要设置MAXEXTENTS为UNLIMITED 回滚段应创建在一个特定的回滚段表空间内使回滚段在线当回滚段创建后,回滚段是离线的,不能被数据库使用,为了使回滚段被事务利用,必须将回滚段在线。可以用以下命令使回滚段在线:ALTER ROLLBACK SEGMENT rollback_segment ONLINE;为了使回滚段在数据库启动时自动在线,可以在数据库的参数文件中列出回滚段的名字。例如在参数文件中加入以下一行ROLLBACK_SEGMENT=(rbs01,rbs02)修改回滚段的存储参数可以使用ALTER R

27、OLLBACK SEGMENT命令修改回滚段的存储参数(包括OPTIMAL,MAXEXTENTS)。ALTER ROLLBACK SEGMENT rollback_segmentSTORAGE (NEXT integerK|MMINEXTENTS integerMAXEXTENTS integer|UNLIMITEDOPTIMAL integerK|M|NULL) 回收回滚段的空间如果指定了回滚段的OPTIMAL参数,ORACLE将自动回收回滚段到OPTIMAL指定的位置。用户也可以手动回收回滚段的空间。语法:ALTER ROLLBACK SEGMENT rollback_segment SH

28、RINK TO integer K|M;如果不指明TO integer的数值,ORACLE将试图回收到OPTIMAL的位置。使回滚段离线为了达到以下两个目的需要回滚段离线: 阻止新的事务使用该回滚段; 该回滚段必须删除。ALTER ROLLBACK SEGMENT rollback_segment OFFLINE;如果有事务正在使用该回滚段,运行该命令后,回滚段的状态将是PENDING OFFLINE。事务结束后,状态将改为OFFLINE,可以通过V$ROLLSTAT查询回滚段的状态。删除回滚段当回滚段不再需要或要重建以改变INITIAL,NEXT或MINEXTENTS参数时,可以将其删除。D

29、ROP ROLLBACK SEGMENT rollback_segment;查询回滚段的信息所用数据字典:DBA_ROLLBACK_SEGS可以查询的信息:回滚段的标识(SEGMENT_ID)、名称(SEGMENT_NAME)、所在表空间(TABLESPACE_NAME)、类型(OWNER)、状态(STATUS)。如:SQLSELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;回滚段的统计信息所用数据字典:V$ROLLNAME,V$ROLLSTAT如:SQLSELECT n.name,s.extents,

30、s.rssize,s.optsize,s.hwmsize,s.xacts,s.status FROM v$rollname n,v$rollstat s WHERE n.usn=s.usn;查看回滚段的当前活动事务所用数据字典:V$SESSION,V$TRANSACTION。如SQLSELECT s.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublkFROM v$session s,v$transaction tWHERE s.saddr=t.ses_addr;回滚段的数量规划对于OLTP系统,存在大量的小事务处理,一般建议:数量多的小回滚段;每四个事务一个回滚段;每个回滚段不要超过十个事务。对于批处理,一般建议:数量少的大回滚段;每个事务一个回滚段。4.2 临时表的使用4.2.1 临时表的基本概念Oracle临时表用来保存事务或会话期间的中间结果。在临时表中保存的数据只有对当前会话是可见的,任何会话都不能看到其他会话的数据,即使在当前会话提交数据以后也是不可见的。一个会话从来不阻塞另一个会话使用临时表。即使锁定临时表,一个会话也不会阻塞其他会话使用临时表。临时表将从用户临时表空间中分配空间,或者如果从有定义权的程序中访问,将使用程序所有者的临时表空间。全局临时表实际上只是表本身的模板,不包含数据。创建临时表的行为不包括

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2