session

作者: 是阿离 | 来源:发表于2017-06-27 00:11 被阅读0次

    oracle中v$session说明

    现象

    想要查询当前oracle数据库有多少连接数,以及这些连接都在干啥

    讲知识

    v$session中记录了当前与数据库建立连接的session信息,包括建立者信息、SQL语句、运行状态等

    SELECT * FROM v$session;
    
    各字段含义
    V$session各字段 含义
    SADDR session address
    SID session identifier,SID会存在重用
    SERIAL# 当SID重用时,该列会增加,SID+SERIAL#能保证不重复
    AUDSID audit session id。可以通过audsid查询当前运行session的sid。<code>SELECT SID FROM v$session WHERE audsid = USERENV('sessionid')</code>
    PADDR process address,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个进程的id
    USER# session's user id;oracle内部进程USER#w为0,其他可关联all_users的user_id可以查出username。<code>SELECT * FROM all_users WHERE user_id = 'USER#的值';</code>
    USERNAME session's username;oracle内部进程USERNAME为空
    COMMAND SQL语句的类型,1为create,2为insert,3为select,6为update,0……还不知道
    OWNERID NULL
    TADDR transaction address,可用来关联v$transaction的addr字段
    LOCKWAIT 当前正在等待的锁的相关信息,可与v$lock关联
    STATUS 当前session状态,ACTIVE:正在执行SQL语句;INACTIVE:等待操作;KILLED:被标注为杀死
    SERVER DEDICATED:专用
    SCHEMA# Oracle内部进程的schema#为0
    SCHEMANAME Oracle内部进程的schemaname为sys
    OSUSER 客户端操作系统用户名,用PL/SQL登录的,则显示登录用户名
    PROCESS 客户端process id
    MACHINE 客户端主机名,例如WORKGROUP\FRANCIS-PC
    PORT 端口
    TERMINAL 客户端控制台名称,例如FRANCIS-PC
    PROGRAM 客户端执行的应用程序,用PL/SQL则为plsqldev.exe,如果是主机上一个调度程序调起的,则显示调度程序名称,如:Getbilltag@machineName
    TYPE session type (background or user)
    SQL_ADDRESS、SQL_HASH_VALUE、SQL_ID、SQL_CHILD_NUMBER 正在执行的SQL状态,与v$sql中的address, hash_value, sql_id, child_number相对应
    PREV_SQL_ADDR、PREV_HASH_VALUE、PREV_SQL_ID、PREV_CHILD_NUMBER 上次执行的SQL状态
    PLSQL_ENTRY_OBJECT_ID NULL
    PLSQL_ENTRY_SUBPROGRAM_ID NULL
    PLSQL_OBJECT_ID NULL
    PLSQL_SUBPROGRAM_ID NULL
    MODULE、MODULE_HASH、ACTION、ACTION_HASH、CLIENT_INFO 应用通过DBMS_APPLICATION_INFO设置的一些信息,其中ACTION会显示当前语句执行窗口信息
    FIXED_TABLE_SEQUENCE 当session完成一个user call后就会增加的一个数值,也就是说,如果session inactive,它就不会增加。因此可以根据此字段的值变化来监控某个时间点以来的session的性能情况。例如,一个小时以前,某个session的FIXED_TABLE_SEQUENCE是10000,而现在是20000,则表明一个小时内其user call比较频繁,可以重点关注此session的performance statistics
    ROW_WAIT_OBJ# 被锁定行所在表的object_id,通过与dba_objects关联可以得到表名OBJECT_NAME,<code>SELECT * FROM dba_objects t WHERE t.object_id = ${ROW_WAIT_OBJ#};</code>(可以用来查看当前用户正在对哪些表进行操作)
    ROW_WAIT_FILE# 被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name
    ROW_WAIT_BLOCK# 被锁定行所在的block
    ROW_WAIT_ROW# session当前正在等待的被锁定的行
    LOGON_TIME session logon time(logon有登录、注册的意思)
    …… ……

    相关文章

      网友评论

          本文标题:session

          本文链接:https://www.haomeiwen.com/subject/txhnfxtx.html