oracle10g R2 v$session视图详解

2021英伟达暑期实习面经(芯片设计) 2021英伟达暑期实习面经(芯片设计前端/DFT) 准备了将近一个月,终于赶在三月的最后一天拿到了offer,暑期实习算是上岸了,后面还有阿里/华为等一些国内公司的面试,但既然拿到了nv的offer,后面的先就当积累面试经验吧~ 网上关于nv的实习or秋招面经很少,硬件岗的更少(约等于没有好吧)。之前准备面试的时候,在网上找了半天,好像就只在牛客网上见过一篇关于nv硬件岗的面经,幸好当时认真看了哈哈。所以既然幸运上岸了,想趁自己还记得,record一下,希望可以帮到有缘人呀~ 好了,废话不多说,开始正题。 阅读详情

引言: 从10g开始,伴随ASH功能的引入,对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.


        下面为每个字段的详细说明。


Column

Datatype

Description

SADDR

RAW(4 | 8)

Session address

SID

NUMBER

Session identifier

SERIAL#

NUMBER

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.

AUDSID

NUMBER

Auditing session ID

PADDR

RAW(4 | 8)

Address of the process that owns the session

USER#

NUMBER

Oracle user identifier

USERNAME

VARCHAR2(30)

Oracle username

COMMAND

NUMBER

Command in progress (last statement parsed); for a list of values, see Table 7-5. These values also appear in the AUDIT_ACTIONS table.

OWNERID

NUMBER

The column contents are invalid if the value is 2147483644. Otherwise, this column contains the identifier of the user who owns the migratable session.

For operations using Parallel Slaves, interpret this value as a 4-byte value. The low-order 2 bytes of which represent the session number, and the high-order bytes the instance ID of the query coordinator.

TADDR

VARCHAR2(8)

Address of transaction state object

LOCKWAIT

VARCHAR2(8)

Address of lock waiting for; null if none

STATUS

VARCHAR2(8)

Status of the session:

·         ACTIVE - Session currently executing SQL

·         INACTIVE

·         KILLED - Session marked to be killed

·         CACHED - Session temporarily cached for use by Oracle*XA

·         SNIPED - Session inactive, waiting on the client

SERVER

VARCHAR2(9)

Server type (DEDICATED| SHARED| PSEUDO|NONE)

SCHEMA#

NUMBER

Schema user identifier

SCHEMANAME

VARCHAR2(30)

Schema user name

OSUSER

VARCHAR2(30)

Operating system client user name

PROCESS

VARCHAR2(12)

Operating system client process ID

MACHINE

VARCHAR2(64)

Operating system machine name

TERMINAL

VARCHAR2(30)

Operating system terminal name

PROGRAM

VARCHAR2(48)

Operating system program name

TYPE

VARCHAR2(10)

Session type

SQL_ADDRESS

RAW(4 | 8)

Used with SQL_HASH_VALUE to identify the SQL statement that is currently being executed

SQL_HASH_VALUE

NUMBER

Used with SQL_ADDRESS to identify the SQL statement that is currently being executed

SQL_ID

VARCHAR2(13)

SQL identifier of the SQL statement that is currently being executed

SQL_CHILD_NUMBER

NUMBER

Child number of the SQL statement that is currently being executed

PREV_SQL_ADDR

RAW(4 | 8)

Used with PREV_HASH_VALUE to identify the last SQL statement executed

PREV_HASH_VALUE

NUMBER

Used with SQL_HASH_VALUE to identify the last SQL statement executed

PREV_SQL_ID

VARCHAR2(13)

SQL identifier of the last SQL statement executed

PREV_CHILD_NUMBER

NUMBER

Child number of the last SQL statement executed

MODULE

VARCHAR2(48)

Name of the currently executing module as set by calling the DBMS_APPLICATION_INFO.SET_MODULE procedure

MODULE_HASH

NUMBER

Hash value of the above MODULE

ACTION

VARCHAR2(32)

Name of the currently executing action as set by calling the DBMS_APPLICATION_INFO.SET_ACTION procedure

ACTION_HASH

NUMBER

Hash value of the above action name

CLIENT_INFO

VARCHAR2(64)

Information set by the DBMS_APPLICATION_INFO.SET_CLIENT_INFO procedure

FIXED_TABLE_SEQUENCE

NUMBER

