在本视图中,每一个连接到数据库实例中的 session都拥有一条记录。包括用户 session及后台进程如 DBWR, LGWR, arcchiver等等。

V$SESSION中的常用列

V$SESSION是基础信息视图,用于找寻用户 SID或 SADDR。不过,它也有一些列会动态的变化,可用于检查用户。如例:

SQL_HASH_VALUE, SQL_ADDRESS:这两列用于鉴别默认被 session执行的 SQL语句。如果为 null或 0,那就说明这个 session没有执行任何 SQL语句。 PREV_HASH_VALUE和 PREV_ADDRESS两列用来鉴别被 session执行的上一条语句。

注意:当使用 SQL*Plus进行选择时,确认你重定义的列宽不小于 11以便看到完整的数值。

STATUS:这列用来判断 session状态是:

l         Achtive:正执行 SQL语句 (waiting for/using a resource)

l         Inactive:等待操作 (即等待需要执行的 SQL语句 )

l         Killed:被标注为删除

下列各列提供 session的信息,可被用于当一个或多个 combination未知时找到 session。

Session信息

l         SID: SESSION标识,常用于连接其它列

l         SERIAL#:如果某个 SID又被其它的 session使用的话则此数值自增加 (当一个        SESSION结束,另一个 SESSION开始并使用了同一个 SID)。

l         AUDSID:审查 session ID唯一性,确认它通常也用于当寻找并行查询模式

l         USERNAME:当前 session在 oracle中的用户名。

Client信息

数据库 session被一个运行在数据库服务器上或从中间服务器甚至桌面通过 SQL*Net连接到数据库的客户端进程启动,下列各列提供这个客户端的信息

l         OSUSER:客户端操作系统用户名

l         MACHINE:客户端执行的机器

l         TERMINAL:客户端运行的终端

l         PROCESS:客户端进程的 ID

l         PROGRAM:客户端执行的客户端程序

要显示用户所连接 PC的 TERMINAL、 OSUSER,需在该 PC的 ORACLE.INI或 Windows中设置关键字 TERMINAL, USERNAME。

Application信息

调用 DBMS_APPLICATION_INFO包以设置一些信息区分用户。这将显示下列各列。

l         CLIENT_INFO: DBMS_APPLICATION_INFO中设置

l         ACTION: DBMS_APPLICATION_INFO中设置

l         MODULE: DBMS_APPLICATION_INFO中设置

下列 V$SESSION列同样可能会被用到:

l         ROW_WAIT_OBJ#

l         ROW_WAIT_FILE#

l         ROW_WAIT_BLOCK#

l         ROW_WAIT_ROW#

V$SESSION中的连接列

Column                                                            View                                              Joined Column(s)

SID             V$SESSION_WAIT,,V$SESSTAT,,V$LOCK,V$SESSION_EVENT,V$OPEN_CURSOR                 SID

(SQL_HASH_VALUE, SQL_ADDRESS)                  V$SQLTEXT, V$SQLAREA, V$SQL    (HASH_VALUE, ADDRESS)

(PREV_HASH_VALUE, PREV_SQL_ADDRESS)     V$SQLTEXT, V$SQLAREA, V$SQL    (HASH_VALUE, ADDRESS)

TADDR                                                             V$TRANSACTION                                    ADDR

PADDR                                                              V$PROCESS                                             ADDR

示例:

1.查找你的 session信息

SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS

FROM V$SESSION WHERE audsid = userenv( 'SESSIONID' );

2.当 machine已知的情况下查找 session

SELECT SID, OSUSER, USERNAME, MACHINE, TERMINAL

FROM V$SESSION

WHERE terminal = 'pts/tl' AND machine = 'rgmdbs1' ;

3.查找当前被某个指定 session正在运行的 sql语句。假设 sessionID为 100

select b.sql_text

from v$session a,v$sqlarea b

where a.sql_hashvalue=b. hash_value and a.sid= 1 00

或者

select b.sql_text

from v$session a,v$sqlarea b //v$sqlarea 只包括sql的1000个字符,V$SQLTEXT is all 

where a.sql_hash_value = b.HASH_VALUE and a.TERMINAL = 'BackHam';//BackHam is my computer name

