SAP架构下Oracle数据库的性能优化研究
2016-12-31刘宏志
刘宏志
(中国东方电气集团有限公司,四川 成都 611731)
SAP架构下Oracle数据库的性能优化研究
刘宏志
(中国东方电气集团有限公司,四川 成都 611731)
随着信息技术的不断发展,SAP系统被越来越多的企业运用。Oracle作为SAP系统使用最广泛的数据库系统,其性能对SAP系统有着重要影响。文章主要对SAP架构下Oracle数据库的主要性能进行了研究,并提出了调整和优化的措施。
SAP架构;Oracle数据库;系统性能;优化
SAP R/3系统是一种典型的3层架构的系统,除了应用服务器和展现层外,数据库对其性能有着重要影响。Oracle作为业界最主流的数据库系统之一,在SAP R/3系统中应用广泛。但我国的数据库规模呈逐年上升趋势,并且连接数量也有增无减,导致Oracle数据库的功能不能很好地发挥以往性能。为使Oracle数据库能够继续发挥作用,需要对系统进行优化升级,主要从服务器以及应用程序和网络3方面入手,对服务器进行调整,使之在有限的硬件资源条件下,达到性能最优[1]。
1 设置服务器以适合Oracle数据库运行
服务器对Oracle数据库性能有着直接影响。服务器设置不合理将会直接降低Oracle的运行效率,也就是说服务器是整个系统的基础,如果基础没有打好,整个数据库就不能真正发挥作用,那么系统再怎样优化也无济于事。
首先,要知道Oracle数据库按照什么样的原则为指导,对服务器资源进行科学合理的分配:尽量使Oracle可使用的资源最大化。如果有条件,尽量不使Oracle数据库和SAP系统同时使用同一个服务器,尽可能使Oracle占有本服务器最多的资源。
其次,对服务器里的内存加以优化,对其进行调整,尽量减少虚拟内存的使用。当物理内存不能满足Oracle的要求时,操作系统会调用虚拟内存对物理内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。只有使服务器中的内存增大了,才能减少虚拟内存对物力内存的占用。
第三,对Oracle进程进行参数调整,使优先级统一为相同参数。因为在Oracle数据库系统中,所有的后台和前台数据库服务器进程执行的都是同等重要的工作,需要同等的优先级。
2 调整内存分配
内存参数的调整主要是指Oracle数据库的系统全局区(System Global Area,SGA)的调整。作为Oracle数据库的核心部分,SGA是对数据库数据进行快速访问的一个系统区域,可以被服务器和用户共享[2]。共享池以及数据和日志缓冲区域组成了SGA。SGA在日常运行中须不停地对数据进行释放和配置,只有把SGA设置在服务器的物力内存之中,才能尽可能快地对数据进行访问使用。内存的调整主要是指调整组成SGA的内存区域的大小来提高系统性能,具体由SGA_MAX_SIZE,DB_CASHE_SIZE,PGA_ AGGREGATF_TARGET,SHARRED_POOL_SIZE 4个参数控制。在对SGA进行物理内存设置时,只要按照一般原则设置即可:通常SGA占据物理内存的50%~70%左右。服务器物理内存越大,给SGA的比例也可以越高一些。共享池主要存储如SQL,PL/SQL存储过程及包、数据字典等,对于SAP系统较为固定,设置时不需超过20 G,富余的内存可以分配给数据缓冲区。
3 调整磁盘I/O
数据库的数据最终要存储在物理磁盘上。磁盘I/O操作是数据库性能最重要的方面,它是系统消耗最大的Oracle数据库操作。为了避免与I/O相关的性能瓶颈,监控磁盘I/O并对其进行调整非常重要。影响磁盘I/O的性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理[3]。磁盘I/O的调优主要包括文件独立放置、使用磁盘阵列、使用分区、应用裸设备4个方法[4]。除了裸设备外,前3个方法的核心思想都是将数据文件放置在不同的物理磁盘上,从而利用并行访问提升磁盘读写的速度,减少不同进程对磁盘竞争的几率。而裸设备指的是未经格式化的磁盘分区,Oracle可以对其进行读和写操作,而没有缓冲开销。裸设备可以用于写操作频繁、顺序访问的数据和回滚日志文件,但不能用在备份程序中。
4 调整数据库服务器的回滚段
通常Oracle在回滚段将数据修改前的值保存在内。回滚段包括3个作用:其一是事务回滚作用:数据库可以从回滚段找回数据改变前的数据记录,也就是说回滚段具有原始数据读取功能;事务恢复作用:如果对数据的后期操作失败,那么可以在下次打开Oracle时将未提交的原始数据利用回滚段中的重做日志文件对其进行恢复;读一致性功能:如果回话未对修改过的数据提交保存,那么其他会话不会进行改变,但是其他会话如果修改了查询所需的数据资源,那么这个会话在进行查询操作时数据就会改变,Oracle将利用回滚段的数据前影像来构造一个读一致性视图。由此可见回滚段在数据库中起着关键性的作用,如果设计得不合理,不管多好的剩余部件设计,都会使SAP系统不能发挥其应有的功能、作用。因此,在开展回滚段的优化调整时应遵循以下原则。
(1)回滚段独立放置。为了发挥回滚段应有的性能,应将回滚段同其他诸如索引、数据字典等的数据分开放置,此时应为回滚段创建一个或一个以上的独立表空间。
(2)构建回滚段群。为了使回滚段在面对不同类型数据时能够快速作出反应,应该构建较小、较大、特大3种大小不同的回滚段群,须注意的是不要将这3种回滚段群放置在同一个表空间上,应分开放置。并且每个群的内部大小相同,以满足该组事务处理的最大要求。
(3)回滚段的建立数量应科学合理。并不是回滚段的数量越多越好,而应该参照SAP的并发事务数量建立,SAP的并发事务少于16个,则设置4个回滚段;当并发事务多余16个少于32个时,设置8个回滚段;并发事务多余32个时,则设置并发事务数量/4的回滚段。
5 优化ABAP程序中SQL语句
ABAP开发语言是SAP公司为SAP软件专门开发的一种编程语言,是为从事二次开发推出的一种面向对象的语言[5]。ABAP采用Open SQL来访问和操作数据库。优化ABAP中的SQL语句,可以有效降低数据库的负载,提升数据库的系能。ABAP的SQL语句的优化原则是尽量减少数据库中的IO操作,有以下4个要求。
避免使用SELECT … ENDSELECT语句。SELECT ENDSELECT语句其实是一个循环体,因此如果使用TABLE赋值,将会大大降低循环体的使用,提高性能。
尽可能减少SELECT *的使用频率,尽量使用需要读取的字段来做检索。
使用FOR ALL ENTRIES IN语句用来把内表以及数据表相连,能够大大减少数据的提取频率,优化数据。
如果Where子句中含有选择性条件,如Where N=20,则将最具有选择性部分放在表达式最后。
6 合理使用视图、索引
为使用户能够快速便捷地使用应用程序,在设计系统时可以利用视图对数据进行隐藏、删减,同时能够将涉及多个表的复杂查询以视图的方式给出。这样能够通过索引快速查找数据,同时还可减少磁盘I/O,优化对数据表的查询,加速SQL语句的执行。除此之外,构建索引提高系统性能,应从以下方面入手:该表常用来在索引列上查询,该表不常更新、插入、删除等操作,查询出来的结果记录数应控制在原表的2%~4%。
7 结语
综上所述,随着SAP系统的应用深入,对Oracle数据库的性能提出了越来越高的要求。对Oracle数据库性能进行调优,根本目的在于提升SAP系统的效率和功能。但影响Oracle数据库性能的因素非常多,优化与调整是需要不断摸索和总结的过程。必须对影响Oracle性能的因素进行分析,针对每一个因素都作出科学合理的调整和优化,才能够保证最终Oracle数据库应用系统性能达到SAP系统的要求。
[1]邹俊. 基于Oracle数据库系统性能调整与优化研究[D].南昌:江西财经大学,2006.
[2]魏亚楠,宋义秋. Oracle数据库应用系统的性能优化[J].制造业自动化,2010(8):204-206.
[3]刘哲. 基于Oracle数据库系统的优化与性能调整研究[J].绿色科技,2012(5):283-284.
[4]王雷,曾蕴波,王璐. Oracle数据库的性能调整与优化方法探析[J].航天器工程,2008(6):129-133.
[5]孙勤.浅谈SAP中ABAP程序的优化方法[J].电脑知识与技术,2012(19):4757-4758.
Research on performance optimization of Oracle database under SAP architecture
Liu Hongzhi
(China Dongfang Electric Corporation, Chengdu 611731, China)
With the continuous development of information technology, SAP system has been used by more and more enterprises. As the most widely used database system of SAP system, Oracle’s performance has an important influence on the SAP system. The main performance of the Oracle database under the SAP architecture is studied, and the adjustment and optimization measures are put forward in this paper.
SAP architecture; Oracle database; system performance; optimization
刘宏志(1984— ),男,四川德阳,硕士,工程师;研究方向:数据挖掘,模式识别。