This contains a number that increases every time the session completes a call to the database and there has been an intervening select from a dynamic performance table. This column can be used by performance monitors to monitor statistics in the database. Each time the performance monitor looks at the database, it only needs to look at sessions that are currently active or have a higher value in this column than the highest value that the performance monitor saw the last time. All the other sessions have been idle since the last time the performance monitor looked at the database.

ROW_WAIT_OBJ#

NUMBER

Object ID for the table containing the row specified in ROW_WAIT_ROW#

ROW_WAIT_FILE#

NUMBER

Identifier for the datafile containing the row specified in ROW_WAIT_ROW#. This column is valid only if the session is currently waiting for another transaction to commit and the value ofROW_WAIT_OBJ# is not-1.

ROW_WAIT_BLOCK#

NUMBER

Identifier for the block containing the row specified in ROW_WAIT_ROW#. This column is valid only if the session is currently waiting for another transaction to commit and the value ofROW_WAIT_OBJ# is not-1.

ROW_WAIT_ROW#

NUMBER

Current row being locked. This column is valid only if the session is currently waiting for another transaction to commit and the value ofROW_WAIT_OBJ# is not-1.

LOGON_TIME

DATE

Time of logon

LAST_CALL_ET

NUMBER

If the session STATUS is currently ACTIVE, then the value represents the elapsed time in seconds since the session has become active.

If the session STATUS is currently INACTIVE, then the value represents the elapsed time in seconds since the session has become inactive.

PDML_ENABLED

VARCHAR2(3)

This column has been replaced by column PDML_STATUS

FAILOVER_TYPE

VARCHAR2(13)

Indicates whether and to what extent transparent application failover (TAF) is enabled for the session:

·         NONE - Failover is disabled for this session

·         SESSION - Client is able to fail over its session following a disconnect

·         SELECT - Client is able to fail over queries in progress as well

See Also:

·         Oracle Database Concepts for more information on TAF

·         Oracle Database Net Services Administrator's Guide for information on configuring TAF

FAILOVER_METHOD

VARCHAR2(10)

Indicates the transparent application failover method for the session:

·         NONE - Failover is disabled for this session

·         BASIC - Client itself reconnects following a disconnect

·         PRECONNECT - Backup instance can support all connections from every instance for which it is backed up

FAILED_OVER

VARCHAR2(3)

Indicates whether the session is running in failover mode and failover has occurred (YES) or not (NO)

RESOURCE_CONSUMER_GROUP

VARCHAR2(32)

Name of the session's current resource consumer group

PDML_STATUS

VARCHAR2(8)

If ENABLED, the session is in a PARALLEL DML enabled mode. If DISABLED, PARALLEL DML enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLEL DML.

PDDL_STATUS

VARCHAR2(8)

If ENABLED, the session is in a PARALLEL DDL enabled mode. If DISABLED, PARALLEL DDL enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLEL DDL.

PQ_STATUS

VARCHAR2(8)

If ENABLED, the session is in a PARALLEL QUERY enabled mode. If DISABLED, PARALLEL QUERY enabled mode is not supported for the session. IfFORCED, the session has been altered to force PARALLEL QUERY.

CURRENT_QUEUE_DURATION

NUMBER

If queued (1), the current amount of time the session has been queued. If not currently queued, the value is0.

CLIENT_IDENTIFIER

VARCHAR2(64)

Client identifier of the session

BLOCKING_SESSION_STATUS

VARCHAR2(11)

Blocking session status:

·         VALID

·         NO HOLDER

·         GLOBAL

·         NOT IN WAIT

·         UNKNOWN

BLOCKING_INSTANCE

NUMBER

Instance identifier of blocking session

BLOCKING_SESSION

NUMBER

Session identifier of blocking session

SEQ#

NUMBER

Sequence number that uniquely identifies the wait. Incremented for each wait.

EVENT#

NUMBER

Event number

EVENT

VARCHAR2(64)

Resource or event for which the session is waiting

See Also: Appendix C, "Oracle Wait Events"

P1TEXT

VARCHAR2(64)

Description of the first additional parameter

P1

NUMBER

First additional parameter

P1RAW

RAW(4)

First additional parameter

P2TEXT

VARCHAR2(64)

Description of the second additional parameter

P2

NUMBER

Second additional parameter

P2RAW

RAW(4)

Second additional parameter

P3TEXT

VARCHAR2(64)

