• v$Session详解


         从Oracle10gR1开始,Oracle在V$SESSION中增加关于等待事件的字段,实际上也就是把原来V$SESSION_WAIT视图中的所有字段全部整合到了V$SESSION视图中,开始的时候我还以为ASH是依赖联合查询来获取信息的,仔细一看才发现现在V$SESSION已经发生了变化。(如果进一步研究你会发现,实际上V$SESSION的底层查询语句及X$表已经有了变化),这一变化使得我们的查询得以简化,但是也使得V$SESSION_WAIT开始变得多余,此外V$SESSION中还增加了BLOCKING_SESSION等字段,以前我们需要通dba_waiters等视图才能获得的信息,现在也可以直接从V$SESSION中得到了。既然这样,让我们好好研究V$SESSION视图中每个字段的含义。

        首先,请看官方文档上面关于V$SESSION字段的说明:

         v$session:This view has one row for every session connected to the database instance. The sessions include user sessions, as well as background processes like DBWR, LGWR, archiver.对于连接到数据库实例的每个会话,该视图都有一行。这些会话包括用户会话,以及DBWR、LGWR、archiver等后台进程。   

    1、SADDR  --Session address Session当前会话在内存(pga)中的地址

    2、SID --Session identifier Session ID 会话标识符

    3、SERIAL# 
          官方解释:Session serial number. Used to uniquely identify a session's objects. Guarantees that session-level commands are applied to the correct session objects if the session ends and another session begins with the same session ID.
          sid 会重用,但是同一个SID被重用时,serial#会增加,不会重复。
          比如说你在10:00时发现有一个SID 10 ,serial#为100的session 不正常,想杀掉他,要是直接用kill sid 10 ,而同时这个session 主动退出,新session近来 而又正好用了 10这个SID (这时新session的serial#不会=100,只会比100高),就会发生误杀的情况。所以Oracle要求我们在杀session时,必须同时指定sid和serial#。从另外一个角度上说,sid 在同一个instance的当前session中是一个unique key, 而sid ,serial#则是在整个instance生命期内的所有session中是unique key。(不考虑serial#超过最大值,重用的情况)

    3、AUDSID --Auditing session ID 该会话对应的审计会话的id号,对应的是dba_audit_session的sessionid字段,可以查看会话产生时间,数据库实例ID以及对应的服务器进程。

     4、paddr ,这个我们要和saddr、taddr一起讲一下

          saddr(session address):表示当前记录的内存地址;
          paddr(process address):该session对应的进程地址,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个进程的id;
          taddr(transation address):当前有活动事务的地址,关联v$transaction表的addr,通过这个字段关联查出当前session正在使用的回滚段的情况,以及当前事务的大小等信息

    5、USER#USERNAME 表示登录的用户名编号和用户名,比如说sytem、test等,如果没有说明是后台进程产生的session。

          比如说:QMNC、MMON 、MMNL 等后台经常,这是时候我们可以看看v$session 的PROGRAM字段。

    6、COMMAND --正在执行的当前命令类型,记录的是一个数值,要结合下表进行查看 Table 7-5. These values also appear in the AUDIT_ACTIONS table.

    Number

    Command

    Number

    Command

    1

    CREATE TABLE

    2

    INSERT

    3

    SELECT

    4

    CREATE CLUSTER

    5

    ALTER CLUSTER

    6

    UPDATE

    7

    DELETE

    8

    DROP CLUSTER

    9

    CREATE INDEX

    10

    DROP INDEX

    11

    ALTER INDEX

    12

    DROP TABLE

    13

    CREATE SEQUENCE

    14

    ALTER SEQUENCE

    15

    ALTER TABLE

    16

    DROP SEQUENCE

    17

    GRANT OBJECT

    18

    REVOKE OBJECT

    19

    CREATE SYNONYM

    20

    DROP SYNONYM

    21

    CREATE VIEW

    22

    DROP VIEW

    23

    VALIDATE INDEX

    24

    CREATE PROCEDURE

    25

    ALTER PROCEDURE

    26

    LOCK

    27

    NO-OP

    28

    RENAME

    29

    COMMENT

    30

    AUDIT OBJECT

    31

    NOAUDIT OBJECT

    32

    CREATE DATABASE LINK

    33

    DROP DATABASE LINK

    34

    CREATE DATABASE

    35

    ALTER DATABASE

    36

    CREATE ROLLBACK SEG

    37

    ALTER ROLLBACK SEG

    38

    DROP ROLLBACK SEG

    39

    CREATE TABLESPACE

    40

    ALTER TABLESPACE

    41

    DROP TABLESPACE

    42

    ALTER SESSION

    43

    ALTER USER

    44

    COMMIT

    45

    ROLLBACK

    46

    SAVEPOINT

    47

    PL/SQL EXECUTE

    48

    SET TRANSACTION

    49

    ALTER SYSTEM

    50

    EXPLAIN

    51

    CREATE USER

    52

    CREATE ROLE

    53

    DROP USER

    54

    DROP ROLE

    55

    SET ROLE

    56

    CREATE SCHEMA

    57

    CREATE CONTROL FILE

    59

    CREATE TRIGGER

    60

    ALTER TRIGGER

    61

    DROP TRIGGER

    62

    ANALYZE TABLE

    63

    ANALYZE INDEX

    64

    ANALYZE CLUSTER

    65

    CREATE PROFILE

    66

    DROP PROFILE

    67

    ALTER PROFILE

    68

    DROP PROCEDURE

    70

    ALTER RESOURCE COST

    71

    CREATE MATERIALIZED VIEW LOG

    72

    ALTER MATERIALIZED VIEW LOG

    73

    DROP MATERIALIZED VIEW LOG

    74

    CREATE MATERIALIZED VIEW

    75

    ALTER MATERIALIZED VIEW

    76

    DROP MATERIALIZED VIEW

    77

    CREATE TYPE

    78

    DROP TYPE

    79

    ALTER ROLE

    80

    ALTER TYPE

    81

    CREATE TYPE BODY

    82

    ALTER TYPE BODY

    83

    DROP TYPE BODY

    84

    DROP LIBRARY

    85

    TRUNCATE TABLE

    86

    TRUNCATE CLUSTER

    91

    CREATE FUNCTION

    92

    ALTER FUNCTION

    93

    DROP FUNCTION

    94

    CREATE PACKAGE

    95

    ALTER PACKAGE

    96

    DROP PACKAGE

    97

    CREATE PACKAGE BODY

    98

    ALTER PACKAGE BODY

    99

    DROP PACKAGE BODY

    100

    LOGON

    101

    LOGOFF

    102

    LOGOFF BY CLEANUP

    103

    SESSION REC

    104

    SYSTEM AUDIT

    105

    SYSTEM NOAUDIT

    106

    AUDIT DEFAULT

    107

    NOAUDIT DEFAULT

    108

    SYSTEM GRANT

    109

    SYSTEM REVOKE

    110

    CREATE PUBLIC SYNONYM

    111

    DROP PUBLIC SYNONYM

    112

    CREATE PUBLIC DATABASE LINK

    113

    DROP PUBLIC DATABASE LINK

    114

    GRANT ROLE

    115

    REVOKE ROLE

    116

    EXECUTE PROCEDURE

    117

    USER COMMENT

    118

    ENABLE TRIGGER

    119

    DISABLE TRIGGER

    120

    ENABLE ALL TRIGGERS

    121

    DISABLE ALL TRIGGERS

    122

    NETWORK ERROR

    123

    EXECUTE TYPE

    157

    CREATE DIRECTORY

    158

    DROP DIRECTORY

    159

    CREATE LIBRARY

    160

    CREATE JAVA

    161

    ALTER JAVA

    162

    DROP JAVA

    163

    CREATE OPERATOR

    164

    CREATE INDEXTYPE

    165

    DROP INDEXTYPE

    167

    DROP OPERATOR

    168

    ASSOCIATE STATISTICS

    169

    DISASSOCIATE STATISTICS

    170

    CALL METHOD

    171

    CREATE SUMMARY

    172

    ALTER SUMMARY

    173

    DROP SUMMARY

    174

    CREATE DIMENSION

    175

    ALTER DIMENSION

    176

    DROP DIMENSION

    177

    CREATE CONTEXT

    178

    DROP CONTEXT

    179

    ALTER OUTLINE

    180

    CREATE OUTLINE

    181

    DROP OUTLINE

    182

    UPDATE INDEXES

    183

    ALTER OPERATOR

     

         

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     OWNERID——如果值为2147483644,则此列的内容无效。否则此列包含拥有可移植会话的用户标符。对于利用并行从服务器的操作,将这个值解释为一个48 字节的值。其低位两字节表示会话号,而高位字节表示查询协调程序的实例ID。

    TADDR——当前有活动事务的地址,关联v$transaction视图的addr可以查出当前session正在使用的回滚段的信息以及当前事务大小等情况。

    LOCKWAIT——当前会话正在等待的锁的地址,如果没有等待锁则为null。

     

    STATUS——当前会话的状态

           ACTIVE:正在执行SQL语句

          INACTIVE:会话不是活动状态,正在等待要执行的SQL语句。

          KILLED:被标记为已经杀死

          CACHED:会话被oracle *XA缓存起来使用。不是太懂,两端提交?。。

          SNIPED :会话在等待client端的响应。

    SERVER——数据库提供服务的方式

          Dedicated:专用服务器模式

          Shared:共享服务器模式

    SECHEMA#——模式用户标识符

    SECHEMANAME——模式用户名

    OSUSER——会话的客户端系统的用户名

    PROCESS——会话客户端进程id号,线程号。比如792:800,792代表进程的pid,800代表线程的tid。

      查看客户端的进程:

     查看线程:

    MACHINE 操作系统机器名、TERMINAL  操作系统终端名

        可以根据主terminal查询客户端的ip

         select utl_inaddr.get_host_address(terminal) from v$session where username is not null;

    PROGRAM  操作系统程序名

         通过本机连接的session,一般都有program。如果是通过服务器连接的session,一般都没有program。

    TYPE 会话类型

          一般有两个类型:background(后台进程)、user(用户)

    SQL_ADDRESS  对应的是v$sql中的addresss

           Used with SQL_HASH_VALUE to identify the SQL statement that is currently being executed
           当前正在执行的SQL语句的SQL_HASH_VALUE值

    SQL_HASH_VALUE 对应的是v$sql中的HASH_VALUE

            Used with SQL_ADDRESS to identify the SQL statement that is currently being executed
            当前正在执行的SQL语句的SQL_ADDRESS值
            SQL_HASH_VALUE,SQL_ADDRESS:这两列用于鉴别默认被session执行的SQL语句。如果为null或0,那就说明这个session没有执行任何SQL语句。PREV_HASH_VALUE和PREV_ADDRESS两列用来鉴别被session执行的上一条语句。

    SQL_ID

             SQL identifier of the SQL statement that is currently being executed
             正在执行的SQL语句的标识符

    SQL_CHILD_NUMBER

             Child number of the SQL statement that is currently being executed

    PREV_......前一句执行的SQL语句的信息。

    MODULE——用户通过DBMS_APPLICATION_INFO.SET_MODULE进行的一些设置的名字

    MODULE_HASH——MODULE的hash值

    ACTION——用户通过DBMS_APPLICATION_INFO.SET_ACTION进行的一些设置的名字

    ACTION_HASH——ACTION的HASH值

    CLIENT_INFO——用户通过DBMS_APPLICATION_INFO.SET_CLIENT_INFO进行一些设置的相关信息。

    FIXD_TABLE_SEQUENCE——当session完成一个user call后就会增加的一个数值,也就是说,如果session挂起,它就不会增加。因此可以根据这个字段来监控某个时间点以来的session性能情况。例如,一个小时前某个session的此字段数值为10000,而现在是20000,则表明一个小时内其user call较频繁,可以重点关注此session的performance statistics。

    ROW_WAIT_OBJ#——被锁定行所在table的object_id。和dba_objects中的object_id关联可以得到被锁定的table name。

    ROW_WAIT_FILE#——被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name。

    ROW_WAIT_ROW#——session当前正在等待的被锁定的行。

    LOGON_TIME——会话登录的时间

    LAST_CALL_ET——如果会话是ACTIVE状态则表示了会话已经持续ACTIVE状态多久。如果会话是INACTIVE状态则表示会话已经处于INACTIVE状态多久。

    PDML_ENABLED——这列已经被PDML_STATUS列取代,那么PDML_STATUS列代表了什么。如果是ENABLED则代表了这个会话执行DML语句可以使用oracle的并行执行技术,如果是DISABLE则代表了这个会话执行DDL语句禁止使用oracle并行执行技术。

    PDDL_STATUS——和PDML_STATUS差不多,只不过这个是针对DDL语句的。

    PQ_STATUS——也和以上两条差不多,只不过这个是针对select语句的。Q代表query。

    CURRENT_QUEUE_DURATION——如果值为1则代表session已经在队列中,如果是0则代表还没有形成排队。

    CLIENT_IDENTIFIER——客户端会话的标识符。

  • 相关阅读:
    数据转换类型和算数运算符
    语言基础+数据类型
    JS(一)Prototype的使用
    Jquery EasyUI简介和数据的增删改查
    http简介
    《JavaScript语言精粹》笔记
    wcf
    简单工厂模式与抽象工厂模式
    <转载>C#中的特性(Attributes)
    <转载>C#IEnumerable和IEnumerator 详解
  • 原文地址:https://www.cnblogs.com/annannan/p/12826407.html
Copyright © 2020-2023  润新知