oracle中视图v$sql的用途

发布时间:2023-05-11 11:29:27

  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中列的说明:

  lSQL_TEXT: SQL文本的前面 1000个字符

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

  lPERSISTENT_MEM:固定内存在生命期间的固定内存大小 (单位: byte)

  lRUNTIME_MEM:执行期内固定内存大小的固定内存

  lSORTS:完成的排序数

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

  lOPEN_VERSIONS:显示子游标是否被锁定, 1是 0否

  lUSERS_OPENING:执行语句的用户数

  lFETCHES: SQL语句 fetch数。

  lEXECUTIONS:自载入缓存库后的执行次数

  lUSERS_EXECUTING:执行语句的用户数

  lLOADS:对象被载入的次数

  lFIRST_LOAD_TIME:第一次载入时间

  lINVALIDATIONS:无效的次数

  lPARSE_CALLS:分析调用次数

  lDISK_READS:读磁盘次数

  lBUFFER_GETS:读取缓存区的次数

  lROWS_PROCESSED:解析 SQL语句返回总列数

  lCOMMAND_TYPE:命令类型代号

  lOPTIMIZER_MODE: SQL语句优化器模型

  lOPTIMIZER_COST:优化器给出的查询成本

  lPARSING_USER_ID:第一个用户进行分析 ID

  lPARSING_SCHEMA_ID:第一个分析计划 ID

  lKEPT_VERSIONS:指出是否使用了当前的子游标 DBMS_SHARED_POOL包标记为常驻内存

  lADDRESS:目前游标父句柄地址

  lTYPE_CHK_HEAP:当前堆类型检查说明

  lHASH_VALUE:缓存库中的父语句 Hash值

  lPLAN_HASH_VALUE:执行计划的数值表示。

  lCHILD_NUMBER:子游标数量

  lMODULE:这个句子的第一次分析是通过调用来进行的 DBMS_APPLICATION_INFO.SET_MODULE设置的模块名称。

  lACTION:这个句子的第一次分析是通过调用来进行的 DBMS_APPLICATION_INFO.SET_ACTION设置的动作名称。

  lSERIALIZABLE_ABORTS:事务未能序列化次数

  lOUTLINE_CATEGORY:如果 解释outline 如果在cursor期间应用,本列将显示 outline种类繁多,否则本列为空

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

  lELAPSED_TIME:解析 /执行 /获得等待消耗时间 (单位,毫秒 )

  lOUTLINE_SID: outline session标识

  lCHILD_ADDRESS:子游标地址

  lSQLTYPE:指出使用当前语句 SQL语言版

  lREMOTE:指出游标是否为远程图像 (Y/N)

  lOBJECT_STATUS:对象状态 (VALID or INVALID)

  lIS_OBSOLETE:当子游标数量过多时,指出游标是否被废弃 (Y/N)

  V$SESSION中的常用列

  V$SESSION是寻找用户的基本信息视图 SID或 SADDR。但是,列会也有一些动态变化,可以用来检查用户。例如:

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

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

  STATUS:这一列用于判断 sesssion状态如下:

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

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

  lKilled:被标记为删除

  提供以下列列列 session信息可用作一个或多个信息 未知时发现combination session。

  Session信息

  lSID: SESSION标识通常用于连接其他列

  lSERIAL#:如果某个 其他的SID 如果使用session,这个值会自增加 (当一个 SESSION结束,另一个 SESSION开始并使用同一个 SID)。

  lAUDSID:审查 session 当寻找并行查询模式时,ID的唯一性通常被用来确认

  lUSERNAME:当前 session在 用户名在oracle中。

  Client信息

  数据库 session通过数据库服务器或中间服务器甚至桌面运行 SQL*Net连接到数据库的客户端过程启动,以下列列列提供该客户端的信息

  lOSUSER:客户端操作系统用户名

  lMACHINE:机器由客户端执行

  lTERMINAL:终端运行在客户端

  lPROCESS:客户端流程 ID

  lPROGRAM:客户端程序由客户端执行

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

  application信息

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

  lCLIENT_INFO: DBMS_APPLICATION_在INFO中设置

  lACTION: DBMS_APPLICATION_在INFO中设置

  lMODULE: DBMS_APPLICATION_在INFO中设置

  下列 V$SESSION列也可以使用:

  lROW_WAIT_OBJ#

  lROW_WAIT_FILE#

  lROW_WAIT_BLOCK#

  lROW_WAIT_ROW#

上一篇 idea 打包Javase后没有把lib文件夹的东西方静去 idea打包成jar
下一篇 MongoDB语法与现有关系型数据库SQL语法比较

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题