Description of the third additional parameter

P3

NUMBER

Third additional parameter

P3RAW

RAW(4)

Third additional parameter

WAIT_CLASS_ID

NUMBER

Identifier of the wait class

WAIT_CLASS#

NUMBER

Number of the wait class

WAIT_CLASS

VARCHAR2(64)

Name of the wait class

WAIT_TIME

NUMBER

A nonzero value is the session's last wait time. A zero value means the session is currently waiting.

SECONDS_IN_WAIT

NUMBER

If WAIT_TIME = 0, then SECONDS_IN_WAIT is the seconds spent in the current wait condition. IfWAIT_TIME >0, then SECONDS_IN_WAIT is the seconds since the start of the last wait, andSECONDS_IN_WAIT -WAIT_TIME / 100 is the active seconds since the last wait ended.

STATE

VARCHAR2(19)

Wait state:

·         0 - WAITING (the session is currently waiting)

·         -2 - WAITED UNKNOWN TIME (duration of last wait is unknown)

·         -1 - WAITED SHORT TIME (last wait <1/100th of a second)

·         >0 - WAITED KNOWN TIME (WAIT_TIME = duration of last wait)

SERVICE_NAME

VARCHAR2(64)

Service name of the session

SQL_TRACE

VARCHAR2(8)

Indicates whether SQL tracing is enabled (ENABLED) or disabled (DISABLED)

SQL_TRACE_WAITS

VARCHAR2(5)

Indicates whether wait tracing is enabled (TRUE) or not (FALSE)

SQL_TRACE_BINDS

VARCHAR2(5)

Indicates whether bind tracing is enabled (TRUE) or not (FALSE)


