Oracle SQL资源消耗相关视图(2)

v$sqlareav$sql和v$sqlarea基本类似,而v$sqlarea更常用,故仅对v$sqlarea常用字段进行说明,如下(个人参考Oracle官方文档翻译的,因是最新版本,所以会跟网络上的有些出入):

SQL_TEXT:SQL语句的前1000个字符;

SQL_FULLTEXT:SQL语句的所有字符;

SQL_ID:缓存在高速缓冲区(library cache)中的SQL父游标的唯一标识ID(注,类似于hash_value,不过hash_value是4bytes而sql_id是8bytes,sql_id更精确后期可能会替代hash_value);

SHARABLE_MEM:SQL语句及其子游标占用的共享内存大小;

PERSISTENT_MEM:打开SQL语句的生命周期内所占用的固定内存大小(包含子游标);

RUNTIME_MEM:游标执行期间所占用的固定内存大小;

SORTS:语句执行导致的排序次数;

VERSION_COUNT:在缓存中以该语句为父语句的子游标总数;

LOADED_VERSIONS:缓存中载入了这条语句上下文堆(KGL heap 6)的子游标数;

OPEN_VERSIONS:父游标下打开的子游标个数;

USERS_OPENING:打开子游标的用户个数;

FETCHES:SQL语句的fetch数;

EXECUTIONS:包含所有子游标在内该SQL语句共执行次数;

USERS_EXECUTING:执行过该语句所有子游标的用户总数;

LOADS:语句被载入的总次数;

FIRST_LOAD_TIME:父游标被首次载入(编译)的时间;

PARSE_CALLS:父游标下所有子游标解析调用次数;

DISK_READS:该语句通过所有子游标导致的读磁盘次数;

DIRECT_WRITES:该语句通过所有子游标导致的直接写入次数;

BUFFER_GETS:该语句通过所有子游标导致的读缓存次数;

APPLICATION_WAIT_TIME:应用等待时间;

USER_IO_WAIT_TIME:用户I/O等待时间;

PLSQL_EXEC_TIME:PLSQL执行时间;

ROWS_PROCESSED:该SQL语句处理的总行数;

OPTIMIZER_COST:此查询优化给出的成本数;

PARSING_USER_ID:第一次解析该父语句的用户ID;

PARSING_SCHEMA_ID:第一次解析该语句SCHEMA的ID;

PARSING_SCHEMA_NAME:解析该语句的SCHEMA的NAME;

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

ADDRESS:当前游标父句柄(唯一指向该游标的一种地址编号);

HASH_VALUE:该语句在library cache中hash值;

PLAN_HASH_VALUE:执行计划的hash值,可依此确定两个执行计划是否相同(取代每行每字符进行比较的方式);

CPU_TIME:该语句解析、执行和fetch(取值)所消耗的CPU时间;

ELAPSED_TIME:该语句解析、执行和fetch(取值)所经过的时间;

LAST_ACTIVE_TIME:查询计划最后一次执行的时间;

LOCKED_TOTAL:所有子游标被锁的次数;

v$sqltext

ADDRESS:当前游标父句柄(唯一指向该游标的一种地址编号);

HASH_VALUE:该游标(子游标)在library cache中唯一hash值;

SQL_ID:缓存游标中该SQL的一个唯一标识值;

COMMAND_TYPE:SQL语句类型,如select、insert、update等;

PIECE:排序SQL文本的碎片数;

SQL_TEXT:包含一个完整SQL中的某一小块SQL文本字符(要完整的SQL语句需要把这些碎片组合起来);

v$session

SADDR:session地址;

SID:session标识值,常跟serial#联合唯一确定一个session(在杀进程时,有时SID会重用,造成误杀。而serial会增加但不会重复,sid 在同一个instance的当前session中是一个unique key,而sid ,serial#则是在整个instance生命期内的所有session中是unique key);

SERIAL#:会话序列号,用于在一个会话结束而另一个会话重用这该会话的SID时,唯一确定一个会话;

AUDSID:审计会话ID,可以通过audsid查询当前session的sid,select sid from v$session where audsid=userenv('sessionid');

PADDR:进程地址,关联v$process的addr字段,通过这个可以查询到进程对应的session;

USER#:同于dba_users中的user_id,Oracle内部进程user#为0;

USERNAME:会话拥有者用户名,等于dba_users中的username,Oracle内部进程的username为空;

COMMAND:正在���行的SQL语句类型,如1为create table、3为select等;

OWNERID:如果该列值为2147483644则值无效,否则值用于会话迁移、并行等;

TADDR:Address of transaction state object;

LOCKWAIT:标识当前查询是否处于锁等待状态,为空则表示无等待;

STATUS:标识session状态,Active正执行SQL语句,inactive等待操作,killed被标注为杀死;

SERVER:服务器类型,DEDICATED专用、SHARED共享等;

SCHEMA#:SCHEMA标识ID值,Oracle内部进程的schema#为0;

SCHEMANAME:SCHEMA用户名,Oracle内部进程的为sys;

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

PROCESS:客户端操作系统进程ID;

MACHINE:操作系统机器名;

TERMINAL:操作系统终端名;

PROGRAM:操作系统应用程序名,如EXE或sqlplus.exe;

TYPE:会话类型,如BACKGROUND或USER;

SQL_ADDRESS:和SQL_HASH_VALUE一起使用标识正在执行的SQL语句;

SQL_HASH_VALUE:和SQL_ADDRESS一起使用标识正在执行的SQL语句;

SQL_ID:正在执行的SQL语句的标识ID;

SQL_CHILD_NUMBER:正在执行的SQL语句的子ID;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9fc8b4cb8ff6aeceb62602696e542082.html