这里写目录标题

  • 1 视图种类和名称
  • 1.1 系统状态监控类
  • 1.2 内存监控类
  • 1.3 会话,锁,事物类
  • 1.4 等待事件类
  • 1.5 sql历史类
  • 1.6 配置文件类
  • 2 视图用法
  • 2.1.v$BUFFERPOOL
  • 2.2.v$CACHEITEM
  • 2.3.v$CACHEPLN
  • 2.4.v$CKPT_HISTORY
  • 2.5.v$DATAFILE
  • 2.6.v$DATABASE
  • 2.7.V$DICT_CAHCE
  • 2.8.V$INSTANCE
  • 29.V$IOCK
  • 2.10.V$PRE_RETURN_HISTORY
  • 2.11.V$RESOURCE_LIMIT
  • 2.12.V$RLOG
  • 2.13.V$SESSION_HISTORY
  • 2.14.V$SQL_HISTORY
  • 2.15.V$SYSSTAT
  • 2.16.V$THREADS
  • 2.17.V\$DM_INI,V\$DM_ARCH_INI,V$DM_MAL_INI,v\$PARAMETER
  • 2.18.V$DANGER_EVENT
  • 2.19.V\$SQLTEXT,V$SQL_PLAN
  • 2.20.V$EVENT_NAME
  • 2.21.V\$SESSION_EVENT,V$SYSTEM_EVENT
  • 2.22.V\$LONG_EXEC_SQLS,V$SYSTEM_LONG_EXEC_SQLS
  • 2.23.V$SORT_HISTORY
  • 2.24.v$MEM_POOL


1 视图种类和名称

1.1 系统状态监控类

v$sysstat,v$datafile,v$rlog,v$ckpt_history,v$database,v$instance,V$resource_limit
,v$danger_event

1.2 内存监控类

V$bufferpool,v$cacheitem,v$cachepln,v$dict_cache,v$mem_pool。

1.3 会话,锁,事物类

V$sessions,v$session_history,v$lock,v$deadlock_history,v$trx,v$trxwait。

1.4 等待事件类

V$event_name,v$session_wait_history,v$system_event,v$session_event。

1.5 sql历史类

V$sql_history,v$long_exec_sqls,v$system_long_exec_sqls,v$sort_history,v$pre_ret
urn_history,v$runtime_err_history,v$sqltext。

1.6 配置文件类

V$dm_ini,v$dm_arch_ini,v$parameter,v$dm_mal_ini。

2 视图用法

2.1.v$BUFFERPOOL

用法:v$bufferpool常用来查看数据库缓冲池的命中率,通过查看各个缓存池的命中率来
决定是否需要调整缓存池大小。
可以使用如下sql语句查看命中率:

select
 name as 缓冲池名称 ,
 sum(page_size)/1024 as 缓冲池大小(M),
 sum(rat_hit)/count(*) as 命中率
from
 v$bufferpool
group by
 name;

2.2.v$CACHEITEM

用法:在没有使用结果缓存集的情况下,v$cacheitem用于记录缓存的sql和执行计划。
由于sql缓存池可以最大动态的增长至CACHE_POOL_SIZE的三倍大小,所以如果
CACHE_POOL_SiZE设置不合理,可能会造成使用较多的虚拟内存,从而导致较多的内
存页pagein/out,增加较大的系统负担。可以使用该视图动态的观察sql缓存池的使用情
况。
可以使用如下sql语句:

select sum(item_size)/1024/1024 as sql缓存池大小(M) from v$cacheitem;

2.3.v$CACHEPLN

用法:在有些版本中,在sql执行计划错误的情况下,如果对表以及列都收 集过统计信
息,并且尝试使用hint提示干预执行计划,但是有些sql的执行计划 依然没有改变,可以
利用该视图找到sql语句所对应的sql执行计划地址,使 用SP_CLEAR_PLAN_CACHE清除
sql缓存池中的执行计划,确保sql语句下次执行时可以重新解析。

select
 cache_item as 执行计划地址,
 sqlstr as sql文本
from
 v$cachepln
where
 sqlstr like '%select * from a%';
 
call SP_CLEAR_PLAN_CACHE(1407249592475);

2.4.v$CKPT_HISTORY

用法:该视图记录了检查点的详细信息,可以直接查看该视图确认检查点 是否正常。

2.5.v$DATAFILE

用法:该视图记录了数据库文件的使用状态,通常可以和v$TABLESPACE视图进行关联查询。

select
 b.name as 表空间名称 ,
 b.file_num as 数据文件个数 ,
 a.path as 数据库文件路径 ,
 a.total_size * a.page_size/1024/1024 as 整个数据文件大小(M),
 a.free_size* a.page_size/1024/1024 as 数据文件空闲大小(M),
 decode(a.auto_extend, 1, '自动扩展打开', '自动扩展关闭')
from
 v$datafile a,
 v$tablespace b
where
 a.group_id=b.id;

2.6.v$DATABASE

用法:用于查看数据库相关信息,类似是否归档,数据库名称,创建时间,数据库状态等等。