1、SADDR  --Session address Session地址


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


      from asktom
      the audsid column is populated via a sequence and for normal
       sessions is the same as "userenv('sessionid')" -- but for some background sessions -- it is not set
       (it comes back as "0" making the view not work.
        So, I'd just ignore "audsid" for now and use SID.


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字段。

     

SQL> select PROGRAM from v$session where username is null;

PROGRAM
------------------------------------------------
oracle@TEST-8-40 (q001)
oracle@TEST-8-40 (q000)
oracle@TEST-8-40 (QMNC)
oracle@TEST-8-40 (MMNL)
oracle@TEST-8-40 (MMON)
oracle@TEST-8-40 (CJQ0)
oracle@TEST-8-40 (RECO)
oracle@TEST-8-40 (SMON)
oracle@TEST-8-40 (CKPT)
oracle@TEST-8-40 (LGWR)
oracle@TEST-8-40 (DBW0)

PROGRAM
------------------------------------------------
oracle@TEST-8-40 (MMAN)
oracle@TEST-8-40 (PSP0)
oracle@TEST-8-40 (PMON)

14 rows selected.


6、COMMAND  Command in progress (last statement parsed); for a list of values, seeTable 7-5. These values also appear in the AUDIT_ACTIONS table.

     

COMMAND Column of V$SESSION and Corresponding Commands

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

 

 

 

7、OWNERID

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


8、LOCKWAIT Address of lock waiting for; null if none

      等待锁的地址;如果没有,为NULL


9、STATUS

        Status of the session:

  • ACTIVE - Session currently executing SQL

  • INACTIVE

  • KILLED - Session marked to be killed

  • CACHED - Session temporarily cached for use by Oracle*XA

  • SNIPED - Session inactive, waiting on the client

         文档里面已经说的比较清楚了


10、SERVER 

         服务器类型:DEDICATED(独有)、SHARED(共享)、PSEUDO、NONE

         服务器类型在安装时候已经选择了,我们一般选择DEDICATED模式,非共享。


11、SCHEMA#   模式用户标识符


12、SCHEMANANME  模式用户名、OSUSER   操作系统客户机用户


13、PROCESS 操作系统客户机进程ID

       关于v$process与v$session中process的理解

       说明
       v$session有个process字段,V$PROCESS有个SPID字段,这两个字段是不是一个意思呢?是不是都代表会话的操作系统进程呢?
       官方文档上的解释:
       SPID      VARCHAR2(12)  Operating system process identifier
       PROCESS   VARCHAR2(9)   Operating system client process ID

      本文以数据库服务器安装在linux上为例进行说明。
      V$PROCESS中的SPID表示的是操作系统的进程,v$session中的process表示客户端进程ID,即客户端进程在客户端机器上的进程ID号。一个表示客户端进程在客户端机器上的进程号,一个表示服务器进程在服务器上的进程号。
      连接服务器的会话,发起会话的客户端进程可能是unix进程,也可能是windows进程。
      -------------------
      windows客户端进程
     -------------------
     例如,使用windows进程连接unix上的数据库,对应会话sid=35,对应客户端windows的988:5412


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

       

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

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


15、PROGRAM  操作系统程序名


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


16、TYPE 会话类型

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


17、SQL_ADDRESS 


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

18、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执行的上一条语句。


19、SQL_ID


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


20、SQL_CHILD_NUMBER


         Child number of the SQL statement that is currently being executed


21、PREV_SQL_ADDR


         Used with PREV_HASH_VALUE to identify the last SQL statement executed


22、PREV_HASH_VALUE

       

          Used with SQL_HASH_VALUE to identify the last SQL statement executed


23、MODULE、ACTION

        

         Name of the currently executing module as set by calling the DBMS_APPLICATION_INFO.SET_MODULE procedure

        

session 1:
SQL> select sid from v$mystat where rownum=1;

       SID
----------
        10

SQL> create or replace procedure proc1
  2  as
  3  begin
  4    dbms_application_info.set_action('PROC1');
  5    for i in 1..50 loop
  6      dbms_lock.sleep(1);
  7    end loop;
  8    dbms_application_info.set_action(NULL);
  9  end;
 10  /

Procedure created.

SQL> create or replace procedure proc2
  2  as
  3  begin
  4    dbms_application_info.set_action('PROC2');
  5    for i in 1..30 loop
  6      dbms_lock.sleep(2);
  7    end loop;
  8    dbms_application_info.set_action(NULL);
  9  end;
 10  /

Procedure created.

SQL> create or replace procedure proc_main
  2  as
  3  begin
  4    dbms_application_info.set_module('PROC_MAIN','MAIN');
  5    dbms_lock.sleep(20);
  6    proc1;
  7    proc2;
  8    dbms_application_info.set_module('PROC_MAIN',NULL);
  9  end;
 10  /

Procedure created.

SQL> exec proc_main;


session 2:
SQL> select sid,serial#,module,action from v$session where sid=10;

       SID    SERIAL# MODULE     ACTION
---------- ---------- ---------- ----------
        10         26 PROC_MAIN  MAIN
......       
SQL> select sid,serial#,module,action from v$session where sid=10;

       SID    SERIAL# MODULE     ACTION
---------- ---------- ---------- ----------
        10         26 PROC_MAIN  PROC1
......
SQL> select sid,serial#,module,action from v$session where sid=10;

       SID    SERIAL# MODULE     ACTION
---------- ---------- ---------- ----------
        10         26 PROC_MAIN  PROC2
......
SQL> select sid,serial#,module,action from v$session where sid=10;

       SID    SERIAL# MODULE     ACTION
---------- ---------- ---------- ----------
        10         26 PROC_MAIN_HASH_VALUE,SQL_ADDRESS 

如果是psql登录的也可以看到登录工具:MODULE 为登录工具、或者sqlplus工具,action是sql窗口你正在做的操作


24、MODULE_HASH、ACTION_HASH hash值


25、CLIENT_INFO:还记得SET COMMAND ID命令吗?该命令设置的值就会在V$SESSION.CLIENT_INFO中体现。

         让我举个例子说给你们看看的,这个可以找了好长时间的啊。

1)首先,让我们来设置SET_CLIENT_INFO,这里我们通过一个触发器

SQL> CREATE OR REPLACE TRIGGER trigger_name AFTER LOGON ON DATABASE
  2  DECLARE
  3  ipinfo VARCHAR2(30);
  4  BEGIN
  5  SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') INTO ipinfo FROM DUAL;
  6  DBMS_APPLICATION_INFO.SET_CLIENT_INFO(ipinfo);
  7  END;
  8  /
 
Trigger created


2)这个触发器的意思能够看懂吧,通过这个触发器,让我一登陆就是知道了


[oracle@IM-8-201 ~]$ sqlplus test/test
SQL> select CLIENT_INFO from v$session  where username='TEST';
 
CLIENT_INFO
----------------------------------------------------------------
192.168.1.100
 
26、FIXED_TABLE_SEQUENCE: 

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


