Image 2 Image 3 Image 3 Image 3

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

频道:行业资讯 日期: 浏览:1097

摘要:IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。

一般情况下,机械硬盘的IO速率为:5400转笔记本硬盘平均读写速度大致在60-90MB这个区间;7200转台式机硬盘大致在130-190MB区间;10000转和15000转台式机硬盘数据大致为 135-215MB之间。而固态硬盘的IO数据为:固态硬盘读写速度与容量成正比,目前市售的至少300MB+;1TB固态硬盘普遍500MB+;大于1TB的速度一般在700MB+。

如果发现Oracle的访问速度缓慢,查看其IO的读写速率已经接近磁盘的极速,那么应该考虑优Oracle数据库的调优问题,比如是否由死锁,是否SGA配置参数有误等等。

现将有关Oracle的关于IO读写速率过大的问题的处理过程整理出来,供参考。其详细内容请看下文。

一、访问Oracle数据库

1、登陆Linux系统

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

2、切换到oracle 用户: su - oracle

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

3、访问oracle 数据库: sqlplus / as sysdba

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

二、Oracle的IO速率问题

现象:早上发现应用系统的访问缓慢,查看服务器的内存和CPU占用不算太高,进一步分析磁盘的IO速率。现象如下

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

分析:看第一、第二行,这个磁盘的的读取速度太大了,一秒将近180M,接近服务器硬盘的最快读取速度了。

解决:查看占用磁盘IO速率的进程都是Oracle的进程,需要从Oracle入手分析。

三、Oracle配置的分析与调整

1、数据库死锁现象分析与处理

(1)、锁表查询的代码

SQL>select * from v$locked_object;

(2)、查看哪个表被锁

SQL>select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

(3)、查看是哪个session引起的

SQL>select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

(4)、杀掉对应进程

SQL>alter system kill session ‘sid,serial#’;

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

2、清理僵尸进程

(1)、查看僵尸进程

$ ps -ef | grep defunct

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

(2)、查看僵尸进程父进程

$ ps -ef | grep 21396

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

(3)、排查杀该父进程没有风险后杀掉

$ kill -9 21396

3、调整SGA配置

(1)、查看SGA

SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。包含Oracle 服务器的数据和控制信息,是在Oracle服务器所驻留的计算机的实际内存中得以分配. 理论上SGA可占OS系统物理内存的一半左右。

调整原则:SGA+PGA+OS使用内存 <总物理RAM

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率
Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

(2)、修改SGA的大小

注意事项:

第一:sga_target不能大于sga_max_size,可以设置为相等。

第二:SGA加上PGA等其他进程占用的内存总数必须小于操作系统的物理内存。

第三:在进行修改操作前,必须备份dbs目录下的所有文件。

命令行修改:

首先

SQL> alter system set sga_target=16g scope=spfile;

SQL> alter system set sga_max_size=16g scope=spfile;

(如果spfile文件不存在,需先创建createspfile from pfile;)

Oracle数据库性能调优实践(七)——优化磁盘IO读写速率

然后

SQL> shutdown immediate

SQL> startup

SQL> show sga; --查看SGA的大小已经被修改

备注:调高SGA的内存参数可以更多的使用内存而减少磁盘IO读写。

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码