服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Mssql|Oracle|Redis|

服务器之家 - 数据库 - Oracle - 如何保持Oracle数据库的优良性能

如何保持Oracle数据库的优良性能

2019-10-27 16:33Oracle技术网 Oracle

Oracle 数据库 以其高可靠性、安全性、可兼容性,得到越来越多的企业的青睐。如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的问题,根据笔者经验建议不妨针对以下几个方面加以考虑。 一、分区 根据实际经验,在

Oracle数据库以其高可靠性、安全性、可兼容性,得到越来越多的企业的青睐。如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的问题,根据笔者经验建议不妨针对以下几个方面加以考虑。

一、分区

根据实际经验,在一个大数据库中,数据空间的绝大多数是被少量的表所占有。为了简化大型数据库的管理,改善应用的查询性能,一般可以使用分区这种手段。所谓分区就是动态表中的记录分离到若干不同的表空间上,使数据在物理上被分割开来,便于维护、备份、恢复、事务及查询性能。当使用的时候可建立一个连接所有分区的视图,使其在逻辑上仍以一个整体出现。

1.建立分区表

CreatetableEmployee(

EmpNovarchar2(10)primarykey,

Namevarchar2(30),

DeptNoNumber(2)

)

Partitionbyrange(DeptNo)

(partitionPART1valueslessthan(11)

tablespacePART1_TS,

partitionPART2valueslessthan(21)

tablespacePART2_TS,

partitionPART3valuselessthan(31)

tablespacePART3_TS

partitionPART4valueslessthan(MAXVALUE)

tablespacePART4_TS

);

表Employee依据DeptNo列进行分区。

2.分区索引

CreateindexEmployee_DeptNoonEmployee(DeptNo)local(

partitionPART1tablespacePART1_NDX_TS,

partitionPART2tablespacePART2_NDX_TS,

partitionPART3tablespacePART3_NDX_TS,

partitionPART4tablespacePART4_NDX_TS,

);

当分区中出现许多事务并且要保证所有分区中的数据记录的惟一性时采用全局索引,在建立全局索引时,Global子句允许指定索引的范围值,这个范围值可以不同于表分区的范围值。只有建立局部索引才会使索引分区与表分区间建立起一一对应关系。因此,在大多数情况下,应该使用局部索引分区。若使用了此索引,分区就能够很容易地将索引分区与表分区建立关联,局部索引比全局索引更易于管理。

3.分区管理

根据实际需要,还可以使用Altertable命令来增加、删除、交换、移动、修改、重命名、划分、截短一个已存在分区的结构。

二、重建索引

如果表中记录频繁地被删除或插入,尽管表中的记录总量保持不变,索引空间的使用量会不断增加。虽然记录从索引中被删除,但是该记录索引项的使用空间不能被重新使用。因此,如果表变化不定,索引空间量会不断增加,不论表中记录数量是否增加,只是因为索引中无效空间会增加。

要回收那些曾被删除记录使用的空间,需要使用Alterindexrebuild命令。可以做一个定期运行的批处理程序,来重建最活动表的索引。这个批处理程序可以在空闲时运行,以避免该程序与其他应用程序冲突。若能坚持索引的这一程序规划,便可以及时回收那些未使用空间,提高空间利用率。

三、段的碎片整理

当生成一个数据库对象时(一个表或一个索引),通过用户缺省值或指定值来为它指定表空间。一个在表空间中生成的段,用于存储对象的相关数据。在段被关闭、收缩、截断之前,段所分配的空间将不被释放。

一个段是由范围组成,而范围是由相邻的Oracle块组成。一旦存在的范围不能再存储新的数据,这个段就会去获得新的范围,但并不要求这些范围是彼此相邻的。这样的扩展会一直继续下去,直到表空间中的数据文件不能提供更多的自由空间,或者范围数量已达到极限。

因此,一个碎片太多的数据段,不仅会影响运行,也会引发表空间中的空间管理问题。所以,每个数据段只含有一个范围是十分有益的。借助监控系统,可以通过检查DBA_SEGMENTS数据字典视图来了解哪些数据库对象含有10个或更多范围的段,确定其数据段碎片。

若一个段的碎片过多,可用两种方法解决:

1. 用正确的存储参数建立一个新表,将旧表的数据插入到新表中,在删除旧表;

2. 利用Export/Import工具。

如:expsystem/managerfile=exp.dmpcompress=Ygrants=Yindexes=Ytables=(T1,T2)

若输出成功,进入Oracle,删除上述表。