SQL> conn sys/sys as sysdba
Connected.
SQL>  SELECT FIXED_TABLE_SEQUENCE FROM V$SESSION a where a.username='SYS';

FIXED_TABLE_SEQUENCE
--------------------
                3023

SQL>  SELECT FIXED_TABLE_SEQUENCE FROM V$SESSION a where a.username='SYS';

FIXED_TABLE_SEQUENCE
--------------------
                3025

SQL>  SELECT FIXED_TABLE_SEQUENCE FROM V$SESSION a where a.username='SYS';

FIXED_TABLE_SEQUENCE
--------------------
                3027


27、ROW_WAIT_OBJ#

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


28、ROW_WAIT_FILE#

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


29、ROW_WAIT_ROW#

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


 
30、LOGON_TIME: session logon time


31、LAST_CALL_ET


        If the session STATUS is currently ACTIVE, then the value represents the elapsed time in seconds since the session has become active.
        If the session STATUS is currently INACTIVE, then the value represents the elapsed time in seconds since the session has become inactive.


32、PDML_ENABLED This column has been replaced by column PDML_STATUS

         既然这么说,就要先看PDML_STATUS


33、PDML_STATUS


         If ENABLED, the session is in a PARALLEL DML enabled mode. If DISABLED, PARALLEL DML enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLEL DML.

         PARALLEL :数据并行技术,具体等会儿给链接


34、PDDL_STATUS


         If ENABLED, the session is in a PARALLEL DDL enabled mode. If DISABLED, PARALLEL DDL enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLEL DDL.

         这个是针对DDL的


35、PQ_STATUS


         If ENABLED, the session is in a PARALLEL QUERY enabled mode. If DISABLED, PARALLEL QUERY enabled mode is not supported for the session. If FORCED, the session has been altered to force PARALLEL QUERY.

         这个是针对select的,简单吧


36、CURRENT_QUEUE_DURATION
         If queued (1), the current amount of time the session has been queued. If not currently queued, the value is 0.
        if 1则session已经在队列中,if 0 则还未形成排队


37、CLIENT_IDENTIFIER
         Client identifier of the session


38、BLOCKING_SESSION_STATUS
         Blocking session status:
*VALID 状态valid为正在等待
*NO HOLDER 
*GLOBAL
*NOT IN WAIT
*UNKNOWN

发生阻塞时候可以查询


到了10G,多了blocking_session 和 blocking_session_status字段,可以知道是否被阻塞。如果blocking_session_status字段是VALID,那一个有效的SID会出现在blocking_session 字段。
SQL>  select sid, sql_id,  PREV_SQL_ID , BLOCKING_SESSION_STATUS , BLOCKING_SESSION ,WAIT_CLASS_ID,SECONDS_IN_WAIT   ,WAIT_CLASS   from v$session  where
  2   username='KONG';


       SID SQL_ID        PREV_SQL_ID   BLOCKING_SESSION_STATUS           BLOCKING_SESSION WAIT_CLASS_ID SECONDS_IN_WAIT WAIT_CLASS
---------- ------------- ------------- --------------------------------- ---------------- ------------- --------------- ----------------------------------------------------------------
       290 0hcsvq77pq2a8 dyk4dprp70d74 VALID                                          300    4217450380             118 Application
       300               0hcsvq77pq2a8 NO HOLDER                                             2723168908             124 Idle
可以看到290 的进程被300的进程阻塞。


在以前如果想要查询某个session执行了那个sql语句,那需要用两个字段来查询: HASH_VALUE和ADDRESS。现在只有一个SQL_ID就可以了。
SQL> select  sql_text from v$sqltext st, v$session s
  2  where (st.sql_id = s.sql_id ) and s.sid=300;


