怎么判断oracle性能 查看oracle状态是否正常

如何检查oracle数据库性能这种问题要回答好要求知识比较全面 。
1 从操作系统层次上看
看CPU内存swqp(交换分区)等使用率
2从磁盘上看
主要看磁盘读写 。可以用dd测磁盘读写的速度 也可以在业务高峰期检测磁盘的速率 。
3 从数据库本身来看 。
先要看数据库各个参数的值。如sga的大小怎么判断oracle性能,process的大小怎么判断oracle性能,redo日志的个数与大小等这些关系到性能的参数是否设置合理 。
长期观察的方式就是看各个时期的AWR报告 。里面有各种性能指标怎么判断oracle性能,以及按执行时间或资源排列的sql,以及各种等待时间的排名 。从这里面可以掌握数据库的长期的性能变化 。
即时观察的方式就是利用各种sql 查询 数据库在当前时间的各个性能指标(AWR报告里面的各种指标也都是通过sql查询出来的)
还有对数据库整体的一个检查怎么判断oracle性能:
如 表的大小,表是否需要分区而没有分区,索引是否创建,索引是否失效 , 开发人员写的sql是否正确使用到怎么判断oracle性能了索引,频繁使用的sql是否有绑定变量,有频繁大批量增删改的表是否存在高水位 。。。
额总之,这个话题涉及的知识非常多,尽可能多的学习一些东西,祝你好运 。
如何查询oracle 数据库性能,sql资源占用作为一个开发/测试人员,或多或少都得和数据库打交道 , 而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据 , 那么对sql性能的掌控又成了我们工作中一件非常重要的工作 。下面简单介绍下一些查看oracle性能的一些实用方法:
1、查询每台机器的连接数
select t.MACHINE,count(*) from v$session t group by t.MACHINE
这里所说的每台机器是指每个连接oracle数据库的服务器,每个服务器都有配置连接数据库的连接数,以websphere为例,在数据源中,每个数据源都有配置其最大/最小连接数 。
执行SQL后,可以看到每个服务器连接oracle数据库的连接数,若某个服务器的连接数非常大,或者已经达到其最大连接数,那么这台服务器上的应用可能有问题导致其连接不能正常释放 。
2、查询每个连接数的sql_text
v$session表里存在的连接不是一直都在执行操作,如果sql_hash_value为空或者0,则该连接是空闲的,可以查询哪些连接非空闲, web3 是机器名,就是WebSphere Application Server 的主机名 。
select t.sql_hash_value,t.*from v$session t where t.MACHINE='web3' and t.sql_hash_value!=0
这个SQL查询出来的结果不能看到具体的SQL语句,需要看具体SQL语句的执行下面的方法 。
3、查询每个活动的连接执行什么sql
select sid,username,sql_hash_value,b.sql_text
from v$session a,v$sqltext b
where a.sql_hash_value = https://www.04ip.com/post/b.HASH_VALUE and a.MACHINE='web3'
order by sid,username,sql_hash_value,b.piece
order by这句话的作用在于 , sql_text每条记录不是保存一个完整的sql,需要以sql_hash_value为关键id,以piece排序 , 如图
Username是执行SQL的数据库用户名 , 一个sql_hash_value下的SQL_TEXT组合成一个完整的SQL语句 。这样就可以看到一个连接执行了哪些SQL 。
4、.从V$SQLAREA中查询最占用资源的查询
select b.username username,a.disk_reads reads, a.executions exec,
a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
a.sql_text Statement
fromv$sqlarea a,dba_users b
where a.parsing_user_id=b.user_id
and a.disk_reads100000
order by a.disk_reads desc;
用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信息 。
V$SQL是内存共享SQL区域中已经解析的SQL语句 。
该表在SQL性能查看操作中用的比较频繁的一张表,关于这个表的详细信息大家可以去 上学习,介绍得比较详细 。我这里主要就将该表的常用几个操作简单介绍一下:
1、列出使用频率最高的5个查询:
select sql_text,executions
from (select sql_text,executions,
rank() over
(order by executions desc) exec_rank
from v$sql)
where exec_rank =5;
该查询结果列出的是执行最频繁的5个SQL语句 。对于这种实用非常频繁的SQL语句,我们需要对其进行持续的优化以达到最佳执行性能 。
2、找出需要大量缓冲读?。呒粒┎僮鞯牟檠?
select buffer_gets,sql_text
from (select sql_text,buffer_gets,
dense_rank() over
(order by buffer_gets desc) buffer_gets_rank
from v$sql)
where buffer_gets_rank=5;
这种需要大量缓冲读?。呒粒┎僮鞯腟QL基本是大数据量且逻辑复杂的查询中会遇到,对于这样的大数据量查询SQL语句更加需要持续的关注,并进行优化 。
3、持续跟踪有性能影响的SQL 。
SELECT * FROM (
SELECT PARSING_USER_ID,EXECUTIONS,SORTS,
COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea
ORDER BY disk_reads DESC
)
WHERE ROWNUM10
这个语句在SQL性能查看中用的比较多,可以明显的看出哪些SQL会影响到数据库性能 。
本文主要介绍了使用SQL查询方式查看oracle数据库SQL性能的部分常用方法 。此外还有许多工具也能实现SQL性能监控,大家可以在网上搜索相关知识进行学习 。
转载仅供参考,版权属于原作者
九大Oracle性能优化基本方法详解 Oracle性能优化基本方法包括一下几个步骤 包括
)设立合理的Oracle性能优化目标
)测量并记录当前的Oracle性能
)确定当前Oracle性能瓶颈(Oracle等待什么 哪些SQL语句是该等待事件的成分)
)把等待事件记入跟踪文件
)确定当前的OS瓶颈
)优化所需的成分(应用程序 数据库 I/O 争用 OS等)
)跟踪并实施更改控制过程
)测量并记录当前性能
)重复步骤 到 直到满足优化目标
下面来一一详述
设立合理的Oracle性能优化目标
重点 关于设立目标的最重要的一点是它们必须是可量化和可达到的
方法 目标必须是当前性能和所需性能的的陈述形式的语句
测量并记录当前Oracle性能重点
)需要在峰值活动时间获得当前系统性能快照
)关键是要在出现性能问题的时间段内采集信息
)必须在合理的时间段上采集 一般在峰值期间照几个为期 分钟的快照
确定当前Oracle性能瓶颈重点 从Oracle 等待接口v$system_event v$session_event和v$session_wait中获得等待事件 进而找出影响性能的对象和sql语句 方法如下
)首先 利用v$system_event视图执行下面的查询查看数据库中某些常见的等待事件
select * from v$system_event
where event in ( buffer busy waits
db file sequential read
db file scattered read
enqueue
free buffer waits
latch free
log file parallel write
log file sync );
)接着 利用下面对v$session_event和v$session视图进行的查询 研究具有对上面显示的内容有贡献的等待事件的会话
select se sid s username se event se total_waits se time_waited se average_wait
from v$session s v$session_event se
where s sid = se sid
and se event not like SQL*Net%
and s status = ACTIVE
and s username is not null;
)使用下面查询找到与所连接的会话有关的当前等待事件 这些信息是动态的 为了查看一个会话的等待最多的事件是什么 需要多次执行此查询
select sw sid s username sw event sw wait_time sw state sw seconds_in_wait SEC_IN_WAIT
from v$session s v$session_wait sw
where s sid = sw sid
and sw event not like SQL*Net%
and s username is not null
order by sw wait_time desc;
)查询会话等待事件的详细信息
select sid event p text p p text p p text p
from v$session_wait
where sid beeenand
and event not like %SQL%
and event not like %rdbms% ;
)利用P P 的信息 找出等待事件的相关的段
select owner segment_name segment_type tablespace_name
from dba_extents
where file_id = fileid_in
and blockid_in beeen block_id and block_idblocks ;
)获得操作该段的sql语句
select sid getsqltxt(sql_hash_value sql_address)
from v$session
where sid = sid_in;
)getsqltxt函数
)至此已经找到影响性能的对象和sql语句 可以有针对性地优化
把等待事件记入跟踪文件
重点 如果在跟踪系统上的等待事件时 由于某种原因遇到了麻烦 则可以将这些等待事件记入一个跟踪文件 方法如下
)对于当前会话
alter session set timed_statistics=true;
alter session set max_dump_file_size=unlimited;
alter session set events trace name context forever level ;
)执行应用程序 然后在USER_DUMP_DEST指出的目录中找到跟踪文件
)查看文件中以词WAIT开始的所有行
)对于其它的会话
)确定会话的进程ID(SPID) 下面的查询识别出名称以A开始的所有用户的会话进程ID
select S Username P Spid from V$SESSION S V$PROCESS P
where S PADDR = P ADDR and S Username like A% ;
)以sysdba进入sqlplus执行
alter session set timed_statistics=true;
alter session set max_dump_file_size=unlimited;
oradebug setospid
oradebug unlimit
oradebug event trace name context forever level X /* Where X = ( ) */
)跟踪某个时间间隔得会话应用程序
)在USER_DUMP_DEST 的值指出的目录中利用SPID查看跟踪文件
)查看文件中以词WAIT开始的所有行
确定当前OS瓶颈 )Windows NT上的监控
使用控制面板 〉管理工具 〉性能即可
)UNIX上的监控
使用通用性的工具 包括sar iostat cpustat mpstat netstat top osview等
.Oracle性能优化所需的成分(应用程序 数据库 I/O 争用 OS等)
.跟踪并实施更改控制过程
.测量并记录当前Oracle性能
lishixinzhi/Article/program/Oracle/201311/18709
【怎么判断oracle性能 查看oracle状态是否正常】关于怎么判断oracle性能和查看oracle状态是否正常的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读