寻找被指定 session执行的 SQL语句是一个公共需求,如果 session是瓶颈的主要原因,那根据其当前在执行的语句可以查看 session在做些什么。

V$SQLTEXT

本视图包括 Shared pool中 SQL语句的完整文本,一条 SQL语句可能分成多个块被保存于多个记录内。

注: V$SQLAREA只包括头 1000个字符。

V$SQLTEXT中的常用列

l         HASH_VALUE: SQL语句的 Hash值

l         ADDRESS: sql语句在 SGA中的地址

l         SQL_TEXT: SQL文本。

l         PIECE: SQL语句块的序号

V$SQLTEXT中的连接列

Column                                          View                                    Joined Column(s)

HASH_VALUE, ADDRESS         V$SQL, V$SESSION            HASH_VALUE, ADDRESS

HASH_VALUE. ADDRESS         V$SESSION                          SQL_HASH_VALUE, SQL_ADDRESS

示例:已知 hash_value:3111103299,查询 sql语句:

select * from v$sqltext

where hashvalue= '3111103299'

order by piece

V$SQLAREA

本视图持续跟踪所有 shared pool中的共享 cursor,在 shared pool中的每一条 SQL语句都对应一列。本视图在分析 SQL语句资源使用方面非常重要。

V$SQLAREA中的信息列

l         HASH_VALUE: SQL语句的 Hash值。

l         ADDRESS: SQL语句在 SGA中的地址。

这两列被用于鉴别 SQL语句,有时,两条不同的语句可能 hash值相同。这时候,必须连同 ADDRESS一同使用来确认 SQL语句。

l         PARSING_USER_ID:为语句解析第一条 CURSOR的用户

l         VERSION_COUNT:语句 cursor的数量

l         KEPT_VERSIONS:

l         SHARABLE_MEMORY: cursor使用的共享内存总数

l         PERSISTENT_MEMORY: cursor使用的常驻内存总数

l         RUNTIME_MEMORY: cursor使用的运行时内存总数。

l         SQL_TEXT: SQL语句的文本(最大只能保存该语句的前 1000个字符)。

l         MODULE,ACTION:使用了 DBMS_APPLICATION_INFO时 session解析第一条 cursor时的信息

V$SQLAREA中的其它常用列

l         SORTS: 语句的排序数

l         CPU_TIME: 语句被解析和执行的 CPU时间

l         ELAPSED_TIME: 语句被解析和执行的共用时间

l         PARSE_CALLS: 语句的解析调用 (软、硬 )次数

l         EXECUTIONS: 语句的执行次数

l         INVALIDATIONS: 语句的 cursor失效次数

l         LOADS: 语句载入 (载出 )数量

l         ROWS_PROCESSED: 语句返回的列总数

V$SQLAREA中的连接列

Column                                          View                                                               Joined Column(s)

HASH_VALUE, ADDRESS         V$SESSION                                                     SQL_HASH_VALUE, SQL_ADDRESS

HASH_VALUE, ADDRESS         V$SQLTEXT, V$SQL, V$OPEN_CURSOR   HASH_VALUE, ADDRESS

SQL_TEXT                                   V$DB_OBJECT_CACHE                               NAME

示例:

1.查看消耗资源最多的 SQL:

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 ;

2. 查看某条 SQL 语句的资源消耗:

SELECT hash_value, buffer_gets, disk_reads, executions, parse_calls

FROM V$SQLAREA

WHERE hash_Value = 228801498 AND address = hextoraw( 'CBD8E4B0' );

3.查找前10条性能差的sql语句

Sql代码

SELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text FROMv$sqlarea

SELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea order BY disk_reads DESC )where ROWNUM<10 ;说明:

EXECUTIONS表示同一条SQL语句一共执行了多少次,SORTS表示排序的次数,DISK_READS表示物理读的数量。

(1) v$sql 一条语句可以映射多个 cursor,因为对象所指的 cursor可以有不同用户 (如例 1)。如果有多个 cursor(子游标 )存在,在 V$SQLAREA为所有 cursor提供集合信息。

1

这里介绍以下 child cursor

user A: select * from tbl

user B: select * from tbl

