使用脚本查看oracle缓存的sql语句情况

xiaoxiao2022-12-03  108

select t.sql_id,t.executions_total,t.disk_reads_total,t.parse_calls_total,a.sql_text from sys.wrh$_sqlstat t,sys.wrh$_sqltext a where t.parsing_schema_name='WW_XRAPUSER' and t.sql_id=a.sql_id;

 执行这个语句得到sql语句的缓存情况

 

如上面这张表中,他会反映某个特定Sql语句的执行信息。其中第一个参数Excutions_Total参数纪录了某条SQL语句总共执行的次数。而第二个参数Disk-Reads-Totali参数则统计了从磁盘中读取数据的次数。当SQL语句的执行次数特别多而且又是多次从磁盘中读取数据的话,那么数据库管理员就要注意了。因为从磁盘中读取数据要比从内存中读取数据慢的多。此时,若数据库管理员能够想方设法,让这些执行频率高的SQL语句不直接从磁盘中读取数据,而是从内存中读取数据,那么就可以非常有效的提高SQL语句的执行效率。

 

另附:

先用下面的公式计算高速缓存区的命中率:1-(physical reads/(db block gets+consisten gets))上面的数据由下面得到

select name,value from v$sysstat where name in('physical reads','db block gets','consistent gets');

 

如果命中率是0.90或更高,遇明是好的。如果过低就要增加db_block_buffers的值。

转载请注明原文地址: https://www.6miu.com/read-4979252.html

最新回复(0)