select
 nameas 数据库名称,
 create_timeas 创建时间 ,
 decode (arch_mode, 'Y', '是', '否')as 是否归档 ,
 decode (status$, '1', '启动', '2', '启动,redo完成', '3', 'MOUNT', '4', '打开',
'5', '挂起', '6', '关闭') as 数据库状态,
 decode (ROLE$, '0', '普通', '1', '主机', '2', '备
机') as 数据库模式
from
 v$database;

2.7.V$DICT_CAHCE

用法:该视图用于观察字典缓存池的信息,通过观察该视图可以动态的观测DICT_BUF_SIZE参数如何
设置较为合理。

select
 total_size/1024/1024 as 初始化大小(M),
 used_size /1024/1024 as 使用大小(M) ,
 dict_num as 缓存字典数量
from
 v$dict_cache;

2.8.V$INSTANCE

用法:用于查看数据库实例相关信息,类似数据库版本,主机名,实例名称,实例状态等等。

29.V$IOCK

用法:用于记录数据库中锁信息。经常与v$SESSIONS关联查看数据库中阻塞信息。
V$LOCK与v$SESSIONS组合查询阻塞会话

select
 s.sess_idas 会话号 ,
 s.sql_textas sql语句 ,
 s.stateas 会话状态 ,
 s.user_nameas 会话用户 ,
 s.create_time as 会话创建时间,
 clnt_ip as 会话IP ,
 l.trx_idas 事物ID ,
 l.table_idas 表号 ,
 decode(l.blocked, 1, '被阻塞', '未阻塞')
from
 v$sessions s,
 v$lock l
where
 s.trx_id=l.trx_id;

2.10.V$PRE_RETURN_HISTORY

用法:该视图用于记录返回大量结果集的查询语句的历史信息。同时该视图可以与
v$SESSION_HISTORY等视图组合使用。

2.11.V$RESOURCE_LIMIT

用法:该视图用于查看用户空间的限制信息。

select
 name as 用户名 ,
 space_limit*32/1024 as 空间限制大小(M),
 space_limit*32/1024 as 空间使用大小(M)
from
 v$resource_limit;

2.12.V$RLOG

用法:该视图用于记录日志信息,包括LSN号和日志使用情况等等。在主备环境中可以查看该视图确
认主机和备机是否一致。

2.13.V$SESSION_HISTORY

用法:用于记录数据库中的会话历史信息。在本视图中只存放v$SESSION的部分信息,可以通过与
v$SQL_HISTORY关联找出对应sql的session信息。

2.14.V$SQL_HISTORY

用法:用于记录最近执行的10000条sql语句,该视图同时包括正在执行的 sql语句。该视图可以用于
定位可能出现问题的sql语句,该视图记录了sql执行时间,物理读,逻辑读等关键信息。

select
 top_sql_text as sql文本 ,
 start_time as 开始时间 ,
 time_used/1000/1000 as 执行时间(毫秒),
 n_logic_read as 逻辑读数量 ,
 n_phy_read as 物理读数量 ,
 affected_rows as 影响行数
from
 v$sql_history
order by
 time_used desc,
 n_logic_read desc;

2.15.V$SYSSTAT

用法:用于记录数据库的运行相关状态的信息,主要用于观察解析类统计信息,物理读,逻辑读,内存
池使用情况,数据库运行各个阶段占用时间(类似cpu time,parse time等等),通过分析这些信息
来诊断问题并对数据库有个初步的判断。

2.16.V$THREADS

用法:该视图用于查看数据库中的线程。在新版本中v$sessions视图中增加了thrd_id,配合使用操作
系统top –H –ppid命令可以实现快速定位异常会话的功能,并可以使用sp_close_session()或者操作
系统killthrd_id,杀掉异常会话。

2.17.V$DM_INI,V$DM_ARCH_INI,V$DM_MAL_INI,v$PARAMETER

用法:用于查看数据库相关配置(INI,ARCH_INI,MAL_INI)信息。

2.18.V$DANGER_EVENT

用法:用于查看数据库中危险操作发生时间和用户以及相关操作信息,比如truncate操作。

2.19.V$SQLTEXT,V$SQL_PLAN

用法:用于显示sql缓冲池缓存的sql文本和执行计划。

2.20.V$EVENT_NAME

用法:用于查看DM7所支持的所有等待事件。

2.21.V$SESSION_EVENT,V$SYSTEM_EVENT

用法:用于统计数据库中系统或会话级别的等待事件。

select
 event as 等待事件名称 ,
 total_waits as 等待事件发生次数 ,
 time_waited_micro /1000 as 等待事件总用时(ms),
 average_wait_micro/1000 as 平均等待时间(ms)
from
 v$system_event
order by
 average_wait_micro desc;

2.22.V$LONG_EXEC_SQLS,V$SYSTEM_LONG_EXEC_SQLS

用法:用于记录数据库中最近10000条执行时间长的sql。

2.23.V$SORT_HISTORY

用法:用于记录排序较多的sql语句,可以使用该视图定位异常排序的sql。

2.24.v$MEM_POOL

用法:用于监控数据库中各个内存组件使用状况。

select
 name as 内存池名称 ,
 org_size /1024/1024 as 参数文件配置大小(M),
 reserved_size/1024/1024 as 实际使用大小(M)
from
 v$mem_pool
order by
 reserved_size desc;