大家认为这两条语句是不是一样的啊,可能会有很多人会说是一样的,但我告诉你不一定,那为什么呢?

这个 tblA看起来是一样的,但是不一定哦,一个是 A用户的 , 一个是 B用户的,这时他们的执行计划分析代码差别可能就大了哦,改下写法大家就明白了 :

select * from A.tbl

select * from B.tbl

在个别 cursor上, v$sql可被使用。该视图包含 cursor级别资料。当试图定位 session或用户以分析 cursor时被使用。

PLAN_HASH_VALUE列存储的是数值表示的 cursor执行计划。可被用来对比执行计划。 PLAN_HASH_VALUE让你不必一行一行对比即可轻松鉴别两条执行计划是否相同。

V$SQL中的列说明:

l         SQL_TEXT: SQL文本的前 1000个字符

l         SHARABLE_MEM:占用的共享内存大小 (单位: byte)

l         PERSISTENT_MEM:生命期内的固定内存大小 (单位: byte)

l         RUNTIME_MEM:执行期内的固定内存大小

l         SORTS:完成的排序数

l         LOADED_VERSIONS:显示上下文堆是否载入, 1是 0否

l         OPEN_VERSIONS:显示子游标是否被锁, 1是 0否

l         USERS_OPENING:执行语句的用户数

l         FETCHES: SQL语句的 fetch数。

l         EXECUTIONS:自它被载入缓存库后的执行次数

l         USERS_EXECUTING:执行语句的用户数

l         LOADS:对象被载入过的次数

l         FIRST_LOAD_TIME:初次载入时间

l         INVALIDATIONS:无效的次数

l         PARSE_CALLS:解析调用次数

l         DISK_READS:读磁盘次数

l         BUFFER_GETS:读缓存区次数

l         ROWS_PROCESSED:解析 SQL语句返回的总列数

l         COMMAND_TYPE:命令类型代号

l         OPTIMIZER_MODE: SQL语句的优化器模型

l         OPTIMIZER_COST:优化器给出的本次查询成本

l         PARSING_USER_ID:第一个解析的用户 ID

l         PARSING_SCHEMA_ID:第一个解析的计划 ID

l         KEPT_VERSIONS:指出是否当前子游标被使用 DBMS_SHARED_POOL包标记为常驻内存

l         ADDRESS:当前游标父句柄地址

l         TYPE_CHK_HEAP:当前堆类型检查说明

l         HASH_VALUE:缓存库中父语句的 Hash值

l         PLAN_HASH_VALUE:数值表示的执行计划。

l         CHILD_NUMBER:子游标数量

l         MODULE:在第一次解析这条语句是通过调用 DBMS_APPLICATION_INFO.SET_MODULE设置的模块名称。

l         ACTION:在第一次解析这条语句是通过调用 DBMS_APPLICATION_INFO.SET_ACTION设置的动作名称。

l         SERIALIZABLE_ABORTS:事务未能序列化次数

l         OUTLINE_CATEGORY:如果 outline在解释 cursor期间被应用,那么本列将显示出 outline各类,否则本列为空

l         CPU_TIME:解析 /执行 /取得等 CPU使用时间 (单位,毫秒 )

l         ELAPSED_TIME:解析 /执行 /取得等消耗时间 (单位,毫秒 )

l         OUTLINE_SID: outline session标识

l         CHILD_ADDRESS:子游标地址

l         SQLTYPE:指出当前语句使用的 SQL语言版本

l         REMOTE:指出是否游标是一个远程映象 (Y/N)

l         OBJECT_STATUS:对象状态 (VALID or INVALID)

l         IS_OBSOLETE:当子游标的数量太多的时候,指出游标是否被废弃 (Y/N)