SQL_TEXT
----------------------------------------------------------------
select count(*) from t2


  BLOCKING_INSTANCE                NUMBER          模块化的实例标识符
  BLOCKING_SESSION                 NUMBER          模块化的session标识符
  SEQ#                             NUMBER          不唯一的标示每个等待的序列号
  EVENT#                           NUMBER          事件数量
  EVENT                            VARCHAR2(64)    oracle的session正在等待的数据或者事件
  P1TEXT                           VARCHAR2(64)    首个附加参数的描述
  P1                               NUMBER          首个附加参数
  P1RAW                            RAW(4)          首个附加参数和前一个区别我还不是很懂
  P2TEXT                           VARCHAR2(64)    第二个附加参数的描述
  P2                               NUMBER          第二个附加参数
  P2RAW                            RAW(4)          第二个附加参数
  P3TEXT                           VARCHAR2(64)    第三个附加参数的描述
  P3                               NUMBER          第三个附加参数
  P3RAW                            RAW(4)          第三个附加参数
  WAIT_CLASS_ID                    NUMBER          标记等待事件种类
  WAIT_CLASS#                      NUMBER          等待事件的种类
  WAIT_CLASS                       VARCHAR2(64)    等待事件的名称
  WAIT_TIME                        NUMBER          非0代表上一次session上次等待时间,0代表session当前正在等待
  SECONDS_IN_WAIT                  NUMBER


oracle文档的资料:
  If WAIT_TIME = 0, then SECONDS_IN_WAIT is the seconds spent in the
  current wait condition. If WAIT_TIME > 0, then SECONDS_IN_WAIT is the
  seconds since the start of the last wait, and SECONDS_IN_WAIT - WAIT_
  TIME / 100 is the active seconds since the last wait ended.
 STATE                VARCHAR2(19)
  oracle资料文档:
  Wait state:
  ■ 0 - WAITING (the session is currently waiting)
  ■ -2 - WAITED UNKNOWN TIME (duration of last wait is unknown)
  ■ -1 - WAITED SHORT TIME (last wait <1/100th of a second)
  ■ >0 - WAITED KNOWN TIME (WAIT_TIME = duration of last wait)
  SERVICE_NAME                   VARCHAR2(64)        session的服务名称
  SQL_TRACE                      VARCHAR2(8)         标示sql是否能被跟踪
  SQL_TRACE_WAITS                VARCHAR2(5)         标记是否等待事件被跟踪
  SQL_TRACE_BINDS                VARCHAR2(5)         标记是否绑定跟踪可用与否


避坑指南:SAP成本中心分割结构配置常见错误及解决(含KA06/KL01前置步骤) 本文深入解析了SAP成本中心会计中分割结构配置的关键步骤与常见错误。重点强调了配置前必须通过KA06创建次级成本要素(类别42)和通过KL01创建活动类型这两个核心前置步骤,并详细剖析了在OKES中定义分割规则及版本时的高频报错原因与解决方案,帮助顾问和运维人员有效规避配置陷阱,确保成本分摊的准确性。 阅读详情

相关推荐

Ubuntu 24.04 + RTX 5090 部署 OpenVLA-OFT:从环境配置到机器人任务评估实战

本文详细记录了在Ubuntu 24.04 LTS系统上,为全新RTX 5090显卡配置CUDA 12.8+与PyTorch 2.7.1+开发环境,并成功部署OpenVLA-OFT视觉语言模型进行机器人任务评估的完整实战流程。文章重点解决了驱动安装、依赖版本冲突、路径设置等核心难题,为在最新硬件上运行先进AI机器人模型提供了可靠的避坑指南和性能观察。

n8m7b6v5c4的博客 595

Oracle V$SESSION_WAIT

Oracle® Database Reference10g Release 2 (10.2) Part Number B14237-04 在10gr2中,V$SESSION_WAIT的所有内容都可以在v$sess...

cuiding8243的博客 299

告别手动操作!用Python脚本批量处理Siemens NX零件文件(导入/导出/移除参数)

本文详细介绍了如何利用Python脚本实现Siemens NX零件文件的批量处理,包括导入、导出和移除参数等操作。通过NX Open API和Python UF接口,工业设计师可以大幅提升工作效率,告别繁琐的手动操作。文章提供了完整的实战指南,涵盖环境配置、核心功能实现以及性能优化技巧,特别适合需要进行Siemens-NXUG二次开发的工程师参考。

weixin_28222493的博客 261

Oracle中的v$process v$session字段详解

Oracle中的v$process v$session视图字段详解

xinliucs的博客 7152

MCGS 和 200SMART 时间同步

在实际应用中,PLC经常会因为断电原因,导致时间不准确。假设我们设置了一个投加泵,每天8-18点投加。屏幕上显示的时间和PLC内部的时间,很可能不一样。所以需要在触摸屏上读取PLC的时间,并且提供设置功能。

mmxxoo_xxmmp的博客 1520

GitHub与GitLab中的Fork操作:从个人仓库到团队协作的完整指南

