论文部分内容阅读
摘 要:Oracle数据库是美国Oracle公司研制的一款关系型数据库产品,它可以运行在多种大、中、小型机、PC Server及微机上,支持Linux、AIX、Solaris和HP Unix等多种操作系统。Oracle为用户提供了一系列具有高可用性的系统解决方案,但随着业务增加、用户增多和数据量的增长,系统整体性能会下降;另一方面数据库外部环境愈加复杂,数据库运行故障等因素也对数据库的安全性带来挑战。本文就如何对Oracle数据库性能进行优化和数据库安全性方面做出研究。
关键词:Oracle关系型数据;性能优化;安全;备份
随着oracle数据库应用的深入,数据信息的不断增加,数据库的安全性受到多方面的威胁,包括对数据库信息的偷取、篡改、破坏和数据库系统本身存在的一些Bug、黑客的故意攻击、病毒和木马的入侵等,可能会造成无法预料的损失时,数据库系统不能正常运行,造成大量数据的信息丢失,影响数据库业务运行,数据库的安全问题已经显得越来越重要。
1 影响Oracle数据库性能的因素
随着当今业务复杂程序的不断加大,对信息系统的稳定性、数据的可靠性、业务的连续性及用户体验均提出了更高的要求。然而,信息系统用户量、数据量增长、硬件老化、资源分配不足、设计缺陷和开发漏洞等因素,严重制约着信息系统高性能运行,威胁系统的稳定性,影响用户体验。从Oracle系统性能优化的角度来看,影响系统性能的可控因素主要包括以下几点:
1.1 数据库主机性能
主机对整个系统性能的影响主要分为CPU数量和内存大小。
CPU数量决定了整个系统的并发处理能力,当CPU数量相对较少时,主机整体处理数据的能力不足,最终导致事务响应时间增长。当内存不足时,会出现换页现象,换页是数据在内存和磁盘之间交互,大量的换页会导致数据处理时间变长,CPU负载增加。
1.2 数据库核心参数设置
数据库的核心参数设置直接决定了整体系统性能,比如SGA设置过大会导致操作系统层面剩余内存不足,造成换页,影响系统性能;SGA设置过小会使系统整体的I/O增加,导致事务响应变慢。此外还包括进程数、并发、优化器模式设置等。
1.3 网络传输
网络传输分为公共网络和私有网络。客户端与数据库之间的数据交互需要通过公共网络来进行,公网的传输性能严重影响着最终用户体验。RAC数据库中私有网络承载着节点间的网络心跳和实例间的数据块传输,私有网络性能直接决定着RAC集群性能,私有网络带宽不足会严重影响集群节点见的数据传输,严重的性能问题会导致节点驱逐甚至宕机。
1.4 应用程序
应用程序对数据库整体性能的影响主要表现在SQL语句,存储过程等的执行效率方面。比如设计缺陷和开发漏洞会导致索引失效最终查询路径使用全表扫描方式,使用了低效的表连接方式等等导致SQL响应时间变长,影响着系统整体的响应时间。
1.5 存储性能
存储是整个数据库架构的根基,直接决定了物理读写的速度。存储的性能取决于带宽,分为磁盘带宽(度量标准为IOPS和等待事件)和通道带宽(度量标准为MBPS)。生产中通过条带化来提升存储性能,用镜像来保障安全冗余。但是不合理的设置,例如RAID和ASM的二次条带化将大大降低存储性能,增加应用响应时间。
2 Oracle数据库系统的系能评价指标
2.1 系统的吞吐量
Oracle数据库应用系统的吞吐量是指单位时间内处理事务的数目,单位是tps即每秒处理的事务量。提高系统吞吐量有两种方法:一是减少服务时间,提高服务效率,在同样的资源条件下能做更多的事务处理;二是减少总体的响应时间,提高系统运行效率,让事务处理过程可以更快的完成。
2.2 用户响应时间
响应时间,顾名思义就是指在用户请求一项事务时,从用户提交到数据库返回结果所用的时间。
2.3 数据库实例效率
数据库实例效率包括多项指标,这些指标都是越接近100%数据库性能越好。Buffer Nowait会话申请一个buffer(兼容模式)不等待的次数比例。buffer hit:高速缓存命中率,反应物理读和逻辑读中间的比例。Library Hit:库字典缓存命中率,申请一个library cache object例如一个SQL游标时,其已经在library cache中的比例。Soft Parse: 软解析比例。Execute to Parse反映了 执行解析比。Non-Parse CPU非解析CPU比例,若大多数CPU都用在解析上了,则可能好钢没用在刃上了。
2.4 内存使用情况
内存是否合理使用,一般考虑的主要调整目标有两点:一是尽可能充分利用内存来降低物理读写,从而提升性能,比如设置合理的buffer cache来降低物理读。二是在系统最繁忙的时间段,要保证系统拥有足够的内存,如果分配过大的SGA和PGA导致系统繁忙时间段内存耗尽出现大量的换页,将会极大地降低系统性能。
2.5 I/O响应时间
Oracle对I/O类型等待事件的响应时间做了严格的规定,控制文件并行写、直接路径写、临时文件直接路径写和日志文件并行写响应时间需要控制在15毫秒内;控制文件顺序读、数据文件并行读、数据文件离散读、数据文件顺序读、直接路径读和临时文件直接路径读的响应时间需要控制在20毫秒内。
3 Oracle数据库性能优化
3.1 内存参数调整与优化
Oracle数据库实例的内存主要由SGA和PGA构成,其中SGA主要包括数据缓冲区、共享池和日志缓冲区;PGA主要包括哈希区、排序区等。它们的分配是否合理决定了数据处理各个阶段的性能。 3.1.1 数据缓冲区调整与优化
数据库缓存命中率是一个过时的参数,对于buffer hit% 看它的命中率有多高没有意义,主要是关注未命中的次数有多少。不合理的db_cache_size或者是SGA自动管理ASMM /Memory 自动管理AMM下都可能因为db_cache_size过小引起大量的db file sequential /scattered read等待事件。 此外与 buffer Hit%相关的指标值得关注的还有 table scans(long tables) 大表扫描这个统计项目、此外相关的栏目还有Buffer Pool Statistics 、Buffer Pool Advisory等。可以根据Buffer Pool Advisory和数据库服务器的整体内存情况来设置合理的db_cache_size,并使用内存的手工管理来保证db_cache_size不会改变。
3.1.2 共享池调整与优化
共享池主要由库缓冲、数据字典缓存组成。合理设置共享池大小,使共享池中保存较多的SQL语句以及相关数据对象和用户信息,可以提高SQL程序的解析效率。此外可以使用绑定变量来提高软解析比例,通过设置session_cached_cursors参数来提高执行解析比。这些方法都有助于降低共享池的争用。
3.1.3日志缓冲区调整与优化
日志缓冲区用于存放数据的修改信息。日志首先写入日志缓冲区,在一定条件下由LGWR进程将日志缓冲区的信息写入日志文件。如果日志缓冲区已满,但还没有写入日志文件,则日志写入失败。过多的日志写入失败,说明日志缓冲区偏小,影响数据库性能,应该调整LOG BUFFER 的大小。
3.1.4 PGA区域调整与优化
PGA区性能主要由哈希区和排序区决定。在Oracle数据库中,哈希和排序操作一般情况下在PGA中进行,如果PGA内存不足,会使用临时段进行排序,由于使用临时段是对磁盘的操作,会降低执行效率,因为建议尽量在PGA中进行哈希和排序操作。
3.2 磁盘I/O性能调整优化
数据库的数据是存储在物理磁盘上的。影响磁盘I/O性能的主要原因有磁盘规划不合理、I/O操作过量、热点块竞争和数据库碎片整理。磁盘规划方面尽可能使用转速较快的SAS盘或者FC盘,尤其是数据库的redo和undo。可以使用廉价磁盘冗余阵列实现条带化,使所有数据文件可以访问所有可用带宽。避免ASM和RAID之间的二次条带化等。
优化I/O操作的方法包括:将频繁扫描的小表固定在buffer cache的保留池中,使热点对象造成的I/O最小化;利用索引、分区表来降低查询中数据块的读取量。
3.3 SQL语句优化
SQL语句消耗资源主要分为I/O和CPU,优化SQL的实质就是在结果正确的前提下,将IO和CPU消耗降到最低,主要通过调整执行计划来实现。
执行计划三要素分为访问路径、关联方式和关联顺序。访问路径包括:全表扫描、索引扫描、先走索引再回表;关联方式分为循环嵌套连接、哈希连接和排序合并连接;关联顺序分为驱动表和从动表。
从访问路径来看,最终目的是访问最少的数据块来得到最终想要的结果。最优路径一般是通过索引找到目标数据块,因此,避免全表扫描是这个部分中的重要环节;此外还存在例如集群因子高导致回表耗费暴增的情形,需要建立联合索引来解决等等。
从表的关联方式和关联顺序来看:对于循环嵌套连接,要保证小结果集驱动,驱动表的选择列上最好有索引,在从动表的关联列上要有索引;对于哈希连接,要保证小结果集驱动,两表的限制条件要有索引,确保PGA中完成哈希运算;对于排序合并连接,两表的限制条件要有索引,连接条件索引消除排序,避免多余列致排序尺寸过大,保证PGA的尺寸。
3.4 Oracle表空间规划
表空间是Oracle数据库逻辑划分中最大的概念,如果能合理规划表空间,提高表空间的使用率,会对Oracle数据库性能的提升有很大的帮助。合理表空间的分布除了要求分离数据和索引,归档日志和重做日志也要分离。
优化表空间结构,首先要做好系统表空间的分离,除了数据字典,尽量不要存储非系统用户的信息;其次,由于索引段和数据段的数据管理以及查询会存在冲突,因此要把两者分开来放;最后,做好临时表的分离,由数据库动态产生的临时段是动态的,一般是存放在临时表空间中。
4 保证Oracle数据库较高安全性的方法
4.1 用户管理
数据库用户是连接数据库、存取数据库对象的通道。通过建立不同的用户组和用户口令验证,可以有效地防止非法Oracle用户进入数据库。另外应该注重数据库用户口令的复杂程度和使用期限,特别注重对SYS和SYSTEM两个特殊账户的保密管理。对于远程用户,应使用加密方式来访问数据库,加强网络上的DBA权限控制,如拒绝远程的DBA访问。
4.2 数据备份
Oracle数据库的备份是数据库管理员日常工作中的重中之重。Oracle数据库主要由以下几种备份方式:
4.2.1 逻辑备份
逻辑备份的核心是复制数据。这种复制方式不管数据库中具体是哪些文件存储数据,而是按照oracle提供的命令,通过逻辑的方式直接将数据保存在其他位置。例如导出文件,数据泵导出文件等。
4.2.2 物理备份
物理备份的核心是复制文件。对于oracle数据库来讲,就是将数据文件、控制文件、归档文件等oracle数据库启动时所必须的相关物理文件,复制到其他路径或者存储设备中。最主要的方式是RMAN。
4.2.3 Oracle数据库的备份策略
Oracle数据库备份在生产中一般使用RMAN备份,数据库备份分为普通备份和增量备份。选择备份策略一般考虑如下几点:
希望最早恢复到的时间点;系统何时负载最小,备份是密集I/O操作,应选择系统最空闲的时间段进行备份;数据库的规模,在一定程度上决定了是否使用增量备份;数据块是否被频繁修改,决定了是否应该使用增量备份;最后还应该考虑能够给予的恢复时间。
4.3 数据灾难备份
一般情况数据备份都在同一机房,在遭遇机房渗水、火灾甚至地震海啸时,数据备份也无能为力,这时数据灾难备份就会派上用场。数据灾难备份一般可以使用Oracle Golden Gate或者Data Guard在异地建立灾难备份中心,当主库在出现灾难时及时启用备份数据库支撑前端业务运行。
5 小结
Oracle数据库系统优化是一个需要宏观把控,多方考虑的任务,需要对Oracle数据库进行深入分析,多角度了解服务器、存储、网络及应用程序对数据库性能的影响,进而才能分析与解决问题。数据库的安全需要冗余,而冗余又制约着数据库效率,所以在实际工作中,要根据具体需求来权衡数据库安全和性能问题。
参考文献:
[1]侯东敏.浅谈Oracle数据库安全问题[J].科技天地,2009.01.
[2]刘哲.基于Oracle数据库系统的优化与性能调整研究[J].绿色科技,2012.05.
[3]甄福东.Oracle10g 数据库系统性能优化与调整[J].电脑知识与技术,2010.22.
关键词:Oracle关系型数据;性能优化;安全;备份
随着oracle数据库应用的深入,数据信息的不断增加,数据库的安全性受到多方面的威胁,包括对数据库信息的偷取、篡改、破坏和数据库系统本身存在的一些Bug、黑客的故意攻击、病毒和木马的入侵等,可能会造成无法预料的损失时,数据库系统不能正常运行,造成大量数据的信息丢失,影响数据库业务运行,数据库的安全问题已经显得越来越重要。
1 影响Oracle数据库性能的因素
随着当今业务复杂程序的不断加大,对信息系统的稳定性、数据的可靠性、业务的连续性及用户体验均提出了更高的要求。然而,信息系统用户量、数据量增长、硬件老化、资源分配不足、设计缺陷和开发漏洞等因素,严重制约着信息系统高性能运行,威胁系统的稳定性,影响用户体验。从Oracle系统性能优化的角度来看,影响系统性能的可控因素主要包括以下几点:
1.1 数据库主机性能
主机对整个系统性能的影响主要分为CPU数量和内存大小。
CPU数量决定了整个系统的并发处理能力,当CPU数量相对较少时,主机整体处理数据的能力不足,最终导致事务响应时间增长。当内存不足时,会出现换页现象,换页是数据在内存和磁盘之间交互,大量的换页会导致数据处理时间变长,CPU负载增加。
1.2 数据库核心参数设置
数据库的核心参数设置直接决定了整体系统性能,比如SGA设置过大会导致操作系统层面剩余内存不足,造成换页,影响系统性能;SGA设置过小会使系统整体的I/O增加,导致事务响应变慢。此外还包括进程数、并发、优化器模式设置等。
1.3 网络传输
网络传输分为公共网络和私有网络。客户端与数据库之间的数据交互需要通过公共网络来进行,公网的传输性能严重影响着最终用户体验。RAC数据库中私有网络承载着节点间的网络心跳和实例间的数据块传输,私有网络性能直接决定着RAC集群性能,私有网络带宽不足会严重影响集群节点见的数据传输,严重的性能问题会导致节点驱逐甚至宕机。
1.4 应用程序
应用程序对数据库整体性能的影响主要表现在SQL语句,存储过程等的执行效率方面。比如设计缺陷和开发漏洞会导致索引失效最终查询路径使用全表扫描方式,使用了低效的表连接方式等等导致SQL响应时间变长,影响着系统整体的响应时间。
1.5 存储性能
存储是整个数据库架构的根基,直接决定了物理读写的速度。存储的性能取决于带宽,分为磁盘带宽(度量标准为IOPS和等待事件)和通道带宽(度量标准为MBPS)。生产中通过条带化来提升存储性能,用镜像来保障安全冗余。但是不合理的设置,例如RAID和ASM的二次条带化将大大降低存储性能,增加应用响应时间。
2 Oracle数据库系统的系能评价指标
2.1 系统的吞吐量
Oracle数据库应用系统的吞吐量是指单位时间内处理事务的数目,单位是tps即每秒处理的事务量。提高系统吞吐量有两种方法:一是减少服务时间,提高服务效率,在同样的资源条件下能做更多的事务处理;二是减少总体的响应时间,提高系统运行效率,让事务处理过程可以更快的完成。
2.2 用户响应时间
响应时间,顾名思义就是指在用户请求一项事务时,从用户提交到数据库返回结果所用的时间。
2.3 数据库实例效率
数据库实例效率包括多项指标,这些指标都是越接近100%数据库性能越好。Buffer Nowait会话申请一个buffer(兼容模式)不等待的次数比例。buffer hit:高速缓存命中率,反应物理读和逻辑读中间的比例。Library Hit:库字典缓存命中率,申请一个library cache object例如一个SQL游标时,其已经在library cache中的比例。Soft Parse: 软解析比例。Execute to Parse反映了 执行解析比。Non-Parse CPU非解析CPU比例,若大多数CPU都用在解析上了,则可能好钢没用在刃上了。
2.4 内存使用情况
内存是否合理使用,一般考虑的主要调整目标有两点:一是尽可能充分利用内存来降低物理读写,从而提升性能,比如设置合理的buffer cache来降低物理读。二是在系统最繁忙的时间段,要保证系统拥有足够的内存,如果分配过大的SGA和PGA导致系统繁忙时间段内存耗尽出现大量的换页,将会极大地降低系统性能。
2.5 I/O响应时间
Oracle对I/O类型等待事件的响应时间做了严格的规定,控制文件并行写、直接路径写、临时文件直接路径写和日志文件并行写响应时间需要控制在15毫秒内;控制文件顺序读、数据文件并行读、数据文件离散读、数据文件顺序读、直接路径读和临时文件直接路径读的响应时间需要控制在20毫秒内。
3 Oracle数据库性能优化
3.1 内存参数调整与优化
Oracle数据库实例的内存主要由SGA和PGA构成,其中SGA主要包括数据缓冲区、共享池和日志缓冲区;PGA主要包括哈希区、排序区等。它们的分配是否合理决定了数据处理各个阶段的性能。 3.1.1 数据缓冲区调整与优化
数据库缓存命中率是一个过时的参数,对于buffer hit% 看它的命中率有多高没有意义,主要是关注未命中的次数有多少。不合理的db_cache_size或者是SGA自动管理ASMM /Memory 自动管理AMM下都可能因为db_cache_size过小引起大量的db file sequential /scattered read等待事件。 此外与 buffer Hit%相关的指标值得关注的还有 table scans(long tables) 大表扫描这个统计项目、此外相关的栏目还有Buffer Pool Statistics 、Buffer Pool Advisory等。可以根据Buffer Pool Advisory和数据库服务器的整体内存情况来设置合理的db_cache_size,并使用内存的手工管理来保证db_cache_size不会改变。
3.1.2 共享池调整与优化
共享池主要由库缓冲、数据字典缓存组成。合理设置共享池大小,使共享池中保存较多的SQL语句以及相关数据对象和用户信息,可以提高SQL程序的解析效率。此外可以使用绑定变量来提高软解析比例,通过设置session_cached_cursors参数来提高执行解析比。这些方法都有助于降低共享池的争用。
3.1.3日志缓冲区调整与优化
日志缓冲区用于存放数据的修改信息。日志首先写入日志缓冲区,在一定条件下由LGWR进程将日志缓冲区的信息写入日志文件。如果日志缓冲区已满,但还没有写入日志文件,则日志写入失败。过多的日志写入失败,说明日志缓冲区偏小,影响数据库性能,应该调整LOG BUFFER 的大小。
3.1.4 PGA区域调整与优化
PGA区性能主要由哈希区和排序区决定。在Oracle数据库中,哈希和排序操作一般情况下在PGA中进行,如果PGA内存不足,会使用临时段进行排序,由于使用临时段是对磁盘的操作,会降低执行效率,因为建议尽量在PGA中进行哈希和排序操作。
3.2 磁盘I/O性能调整优化
数据库的数据是存储在物理磁盘上的。影响磁盘I/O性能的主要原因有磁盘规划不合理、I/O操作过量、热点块竞争和数据库碎片整理。磁盘规划方面尽可能使用转速较快的SAS盘或者FC盘,尤其是数据库的redo和undo。可以使用廉价磁盘冗余阵列实现条带化,使所有数据文件可以访问所有可用带宽。避免ASM和RAID之间的二次条带化等。
优化I/O操作的方法包括:将频繁扫描的小表固定在buffer cache的保留池中,使热点对象造成的I/O最小化;利用索引、分区表来降低查询中数据块的读取量。
3.3 SQL语句优化
SQL语句消耗资源主要分为I/O和CPU,优化SQL的实质就是在结果正确的前提下,将IO和CPU消耗降到最低,主要通过调整执行计划来实现。
执行计划三要素分为访问路径、关联方式和关联顺序。访问路径包括:全表扫描、索引扫描、先走索引再回表;关联方式分为循环嵌套连接、哈希连接和排序合并连接;关联顺序分为驱动表和从动表。
从访问路径来看,最终目的是访问最少的数据块来得到最终想要的结果。最优路径一般是通过索引找到目标数据块,因此,避免全表扫描是这个部分中的重要环节;此外还存在例如集群因子高导致回表耗费暴增的情形,需要建立联合索引来解决等等。
从表的关联方式和关联顺序来看:对于循环嵌套连接,要保证小结果集驱动,驱动表的选择列上最好有索引,在从动表的关联列上要有索引;对于哈希连接,要保证小结果集驱动,两表的限制条件要有索引,确保PGA中完成哈希运算;对于排序合并连接,两表的限制条件要有索引,连接条件索引消除排序,避免多余列致排序尺寸过大,保证PGA的尺寸。
3.4 Oracle表空间规划
表空间是Oracle数据库逻辑划分中最大的概念,如果能合理规划表空间,提高表空间的使用率,会对Oracle数据库性能的提升有很大的帮助。合理表空间的分布除了要求分离数据和索引,归档日志和重做日志也要分离。
优化表空间结构,首先要做好系统表空间的分离,除了数据字典,尽量不要存储非系统用户的信息;其次,由于索引段和数据段的数据管理以及查询会存在冲突,因此要把两者分开来放;最后,做好临时表的分离,由数据库动态产生的临时段是动态的,一般是存放在临时表空间中。
4 保证Oracle数据库较高安全性的方法
4.1 用户管理
数据库用户是连接数据库、存取数据库对象的通道。通过建立不同的用户组和用户口令验证,可以有效地防止非法Oracle用户进入数据库。另外应该注重数据库用户口令的复杂程度和使用期限,特别注重对SYS和SYSTEM两个特殊账户的保密管理。对于远程用户,应使用加密方式来访问数据库,加强网络上的DBA权限控制,如拒绝远程的DBA访问。
4.2 数据备份
Oracle数据库的备份是数据库管理员日常工作中的重中之重。Oracle数据库主要由以下几种备份方式:
4.2.1 逻辑备份
逻辑备份的核心是复制数据。这种复制方式不管数据库中具体是哪些文件存储数据,而是按照oracle提供的命令,通过逻辑的方式直接将数据保存在其他位置。例如导出文件,数据泵导出文件等。
4.2.2 物理备份
物理备份的核心是复制文件。对于oracle数据库来讲,就是将数据文件、控制文件、归档文件等oracle数据库启动时所必须的相关物理文件,复制到其他路径或者存储设备中。最主要的方式是RMAN。
4.2.3 Oracle数据库的备份策略
Oracle数据库备份在生产中一般使用RMAN备份,数据库备份分为普通备份和增量备份。选择备份策略一般考虑如下几点:
希望最早恢复到的时间点;系统何时负载最小,备份是密集I/O操作,应选择系统最空闲的时间段进行备份;数据库的规模,在一定程度上决定了是否使用增量备份;数据块是否被频繁修改,决定了是否应该使用增量备份;最后还应该考虑能够给予的恢复时间。
4.3 数据灾难备份
一般情况数据备份都在同一机房,在遭遇机房渗水、火灾甚至地震海啸时,数据备份也无能为力,这时数据灾难备份就会派上用场。数据灾难备份一般可以使用Oracle Golden Gate或者Data Guard在异地建立灾难备份中心,当主库在出现灾难时及时启用备份数据库支撑前端业务运行。
5 小结
Oracle数据库系统优化是一个需要宏观把控,多方考虑的任务,需要对Oracle数据库进行深入分析,多角度了解服务器、存储、网络及应用程序对数据库性能的影响,进而才能分析与解决问题。数据库的安全需要冗余,而冗余又制约着数据库效率,所以在实际工作中,要根据具体需求来权衡数据库安全和性能问题。
参考文献:
[1]侯东敏.浅谈Oracle数据库安全问题[J].科技天地,2009.01.
[2]刘哲.基于Oracle数据库系统的优化与性能调整研究[J].绿色科技,2012.05.
[3]甄福东.Oracle10g 数据库系统性能优化与调整[J].电脑知识与技术,2010.22.