有用的v$视图脚本

1、基本的数据库信息
版本信息:
select * from v$version;
数据库信息:
Select * from v$database;

2、自动工作量仓库自动工作量(AWR)的基本信息
AWR 使用多少空间? 
Select occupant_name, occupant_desc, space_usage_kbytes
  from v$sysaux_occupants
 where occupant_name like '%AWR%';

系统上最原始的 AWR 信息是什么? 
select dbms_stats.get_stats_history_availability from dual;

什么是 AWR 信息的保留期? 
select dbms_stats.get_stats_history_retention from dual;

将 AWR 信息的保留期更改为 15 天? 
EXEC dbms_stats.alter_stats_history_retention(15);

3、基本的许可信息
select * from v$license;


4、数据库中已安装的产品项
select * from v$option;

5、内存分配摘要
select * from   v$sga;

内存分配的细节
select * from v$sgastat;

6、V$PARAMETER中发现init.ora 的设置
select * from v$parameter;

7、测定数据的命中率
select 1 - (sum(decode(name, 'physical reads', value, 0)) /
       (sum(decode(name, 'db block gets', value, 0)) +
       (sum(decode(name, 'consistent gets', value, 0))))) "Read Hit Ratio"
  from v$sysstat;


测定数据字典的命中率
select sum(gets),
       sum(getmisses),
       (1 - (sum(getmisses) / (sum(gets) + sum(getmisses)))) * 100 HitRate
  from v$rowcache;

测定共SQL和 PL/SQL的命中率
select sum(pins) "Executions",
       sum(pinhits) "Hits",
       ((sum(pinhits) / sum(pins)) * 100) "PinHitRatio",
       sum(reloads) "Misses",
       ((sum(pins) / (sum(pins) + sum(reloads))) * 100) "RelHitRatio"
  from v$librarycache;


通过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.command_type,
       a.sql_text Statement
  from v$sqlarea a, dba_users b
 where a.parsing_user_id = b.user_id
   and a.disk_reads > 10000
 order by a.disk_reads desc;

检查用户的当前操作及其使用的资源
select a.sid, a.username, s.sql_text
  from v$session a, v$sqltext s
 where a.sql_address = s.address
   and a.sql_hash_value = s.hash_value
 order by a.username, a.sid, s.piece;


哪些用户执行了大量的物理磁盘和内存读操作
select a.username,
       b.block_gets,
       b.consistent_gets,
       b.physical_reads,
       b.block_changes,
       b.consistent_changes
  from v$session a, v$sess_io b
 where a.sid = b.sid
 order by a.username;


查找用户正在访问的对象
select a.sid, a.username, b.owner, b.object, b.type
  from v$session a, v$access b
 where a.sid = b.sid;


确定锁定问题
select /*+ ordered */
 b.username, b.serial#, d.id1, a.sql_text
  from v$lock d, v$session b, v$sqltext a
 where b.lockwait = d.kaddr
   and a.address = b.sql_address
   and a.hash_value = b.sql_hash_value;

select /*+ ordered */
 a.serial#, a.sid, a.username, b.id1, c.sql_text
  from v$lock b, v$session a, v$sqltext c
 where b.id1 in (select /*+ ordered */
                 distinct e.id1
                   from v$lock e, v$session d
                  where d.lockwait = e.kaddr)
   and a.sid = b.sid
   and c.hash_value = a.sql_hash_value
   and b.request = 0;

select /*+ ordered */
 username,
 v$lock.sid,
 trunc(id1 / power(2, 16)) rbs,
 bitand(id1, to_number('ffff', 'xxxx')) + 0 slot,
 id2 seq,
 lmode,
 request
  from v$lock, v$session
 where v$lock.type = 'TX'
   and v$lock.sid = v$session.sid;


关闭有问题的会话
select   username, sid, serial#, program, terminal 
from     v$session;

alter system kill session '11,18';



你可能感兴趣的:(sql,C++,c,脚本,C#)