本文详细介绍了GitHub与GitLab中的Fork操作,从个人仓库到团队协作的完整指南。通过Fork操作,开发者可以在权限隔离的环境下自由实验,并通过合并请求机制保证代码质量。文章涵盖了Fork的具体步骤、本地开发环境配置、代码同步方法以及高级协作技巧,帮助团队高效管理代码仓库。

weixin_28829325的博客 306

Oracle未提交事务引起的锁

笔者所在公司最近上了一套系统,系统使用中间件连接Oracle数据库,使用一段时间之后系统就会停止响应。发现问题在于2点: 1. 中间件有线程执行了Delete语句之后,一直处于等待状态,没有COMMIT提交事务,对表施加了行锁且该线程无法复用(中间件总线程数有限制) 2. 对表施加了行锁之后,后续中间件线程如果需要修改该行,将被阻塞。 以上两个因素不断发生,最终导致中间件线程数耗尽...

weixin_30519071的博客 1352

基于DINO自监督学习对YOLO11 Backbone进行预训练

这PoolHead将获取前一层的输出并应用卷积,然后应用自适应平均池化以将特征图的空间维度减小为固定且一致的大小(1x1)。这是必需的,因为否则空间维度会根据输入的大小而变化,这将使将 DINO 头部附加到主干变得困难,因为它需要固定的输入大小。在本指南中,我们将介绍如何使用 Lightly 使用 DINO 预训练 YOLO 11主干,以及如何将其重新加载到 Ultralytics 中进行微调。您可以使用不同的大小,例如,640这与 YOLO 中的默认图像大小更一致,但它也会在训练期间消耗更多 VRAM。

如果想成为中心,那么就到中心去吧。 1014

Oracle查看阻塞对象

查询Oracle当前阻塞对象

JangBingYang的博客 1897

最新Python爬虫实战(入门爬虫篇)——案例3:爬取二次元cos图片批量下载到本地(附上完整爬虫代码)

本次案例通过Python爬虫技术实现了二次元图片的批量下载。代码采用模块化设计,函数实现cookies的自动解析,简化了配置流程,涵盖“请求列表页→提取详情页URL→请求详情页→提取图片链接→保存图片”的完整流程,与豆瓣案例的核心逻辑和格式完全对齐。学习重点包括:抓包工具定位多层级数据源、正则表达式匹配复杂链接、模拟请求头绕过反爬机制、文件名安全处理及自动化文件管理。需要注意控制请求频率并遵守网站使用规范,适用于入门爬虫实践,帮助学习者掌握多层级页面爬取的核心逻辑。

努力让自己发光,对的人才能迎着光而来 14万+

华为OD机试双机位C卷:挑选宝石 (C/C++/Python/JAVA/JS/GO)

华为OD机试双机位C卷 挑选宝石,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-挑选宝石,华为OD机考-挑选宝石。

qq_45776114的博客 1500

检查是否启用了跟踪(oracle 白皮书 转)

如果会话执行的任务和预期不符,或者执行速度比较慢,那么大多数数据库管理员的第一步是检查等待事件。要构建配置文件,您可能还需要长期跟踪会话,那么在 user_dump_dest 目录中将生成一个跟踪文件。 现在...

cuanbing5840的博客 126

一个超酷的开源uHand2.0机械手掌项目

uHand2.0是深圳乐幻索尔公司开源的一款机械手掌,它长下面这个样子:1、uHand2.0外观图之前在公众号就分享过视频:学习嵌入式可以带娃,不信你们看2、uHand2.0硬件原理图看...

Bruce.yang的嵌入式之旅 4460

[Oracle]OWI等待事件视图(v$session_wait/v$session_event/v$system_event)

通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件。也就是说由于所需资源被占用导致进程不得不处于等待状态。Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本文基于Oracle 10g描述了如何通过视图v$session_wait,v$session_event,以及v$system_event去获取等待事

不忘初心、方得始终 811

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

