oracle中视图v$sql的用途

1、获取正在执行的sql语句、sql语句的执行时间、sql语句的等待事件:

select a.sql_text,b.status,b.last_call_et,b.machine,b.event,b.program from v$sql a,v$session b where a.sql_id=b.sql_id

2、获取sql语句执行时间:

select sql_text,cpu_time/1000/1000 t_cpu,trunc(elapsed_time/1000/1000) t_elapse from v$sql

但是并不是所有的sql语句都可以从v$sql中得到,因为oracle会动态的更新共享池的信息,将一些过旧的sql语句从共享池中剔除,以便为新的sql语句提供共享池的空间

手动清空共享池信息:

alter system flush shared_pool

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)

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#

时间: 2024-08-24 16:19:01

oracle中视图v$sql的用途的相关文章

oracle中的基础sql

1.SQL SQL(Structured Query Language) 语言是目前主流的关系型数据库上执行数据操作.数据检索以及数据库维护所需要的标准语言,是用户与数据库之间进行交流的接口,许多关系型数据库管理系统都支持SQL语言,但不同的数据库管理系统之间的SQL语言不能完全通用,Oracle数据库使用的SQL语言是Procedural Language/SQL(简称PL/SQL). 1.1SQL语言分类 通常将SQL语言分为以下4类. (1)数据定义语言(Data Definition L

oracle中lock和latch的用途

本文向各位阐述Oracle的Latch机制,Latch,用金山词霸翻译是门插栓,闭锁,专业术语叫锁存器,我开始接触时就不大明白为什么不写Lock,不都是锁吗?只是翻译不同而以?研究过后才知道两者有很大的区别. Oracle中锁的信息是数据块的一部分,是物理的,并不是逻辑上属于某个表或者某个行.Latch是Oracle提供的轻量级锁资源,他用于快速,短时间的锁定资源,防止多个并发进程同时修改访问某个共享资源,他只工作在内存中, 我们可以不大准确的说,内存中资源的锁叫latch,数据库对象(表,索引

Oracle中如何判断SQL是否真正做了排序

在Oracle中,有时候在执行计划中看到sort关键字,就有人认为是做了排序,其实不一定.可以用下面的方法实验: drop table test purge; create table test as select * from dba_objects; exec dbms_stats.gather_table_stats(user,'test'); select /*+gg_test*/* from test order by object_id; select /*+gg_test*/* f

Oracle 中的PL/SQL、存储过程、触发器、函数、包(学习笔记)

   一.PL/SQL是什么? PL/SQL(procedural language/SQL)是oracle在sql上的扩展,pl/sql不仅允许嵌入sql语言,而且可以定义常量和变量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这使得它的功能十分强大.但是移植性不好. 1. 实例1 只包括执行部分的PL/SQL块 set serveroutput on; begin dbms_output.put_line('asdasdasdas'); end; / set serverout 选

Oracle中视图和基表的联系与区别。

视图是从一个或几个基本表中导出的表,是从现有基本表中抽取若干子集组成用户的“专用表”. 基表:基表的定义指建立基本关系模式, 而变更则是指对数据库中已存在的基本表进行删除与修改.区别: 1.视图是已经编译好的sql语句.而表不是2.视图没有实际的物理记录.而表有.3.表是内容,视图是窗口4.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改5.表是内模式,试图是外模式6.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据

Oracle中视图和同义词的区别

视图和同义词分别都是数据库中的对象名称,它们都不对应实际的数据存储,都依赖其他对象的存在而存在.视图:视图可以被看成是虚拟表或存储查询.除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中.一般是基于一个或多个数据表经数据查询语句构建而成:视图可以再被用于数据查询语句中. 同义词:是架构范围内的对象的另一名称.通过使用同义词,客户端应用程序可以使用由一部分组成的名称来引用基对象,而不必使用由两部分.三部分或四部分组成的名称.可以理解为是对数据库中一个对象的快捷方式或者在特定范围内的别名

oracle中视图V$PGA_TARGET_ADVICE的用法

看一下这个视图能给我们带来什么样的信息(视图中每个列都很有帮助):[email protected]> SELECT   pga_target_for_estimate / 1024 / 1024 "PGA(MB)",  2           pga_target_factor,  3           estd_pga_cache_hit_percentage,  4           estd_overalloc_count  5    FROM   v$pga_tar

Oracle中如何用SQL检测字段是否包括中文字符

用Oracle的编码转换的函数Convert实现,测试后可行. SQL> select *  2    from (select 'abcd' c1 from dual  3          union all  4          select 'ab测试cd' c1 from dual)  5   where c1 <> CONVERT(c1, 'US7ASCII', 'ZHS16GBK'); C1--------ab测试cd CONVERT函数说明: CONVERT(input

Oracle中查询一个表中字段(列)个数

如果一个表中有很多的字段,而我们想要知道这个表中的字段个数,如果使用如下方式一个一个数,则显得很麻烦 Oracle中可以使用如下sql来查询字段(列)个数 select count(*) from user_tab_columns where table_name=upper('表名') 或者 select max(column_id) from user_tab_columns where table_name=upper('表名') 作者:itmyhome 链接:http://blog.cs