--共享池中保留区的信息查询
select * from v$shared_pool_reserved
--查询hard parse比率
select a.value as Total,b.value as "Hard Pase",
round(b.value/a.value,2) as Ratio
from v$sysstat a,v$sysstat b
where a.name=‘parse count(total)‘ and b.name=‘parse count(hard)‘;
--查询哪些SQL语句没有使用绑定变量
select d.plan_hash_value plan_hash_value,
d.execnt execnt,
a.hash_value hash_value,
a.sql_text sql_text
from v$sqltext a,
(select plan_hash_value,hash_value,execnt
from (select c.plan_hash_value,
b.hash_value,
c.execnt,
rank() over(partition by c.plan_hash_value order by
b.hash_value) as hashrank
from v$sql b,
(select count(*) as execnt,plan_hash_value
from v$sql
where plan_hash_value <> 0
group by plan_hash_value
having count(*)>10
order by count(*) desc) c
where b.plan_hash_value=c.plan_hash_value
group by c.plan_hash_value,b.hash_value,c.execnt)
where hashrank<=3) d
where a.hash_value=d.hash_value
order by d.execnt desc,a.hash_value,a.piece;
--调整共享池大小参考视图
select * from v$shared_pool_advice
--查询保留区的统计信息
select * from V$shared_Pool_Reserved
--确认shared_pool_reserved_size的空间情况
select round(free_space/1024/1024,1) "FREE SPACE MB",
request_misses,
request_failures
from v$shared_pool_reserved
--确认shared_pool_reserved_size的命中率(以上结果应该都要小于1%),否则应该加大shared_pool_reserved_size
select (request_misses/(requests+0.0001))*100 "REQUEST MISSES RATIO",
(request_failures/(requests+0.0001))*100 "REQUEST FAILURES RATIO"
from v$shared_pool_reserved
--对象在库缓存中消耗的内存
select substr(owner,1,10) owner,
substr(type,1,12) type,
substr(name,1,20) name,
executions,
sharable_mem "MEMORY USED",
substr(kept||‘ ‘,1,4) "KEEP"
from v$db_object_cache
where type in(‘TRIGGER‘,‘PROCEDURE‘,‘PACKAGE BODY‘,‘PACKAGE‘)
order by executions desc;
--查询对象被加载的次数,以及是否被保留到内存内
select owner,name sharable_mem,kept,loads
from v$db_object_cache
where loads>1
order by loads desc;
--使用内存超出了5MB,但并没有被保留在内存内
select owner,name,sharable_mem,kept
from v$db_object_cache
where sharable_mem>51200
and kept=‘NO‘
order by sharable_mem desc;
--利用v$sql查询出使用频率最高的10句sql
select sql_text,executions
from (select sql_text,executions,rank() over(order by executions desc) exec_rank
from v$sql)
where exec_rank<=10
--利用v$sql查询出最耗费磁盘读的前10句SQL
select disk_reads,sql_text
from (select sql_text,disk_reads,dense_rank() over(order by disk_reads desc) disk_reads_rank
from v$sql)
where disk_reads_rank<=10
--利用v$sql查询出最耗费内存的前10句逻辑读SQL
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<=10
--利用v$sqlarea查出消耗资源最多的sql的hash_value
select hash_value,executions,buffer_gets,disk_reads,parse_calls
from v$sqlarea
where buffer_gets>10000000 or disk_reads>1000000
order by buffer_gets+100*disk_reads desc
--得到hash_value后,再利用v$sqltext查询出实际的sql语句
select address,hash_value,piece,sql_text
from v$sqltext
where hash_value=‘2450129223‘
order by piece;
--利用v$sqlarea查询出磁盘读次数超过100000的查询语句,也就是最耗资源的SQL
select b.username "USER NAME",
a.disk_reads "DISK READ",
a.executions EXECUTIONS,
a.disk_reads/decode(a.executions,0,1,a.executions) "READ_EXEC%",
a.sql_text "SQL TEXT"
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
--利用v$sql查出查询的SQL语句的address和hash_value
select sql_text,address,hash_value from v$sql
where sql_text like ‘SELECT * from EMP %‘;
--利用查出的address和hash_value,配合v$sql_plan相对应的字段,即可查询出此SQL语句的执行计划
select operation,options,object_name,cost from v$sql_plan
where address=‘325576612‘ and hash_value=2234134134
--命中率
select namespace,gets,gethitratio*100 "GET%",
pins,pinhitratio*100 "PIN%",reloads
invalidations
from v$librarycache;