oracle v$system_event,Oracle OWI 等待事件视图(v$session_wait/v$session_event/v$system_ev

Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件。也就是说由于所需资源被占用导致进程不得不处于等待状态。Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本文基于Oracle ...

weixin_30118071的博客 352

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Oracle OWI 等待事件视图(v$session_wait/v$session_event/v$system_event)

通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件。也就是说由于所需资源被占用导致进程不得不处于等待状态。Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本文基于Oracle 10g描述了如何通过视图v$session_wait,v$session_event,以及v$system_event去获取等待事

乐沙弥的世界 9645

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Oracle OWI等待事件视图

 Oracle OWI等待事件视图(v$session_wait/v$session_event/v$system_event) 2013-04-16 10:19:38       作者:robinson_0612   Oracle OWI等待事件视图(v$session_wait/v$session_event/v$system_event)      通常情况下,用户提交一

zjuji的专栏 839

oracle11g 动态视图,【Oracle11g】16_数据字典和动态性能视图

1.数据字典数据字典就是数据的数据。记录了数据库的最基本的信息。数据字典基本表由$ORACLE_HOME\RDBMS\ADMIN\sql.bsq创建,数据字典表大多以$结尾,属于sys用户,存放在system表空间。用户不能手动去修改数据字典基本表。2.数据字典数据字典视图分为三种类型:USER_、ALL_、DBA_。USER_类型的视图表示当前登录用户拥有的信息。ALL_类型的视图表示当前登录用...

weixin_32349223的博客 328

oracle 动态视图

  1)V$STATNAME:v$statname是对统计信息的说明,STATISTIC#是统计量的编号,NAME就是统计量的名称。SQL> DESC V$STATNAME;Name          Type         ----------       ------------ STATISTIC# NUMBER                          NAME   

zxk105的博客 845

About Oracle SessionView

一、在Oracle中,V$SESSION视图中有哪些比较实用的列? Oracle 数据库中V、GV、GV、GV、XKaTeX parse error: Expected group after '_' at position 3: 、V_̲、GV_之间的关系说明GV之间的关系说明 GV之间的关系说明GV:全局视图,针对多个实例环境。 V:针对某个实例的视图。X:针对某个实例的视图。 X:针对某个...

你的世界是你创造的结果 450

[转载]---Oracle 常见的33个等待事件

一、本文说明: 操作系统:rhel 5.4 x32 数据库:oracle 11g r2 x32 二、等待事件的相关知识: 1.1、等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件。 1)、空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。 2)、非空闲等待...

weixin_30685047的博客 107

drop oracle command,Drop temp tablespace command hang in oracle 11g R2

昨天DB 磁盘空间预警空间不足,发现临时表空间扩展的非常之大,于是规划调整临时表空间换个磁盘路径,本来online switch temp tablespace 并不难,结果还是遇到小问题。采用的方法是1, create new temp tablespace(my case named tempicme)2, alter database set default temp tablespace ...

weixin_42118701的博客 211

分析Oracle Mutex等待事件

Troubleshooting or analyzing waits on mutex events, i.e. ones that start with "cursor:", are very similar to each other and below are some guidelines. There are many bugs related to problems using mu...

weixin_30439031的博客 77

Oracle Session被kill后如何获取会话的进程号

一.背景说明: oracle11gR1以前的数据库版本,如果在将session从数据库层面杀死后v$session里面该sid的paddr就发生了变化,这会引起我们无法通过关联v$process来获取spid达到从操作系统层面清理进程的现象。测试步骤如下: 1.创建一个新的session并获取其sid和paddr和process的相关信息: select a.spid,a

My Technology Workstation 1131

Oracle等待事件

等待事件的起源 等待事件的概念大概是从Oracle 7.0.12中引入的,大致有100个等待事件。在Oracle 8.0中这个数据增大到了大约150个,8I中220个,在ORACLE 9i2 中大约有400个等待事件,而在10G R2中,大约有874个等待事件。 不同版本的等待事件都可以通过查询v$event_name视图获得。 SQL>select * from V$session; select count(*) from v$event_name; ORACLE的等...

weixin_43475880的博客 2264

oracle杀死锁进程,从问题入手帮你解决Oracle杀死死锁进程

51Testing软件测试网pFf? A'Gi4g.NOracle杀死死锁进程51Testing软件测试网4|%C8tEWD{a$z9^6g&O!IFke;Y0  先查看哪些表被锁住了:sYFFK051Testing软件测试网+R-N]NEo3XD3rselect b.owner,b.object_name,a.session_id,a.locked_mode,I2sI|]0from v$...

weixin_28730927的博客 214
上一篇: 表链接方式
下一篇: oracle 10g logminer 使用
RuleV5
博客等级 码龄16年 61粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值