网站首页 > 文章中心 > 其它

如何查oracle的性能

作者:小编 更新时间:2023-08-21 14:13:45 浏览量:268人看过

如何检查oracle数据库性能

这种问题要回答好要求知识比较全面.

①. 从操作系统层次上看

看CPU 内存 swqp(交换分区)等使用率

主要看磁盘读写.可以用dd测磁盘读写的速度 也可以在业务高峰期检测磁盘的速率.

先要看数据库各个参数的值 . 如sga的大小,process的大小,redo日志的个数与大小等这些关系到性能的参数是否设置合理.

长期观察的方式就是看各个时期的AWR报告.里面有各种性能指标,以及按执行时间或资源排列的sql ,以及各种等待时间的排名.从这里面可以掌握数据库的长期的性能变化.

如何查oracle的性能-图1

即时观察的方式就是利用各种sql 查询 数据库在当前时间的各个性能指标(AWR报告里面的各种指标也都是通过sql查询出来的)

还有对数据库整体的一个检查:

如 表的大小,表是否需要分区而没有分区,索引是否创建,索引是否失效,开发人员写的sql是否正确使用到了索引,频繁使用的sql是否有绑定变量,有频繁大批量增删改的表是否存在高水位...

额 都说到这里了大家应该明白,这个话题涉及的知识非常多,尽可能多的学习一些东西,good luck.

如何查询oracle 数据库性能,sql资源占用

作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作.下面简单介绍下一些查看oracle性能的一些实用方法:

①.、查询每台机器的连接数

select?t.MACHINE,count(*)?from?v$session?t?group?by?t.MACHINE

这里所说的每台机器是指每个连接oracle数据库的服务器,每个服务器都有配置连接数据库的连接数,以websphere为例,在数据源中,每个数据源都有配置其最大/最小连接数.

执行SQL后,可以看到每个服务器连接oracle数据库的连接数,若某个服务器的连接数非常大,或者已经达到其最大连接数,那么这台服务器上的应用可能有问题导致其连接不能正常释放.

这个SQL查询出来的结果不能看到具体的SQL语句,需要看具体SQL语句的执行下面的方法.

select?sid,username,sql_hash_value,b.sql_text

from?v$session?a,v$sqltext?b

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.

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

from?v$sqlarea?a,dba_users?b

where?a.parsing_user_id=b.user_id

and?a.disk_reads?100000

order?by?a.disk_reads?desc;

用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的如何查oracle的性能相关咨询.

V$SQL是内存共享SQL区域中已经解析的SQL语句.

该表在SQL性能查看操作中用的比较频繁的一张表,关于这个表的详细信息大家可以去?上学习,介绍得比较详细.我这里主要就将该表的常用几个操作简单介绍一下:

select?sql_text,executions

from?(select?sql_text,executions,

rank()?over

(order?by?executions?desc)?exec_rank

from?v$sql)

select?buffer_gets,sql_text

from?(select?sql_text,buffer_gets,

dense_rank()?over

(order?by?buffer_gets?desc)?buffer_gets_rank

这种需要大量缓冲读取(逻辑读)操作的SQL基本是大数据量且逻辑复杂的查询中会遇到,对于这样的大数据量查询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性能查询

select rownum as rank, a.*

from (select PARSING_SCHEMA_NAME RUN_USER, --执行用户

SQL_FULLTEXT, --SQL文本,全,带格式

sql_text, --SQL文本前面部分

elapsed_Time , --单位是微秒,语句执行完的总时间,包括CPU时间和等待时间

cpu_time , --CPU时间,语句运行的时间

elapsed_Time - cpu_time wait_time,

executions, --执行次数

elapsed_Time/(executions+1) Per_Time, --每次执行平均时间,

buffer_gets, --

disk_reads, --磁盘读

hash_value, --SQL的hash_value,以备获取完整SQL

USER_IO_WAIT_TIME,

SORTS --排序次数

from v$sqlarea t

order by elapsed_time desc) a

order by elapsed_time desc

以上就是土嘎嘎小编为大家整理的如何查oracle的性能相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章