ORACLE优化总结和注意事项本文档中对优化方法进行详述,并对在优化过程中发现的一些问题进行总结。列出ORACLE的一些注意事项注意事项:1.安装的过程中,请务必进行正确安装。2.当安装过程中出现错误的时候,最好清除原有遗留信息,进行重装,否则在数据库运行的过程中可能会出现各种诡异的问题。3.当数据库安装的过程中如果有警告信息,请记录下来,存档,方便排查数据库问题4.安装的过程中请选择OLTP的数据模板TransactionProcessing5.安装过程中文件的创建Controlfile、Datafiles、RedoLogGroups如果条件允许,最好分别放于不同的磁盘上。其中Controlfile和RedoLogGroups要尽量保证放在不同的磁盘上6.其中RedoLogGroups重做日志组最好建5组以上,每个文件大小在1G以上,最大不超过3G,避免出现进行check_point的时候造成bufferwait导致数据库宕机7.检查/etc/hosts文件配置最后一行信息,将当前的主机名和ip配对起来,避免应用服务连接数据库导致的性能损耗8.安装完成后,请启动数据库确保数据库基本安装成功步骤:sqlplus/nologconnect/assysdbastartup//启动数据库实例exit//退出sqlpluslsnrctlstart//启动监听emctlstartdbconsole上述步骤如果执行完,没有报错,则说明数据库基本安装正确,并可正常运行。如果执行上述操作的时候出现了问题,则说明数据库安装的过程中出现了某些问题,即使数据库实例当前可以启动连接,但是在以后稳定服务的过程中也是有可能会出现一些数据库问题的。配置OCI连接因为当前应用服务采用OCI连接的方式,因此在运行应用服务之前要配置OCI的连接条件1、需求软件:如果应用服务是跟ORACLE数据库安装在一台机器上,则不需要额外软件,直接进入第2步即可如果应用服务是跟ORACLE数据库分开部署,则需要在部署应用服务的机器上安装一个客户端(精简客户端即可大小几M)需要从官方网站下载三个文件instantclient-basic-linux-x86-64-10.2.0.3-20070103.zipinstantclient-sqlplus-linux-x86-64-10.2.0.3-20070103.zipinstantclient-jdbc-linux-x86-64-10.2.0.3-20070103.zip解压到同一个目录中,同时在该目录下新建一个文件tnsnames.ora文件,文件中添加以下内容#GeneratedbyOracleconfigurationtools.HMS=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.15.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=hms)))注:本文件可以直接从oralce的安装目录中获取,只要修改HOST和服务名,SID号即可文件目录:/export/home/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora2、配置操作系统变量如果应用服务是跟ORACLE数据库安装在一台机器上,只需要将oracle用户的环境变量信息拷贝到启动应用服务的用户下面即可。进入用户的根目录下,修改.bash_profile文件或者.bashrc文件(经测试两个文件均可以,个人推荐修改.bashrc文件)下图是Oracle环境变量,需要拷贝的是关于ORACLE的变量。该配置要求用户具有oracle安装目录下的读权限如果是分开部署安装的精简客户端,则需要自己手工添加环境变量信息。进入用户根目录下修改.bashrc文件或者.bash_profile文件。如下图3、配置完后,使文件生效,source.bashrc4、运行sqlplus/nolog命令如果能进入sql命令行,则说明配置成功优化方法在讲述优化方法之前,首先要明白,优化方法是针对特定的业务的,不同的业务对数据库有不同的需求,然后就会有不同的优化方法下述优化方法针对的业务为:当前网管服务业务事务量很大,但是单个事务较小。插入和更新频繁,并且重复sql语句较多5000个网元以上,每15分钟报一次性能文件、10分钟一次告警、3分钟一次Inform,30分钟一次UE日志机器的配置内存要在20g以上,cpu至少要有4个核心本次优化主要是对数据库服务参数的调整达到提高数据库性能的目的数据库的调优是一个不断持续的过程,不是一次就能达到目标的,需要在业务稳定运行的过程中不断跟踪数据库状态,根据数据库的瓶颈不断对服务器参数进行微调,最终确定最优参数值。当前调优内容和方法如下:1、归档模式更改:当前值:非归档模式方法:sqlplus/assysdbashutdownimmediatestartupmountalterdatabasenoarchivelogalterdatabaseopen2、修改参数sga_targe和sga_max_size加大oracle的缓存空间,进行了多次调整当前值:sga_targe16G;sga_max_size16G方法:altersystemsetsga_target=16Gscope=spfile;altersystemsetsga_max_size=16Gscope=spfile;3、将SGA区内存分配改为自动管理(即是启用ASMM):修改参数statistics_level当前值:TYPICAL方法:altersystemsetstatistics_level=typical;4、改变缓存数据的刷写方式,避免双缓存刷写当前值DIRECTIO方法:altersystemsetfilesystemio_options='DIRECTIO'scope=spfile;5、修改pga区内存大小,用于优化会话缓存和游标缓存当前值:3g方法:altersystemsetpga_aggregate_target=3gscope=spfile;6、修改db_cache_size大小增加缓存命中率和最大数据文件的大小当前值:16K方法:altersystemsetdb_16k_cache_size=16384scope=spfile;7、修改数据库process和session值,用于优化数据内线程数和保留会话数当前值:process400;sessions500方法:altersystemsetprocesses=400scope=spfile;altersystemsetsessions=500scope=spfile;8、将REDO日志放到另外的磁盘中跟数据文件分开当前:将REDO日志放在跟oracle安装数据文件不同的磁盘上方法:安装的时候可以选择也可以手动修改,见9和109、调整日志组文件的大小(经过了多次调整),避免数据库进行频繁的check_points当前:单个日志文件大小为1-2g方法:创建2个新的日志组alterdatabaseaddlogfilegroup4('/var/lib/oradata/hms/redo04.log')size10240k;alterdatabaseaddlogfilegroup5('/var/lib/oradata/hms/redo05.log')size10240k;切换当前日志到新的日志组altersystemswitchlogfile;altersystemswitchlogfile;删除旧的日志组alterdatabasedroplogfilegroup1;alterdatabasedroplogfilegroup2;alterdatabasedroplogfilegroup3;操作系统下删除原日志组1、2、3中的文件rm–rfredo01.logrm–rfredo02.logrm–rfredo03.log重建日志组1、2、3alterdatabaseaddlogfilegroup1('/var/lib/oradata/hms/redo01.log')size1G;alterdatabaseaddlogfilegroup2('/var/lib/oradata/hms/redo02.log')size1G;alterdatabaseaddlogfilegroup3('/var/lib/oradata/hms/redo03.log')size2G;切换日志组altersystemswitchlogfile;altersystemswitchlogfile;altersystemswitchlogfile;删除中间过渡用的日志组4、5alterdatabasedroplogfilegroup4;alterdatabasedroplogfilegroup5;10、调整ORACLE重做日志组文件的个数增加日志组文件大小后checkpoint变少了,但是在运行的时候发现,当网管系统更新和插入数据库的数据持续频繁的时候,会导致很多的waitbuffer,甚至数据库宕机,因此要增加日志文件的个数当前:8个文件组方法:alterdatabaseaddlogfilegroup4('/var/lib/oradata/hms/redo04.log')size2g;alterdatabaseaddlogfilegroup5('/var/lib/oradata/hms/redo05.log')size2g;alterdatabaseaddlogfilegroup6('/var/lib/oradata/hms/redo06.log')size2g;alterdatabaseaddlogfilegroup7('/var/lib/oradata/hms/redo07.log')size2g;alterdatabaseaddlogfilegroup8('/var/lib/oradata/hms/redo08.log')size2g;altersystemswitchlogfile;altersystemswitchlogfile;altersystemswitchlogfile;altersystemswitchlogfile;altersystemswitchlogfile;11、加大数据库表序列的缓存当前值:150方法:ALTERSEQUENCESEQ_NE_CHANGE_STATUSCACHE150;已经提交数据库脚本12、调整open_cursors大小,允许打开尽可能多的游标当前值:65535(最大值)方法:altersystemsetopen_cursors=65535scope=spfile;13、调整session_cached_cursors,缓存连接打开的游标当前值:8000方法:altersystemsetsession_cached_cursors=8000scope=spfile;14、调整oracle优化器运行模式当前值:choose方法:altersystemsetoptimizer_mode=choosescope=spfile;15、调整了cursor_sharing的工作模式先是改为SIMILAR后改为FORCE当前值:FORCE方法:altersystemsetcursor_sharing=forcescope=spfile;16、调整CONNECT_TIME和IDLE_TIME时间长短,避免连接池报错当前值:CONNECT_TIME480;IDLE_TIME120方法:ALTERPROFILEDEFAULTLIMITCONNECT_TIME480;ALTERPROFILEDEFAULTLIMITIDLE_TIME120;】上述参数