Oracle v$session/v$sql 表的更多相关文章

  1. 查询oracle比较慢的session和sql

    注:本文来源:sxhong   <查询oracle比较慢的session和sql> ---查询最慢的sql select * from ( select parsing_user_id,e ...

  2. 查询Oracle正在执行的sql语句及kill被锁的表

    查询Oracle正在执行的sql语句及执行该语句的用户SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, pa ...

  3. oracle学习之路(四) ---------PL/SQL 表,二维数组(TABLE)

    LOB类型 ORACLE提供了LOB (Large OBject)类型.用于存储大的数据对象的类型.ORACLE眼下主要支持BFILE, BLOB, CLOB 及 NCLOB 类型. NCLOB 存储 ...

  4. oracle错误ORA-00604 递归sql级别1出现错误 ora-00942 表或试图不存在 ORA-06512 在line 11

    错误截图如下: 搜索了很多方法,但是都没有办法解决,不过最终还是找到了一个好的解决办法, 多谢那位仁兄的博客[http://blog.itpub.net/519536/viewspace-689469 ...

  5. oracle sqlplus及常用sql语句

    常用sql语句 有需求才有动力 http://blog.csdn.net/yitian20000/article/details/6256716 常用sql语句 创建表空间:create tables ...

  6. Oracle创建删除用户,角色,表空间,导入导出数据库命令总结(转载)

    无意间看到一篇文章,觉得对于ORACLE的新手很实用,特转载,原文出处这里 说明:在创建数据库时输入的密码,是修改系统默认的密码,以system和sysman等系统默认身份登录时要输入的密码就是修改后 ...

  7. 部分常见ORACLE面试题以及SQL注意事项

    部分常见ORACLE面试题以及SQL注意事项 一.表的创建: 一个通过单列外键联系起父表和子表的简单例子如下: CREATE TABLE parent(id INT NOT NULL, PRIMARY ...

  8. 利用ORACLE ADV 功能完成SQL TUNING 调优(顾问培训) “让DBA失业还是解脱?”

    oracle自动判断SQL性能功能. 11G的ADV,建议.SNAPSHOT,数据集合, 存储在oracle sys $_开头的表(10几条).  创建SNAPSHOT时选择天数, 默认14天. sq ...

  9. Oracle数据库之动态SQL

    Oracle数据库之动态SQL 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:一种为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大 ...

随机推荐

  1. LINUX 下 NMAP 内网扫描

    #1.扫描内网存活主机 nmap -sP 10.2.24.* |grep for > tmp #2.扫描主机端口 nmap -A -T4 192.168.1.2 #3.扫描主机的所有端口 nma ...

  2. linux一键安装php环境

    1.下载一键安装包: http://pan.baidu.com/s/1o6lWyeu 2.unzip -x sh.zip chmod -R 755 sh ./install.sh 等待半小时左右 3. ...

  3. Chapter 3 Phenomenon——6

    A low oath made me aware that someone was with me, and the voice was impossible not to recognize. 某人 ...

  4. 自己动手实现一个WEB服务器

    自己动手实现一个 Web Server 项目背景 最近在重温WEB服务器的相关机制和原理,为了方便记忆和理解,就尝试自己用Java写一个简化的WEB SERVER的实现,功能简单,简化了常规服务器的大 ...

  5. 机器学习--boosting家族之XGBoost算法

    一.概念 XGBoost全名叫(eXtreme Gradient Boosting)极端梯度提升,经常被用在一些比赛中,其效果显著.它是大规模并行boosted tree的工具,它是目前最快最好的开源 ...

  6. [LeetCode]LinkedList Cycle

    题目说明 Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without usi ...

  7. pcap简单使用和简单解释

    数据类型bpf_u_int32实际上就是u_int的一个别名,还有吧bpf_int32实际上就是int的别名.当然这个int是32位的,如果操作系统对int的定义不是4字节,bpf_int32就对应另 ...

  8. Apache POI导出excel

    public String exportXls(HttpServletRequest request, HttpServletResponse response) { try { HSSFWorkbo ...

  9. spring boot 2.0 源码分析(四)

    在上一章的源码分析里,我们知道了spring boot 2.0中的环境是如何区分普通环境和web环境的,以及如何准备运行时环境和应用上下文的,今天我们继续分析一下run函数接下来又做了那些事情.先把r ...

  10. 谷歌眼镜能给Apple Watch带来啥前车之鉴?

    当下,你想不听到Apple Watch的消息都难.这款智能手表在三月初发布时,有关它的新闻报道铺天盖地.记者们在博客上对发布会的每个阶段进行了实况报道,苹果粉丝们通过博客. 推特和YouTube视频对 ...