Oracle常用视图

前言:
本文主要介绍的是Oracle常用的一些视图,包括:v$session、v$sql、v$sqlarea,后期继续补充…

v$session

使用示例

v$session主要是查看当前服务器所有session信息

1
select sid,	serial#, status, username, program, machine, osuser, logon_time from v$session;

常用字段列名解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- status:这列用来判断session状态,取值为:Achtive、Inactive、killed
-- Achtive: 正执行SQL语句(waiting for/using a resource)
-- Inactive: 等待操作(即等待需要执行的SQL语句)
-- Killed: 被标注为删除
-- session信息
-- sid: SESSION标识,常用于连接其它列
-- SERIAL#: 如果某个SID又被其它的session使用的话则此数值自增加(当一个SESSION结束,另一个SESSION开始并使用了同一个SID)
-- AUDSID: 审查session ID唯一性,确认它通常也用于当寻找并行查询模式
-- USERNAME:当前session在oracle中的用户名
-- client信息
-- OSUSER: 客户端操作系统用户名
-- MACHINE: 客户端执行的机器
-- TERMINAL: 客户端运行的终端
-- PROCESS: 客户端进程的ID
-- PROGRAM: 客户端执行的客户端程序
-- Application信息
-- CLIENT_INFO: DBMS_APPLICATION_INFO中设置
-- ACTION: DBMS_APPLICATION_INFO中设置
-- MODULE: DBMS_APPLICATION_INFO中设置

v$sql

使用示例

v$sql主要是用来分析SQL语句使用资源情况

1
SELECT * FROM v$sql WHERE sql_fulltest LIKE '%2019-08-21%';

常用字段列名解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-- SQL_TEXT           //当前正在执行的游标的sql文本的前1000个字符
-- SQL_FULLTEXT //CLOB类型 整个sql文本,不用借助于V$SQL_TEXT视图来查看整个文本
-- SQL_ID //库缓存中的SQL父游标的标志
-- SHARABLE_MEM //子游标使用的共享内存的大小,bytes
-- PERSISTENT_MEM //子游标生存时间中使用的固定内存的总量,bytes
-- RUNTIME_MEM //在子游标执行过程中需要的固定内存大小,bytes
-- SORTS //子游标发生的排序数量
-- LOADED_VERSIONS // 显示上下文堆是否载入,1是,0否
-- USERS_OPENING // 执行这个sql的用户数
-- FETCHES // sql取数据的次数
-- EXECUTIONS //自从被载入共享池后,sql执行的次数
-- FIRST_LOAD_TIME // 父游标产生的时间戳
-- PARSE_CALLS //解析调用的次数
-- DISK_CALLS //读磁盘的次数
-- DIRECT_WRITES //直接写的次数
-- BUFFER_GETS //直接从buffer中得到数据的次数
-- APPLICATION_WAIT_TIME // 应用等待时间,毫秒
-- CONCURRENCY_WAIT_TIME //并发等待时间,毫秒
-- USER_IO_WAIT_TIME //用户IO等待时间
-- ROWS_PROCESSED SQL //解析sql返回的总行数
-- OPTIMIZER_MODE //优化器模式
-- OPTIMIZER_COST //优化器对于sql给出的成本
-- PARSING_USER_ID //第一个创建这个子游标的用户id
-- HASH_VALUES //解析产生的哈希值
-- CHILD_NUMBER //该子游标的数量
-- SERVICE //服务名
-- CPU_TIME //该子游标解析,执行和获取数据使用的CPU时间,毫秒
-- ELAPSED_TIME //sql的执行时间,毫秒
-- INVALIDATIONS //该子游标的无效次数
-- MODULE //第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的模块名
-- ACTION //第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的动作名
-- IS_OBSOLETE //标记该子游标过期与否,当子游标过大时会发生这种情况
-- is_bind_sensitive //不仅指出是否使用绑定变量窥测来生成执行计划,而且指出这个执行计划是否依赖于窥测到的值。如果是,这个字段会被设置为Y,否则会被设置为N。
-- is_bind_aware //表明游标是否使用了扩展的游标共享。如果是,这个字段会被设置为Y,如果不是,这个字段会被设置为N。如果是设置为N,这个游标将被废弃,不再可用。
-- is_shareable //表明游标能否被共享。如果可以,这个字段会被设置为Y,否则,会被设置为N。如果被设置为N,这个游标将被废弃,不再可用。

v$sqlarea

使用示例

v$sqlarea和v$sql基本一致,不同的是V$SQLAREA是在父游标级别上统计的sql信息,v$sql的汇总表,进行了group by hash_value,sql_id的汇总

1
select * from v$sqlarea WHERE sql_fulltest LIKE '%2019-08-21%';
—— 感谢您的阅读 ( ゚∀゚) 有什么疑问可以在下方留言哦 ——
坚持原创技术分享,您的支持将鼓励我继续创作!