注:compress=Y表示将在输出过程中修改它们的存储参数。

impsystem/managerfile=exp.dmpcommit=Ybuffer=64000full=Y

四、自由范围的碎片整理

表空间中的一个自由范围是表空间中相连的自由(空间)块的集合。当一个段关闭时,它的范围将被释放,并被标记为自由范围。然而,这些自由范围再也不能与相邻的自由范围合并,它们之间的界线始终存在。但是当表空间的缺省值pctincrease设置不是0时,SMON后台进程会定期将这些相邻的自由范围合作。若pctincrease设置为0,那么相邻自由范围不会被数据库自动合并。但可以使用Altertable命令"coalesce"选项,来强迫进行相邻自由范围的合并。

不进行自由范围合并,在日后的空间请求中,会影响到表空间中的空间分配。当需要一个足够大的范围时,数据库并不会合并相邻的自由范围,除非没有其他选择。这样,当表空间中前面较小的自由范围已被使用时,将使用表空间中后面部分最大的一个自由范围。结果,会因为没有足够多的使用空间,从而导致表空间需求的矛盾。由于这样的情况出现,使数据库的空间分配距理想越来越远。自由空间碎片常会出现在那些经常关闭又重新生成的数据库表和索引中。

在理想的Oracle表空间中,每一个数据库对象存储在一个单独的范围中,并且所有有效自由空间集中在一个巨大而连续的范围中。这样,在一个对象需要附加存储空间时,可以在增加获取足够大自由空间的可能性的同时,最小化空间中的循环调用,提高自由空间使用率。

延伸 · 阅读

精彩推荐
  • Oracle在Oracle 8x实现自动断开后再连接

    在Oracle 8x实现自动断开后再连接

    在实际的数据库应用中,我们经常遇到这样一个问题, 连接 到 Oracle 数据库的用户在作了一次操作后,再也没有后续操作,但却长时间没有和数据库断开连...

    Oracle教程网4712019-10-24
  • OraclePL/SQL数据类型及操作符

    PL/SQL数据类型及操作符

    PL/SQL数据类型及操作符...

    脚本之家3902019-10-27
  • OraclePL/SQL实现Oracle数据库任务调度

    PL/SQL实现Oracle数据库任务调度

    本文主要就数据库恢复与系统任务的调度,在结合一般性的数据库后台处理的经验上,提出较为实用而新颖的解决方法,拓宽了数据库后台开发的思路。...

    Oracle教程网2732019-10-26
  • Oracle安装Oracle加载数据库错误areasQueries的解决

    安装Oracle加载数据库错误areasQueries的解决

    安装Oracle加载数据库错误areasQueries的解决。 注意:安装时要保证Oracle安装目录不能带有中文字符 (如果第一次安装出现加载数据库错误areasQueries的错误,一般...

    Oracle教程网4792019-10-21
  • OracleOracle常见错误诊断

    Oracle常见错误诊断

    ORACLE的这类错误在ORALCE的文档中有详细说明,但原因及措施说明不详细,本文当着重说明如何解决这类错误。...

    Oracle教程网2012019-10-22
  • OracleORACLE数据库空间整理心得

    ORACLE数据库空间整理心得

    最近由于单位数据库硬盘空间不足,整理的时候查了许多文章,也进行了测试,整理后得出一些经验供大家参考。 首先,在网上看到一篇文章,如何Shrin...

    ORACLE教程网2852019-10-27
  • OracleOracle数据库逻辑备份的SH文件

    Oracle数据库逻辑备份的SH文件

    Oracle数据库逻辑备份的SH文件...

    Oracle教程网3162019-10-22
  • Oracle全新感受Oracle 9i

    全新感受Oracle 9i

    Oracle背景资料 在介绍Oracle9i之前我们先介绍一些关于 Oracle公司的资料,让各位朋友更多了解Oracle。 1977年,拉里艾里森和BobMiner、EdOates一起创建一家软件开...

    Oracle教程网1432019-10-25
北京塞车全天计划精准版 北京赛车官网视频直播 欢乐斗牛棋牌 河南11选五5历史开奖 天涯配资 陕西快乐十分直播现场 股票大盘最低多少点 波克棋牌下载 免费游戏四人打麻将 詹天佑3d预测号 pc蛋蛋的号 北京快乐8大小单双骗局 最准一肖免费中特 信誉最好的棋牌 湖北快三开奖结果统计 湖北30选5开奖走势图 天津时时最新开奖号码