当前会话状态(v$session)

--当前会话状态(v$session)


通过v$session视图,不仅可以知道有哪些会话存在,还可以知道他们现在都在做什么。


--1.会话的标识(sid、serial#、saddr和audsid),会话是属于BACKGROUND会话还是USER会话(type),以及会话进行初始化的时间(logon_time)。
--saddr(session address):表示当前记录的内存地址;
--audsid由SYS.AUDSES$这个sequence产生,当有一个新的会话产生,其audsid的值即为这个sequence的nextval,是为了审计使用的产生值。

SYS@PROD1> select sid, serial#, saddr, audsid, type, logon_time from v$session;

       SID    SERIAL# SADDR	   AUDSID TYPE	     LOGON_TIM
---------- ---------- -------- ---------- ---------- ---------
	 1	    9 4B31FE08 4294967295 USER	     01-MAR-17
	 2	    1 4B31D288		0 BACKGROUND 01-MAR-17
	 3	    1 4B31A708		0 BACKGROUND 01-MAR-17
	 4	    1 4B317B88		0 BACKGROUND 01-MAR-17
	 5	    1 4B315008		0 BACKGROUND 01-MAR-17
	 6	    1 4B312488		0 BACKGROUND 01-MAR-17
	 7	    1 4B30F908		0 BACKGROUND 01-MAR-17
	 8	    1 4B30CD88		0 BACKGROUND 01-MAR-17
	 9	    1 4B30A208		0 BACKGROUND 01-MAR-17
	10	    1 4B307688		0 BACKGROUND 01-MAR-17
	11	    1 4B304B08		0 BACKGROUND 01-MAR-17
	12	    1 4B301F88		0 BACKGROUND 01-MAR-17
	13	    1 4B2FF408		0 BACKGROUND 01-MAR-17
	14	    1 4B2FC888		0 BACKGROUND 01-MAR-17
	15	    1 4B2F9D08		0 BACKGROUND 01-MAR-17
	16	    1 4B2F7188		0 BACKGROUND 01-MAR-17
	18	    5 4B2F1A88		0 BACKGROUND 01-MAR-17
	20	    3 4B2EC388		0 BACKGROUND 01-MAR-17
	21	    1 4B2E9808		0 BACKGROUND 01-MAR-17
	22	    1 4B2E6C88		0 BACKGROUND 01-MAR-17
	23	    1 4B2E4108		0 BACKGROUND 01-MAR-17
	29	    1 4B2D3C08		0 BACKGROUND 01-MAR-17
	30	    1 4B2D1088		0 BACKGROUND 01-MAR-17
	32	    3 4B2CB988		0 BACKGROUND 01-MAR-17
	36	   35 4B2C0B88		0 BACKGROUND 01-MAR-17
	40	    3 4B2B5D88		0 BACKGROUND 01-MAR-17
	41	    7 4B2B3208		0 BACKGROUND 01-MAR-17
	43	   59 4B2ADB08		0 BACKGROUND 01-MAR-17

28 rows selected.

--2.打开会话的用户的标识(username和user#),当前模式(schemaname)和用于连接到数据库引擎的服务名称(service_name)。
--USER#: session's user id。等于dba_users中的user_id。Oracle内部进程的user#为0。

SCOTT@PROD1> select username, user#, schemaname, service_name from v$session;

USERNAME		  USER# SCHEMANAME SERVICE_NAME
-------------------- ---------- ---------- --------------------
SCOTT			     83 SCOTT	   SYS$USERS
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$BACKGROUND
			      0 SYS	   SYS$USERS
			      0 SYS	   SYS$USERS

--3.使用会话的应用(program),启动会话所在的机器(machine),会话的进程ID(process)以及启动会话的操作系统用户的名称(osuser)。

SCOTT@PROD1> select program, machine, process, osuser from v$session;

PROGRAM 		       MACHINE	  PROCESS		   OSUSER
------------------------------ ---------- ------------------------ ----------
sqlplus@ocm1 (TNS V1-V3)       ocm1	  4844			   oracle
oracle@ocm1 (PMON)	       ocm1	  3726			   oracle
oracle@ocm1 (PSP0)	       ocm1	  3728			   oracle
oracle@ocm1 (VKTM)	       ocm1	  3730			   oracle
oracle@ocm1 (GEN0)	       ocm1	  3734			   oracle
oracle@ocm1 (DIAG)	       ocm1	  3736			   oracle
oracle@ocm1 (DBRM)	       ocm1	  3738			   oracle
oracle@ocm1 (DIA0)	       ocm1	  3740			   oracle
oracle@ocm1 (MMAN)	       ocm1	  3742			   oracle
oracle@ocm1 (DBW0)	       ocm1	  3744			   oracle
oracle@ocm1 (LGWR)	       ocm1	  3746			   oracle
oracle@ocm1 (CKPT)	       ocm1	  3748			   oracle
oracle@ocm1 (SMON)	       ocm1	  3750			   oracle
oracle@ocm1 (RECO)	       ocm1	  3752			   oracle
oracle@ocm1 (MMON)	       ocm1	  3754			   oracle
oracle@ocm1 (MMNL)	       ocm1	  3756			   oracle
oracle@ocm1 (RVWR)	       ocm1	  3790			   oracle
oracle@ocm1 (ARC0)	       ocm1	  3794			   oracle
oracle@ocm1 (ARC1)	       ocm1	  3796			   oracle
oracle@ocm1 (ARC2)	       ocm1	  3798			   oracle
oracle@ocm1 (ARC3)	       ocm1	  3800			   oracle
oracle@ocm1 (VKRM)	       ocm1	  3802			   oracle
oracle@ocm1 (QMNC)	       ocm1	  3804			   oracle
oracle@ocm1 (Q001)	       ocm1	  3818			   oracle
oracle@ocm1 (SMCO)	       ocm1	  3876			   oracle
oracle@ocm1 (Q000)	       ocm1	  3816			   oracle
oracle@ocm1 (CJQ0)	       ocm1	  3822			   oracle
oracle@ocm1 (W000)	       ocm1	  4892			   oracle

28 rows selected.

--4.服务器端进程的类型(server)以及服务器端进程的地址。
--可以通过paddr与v$process的addr连接进行查询
SCOTT@PROD1> select p.pname, p.addr, s.server from v$process p, v$session s where p.addr = s.paddr;

PNAME ADDR     SERVER
----- -------- ---------
PMON  4BBD2CA4 DEDICATED
PSP0  4BBD37C8 DEDICATED
VKTM  4BBD42EC DEDICATED
GEN0  4BBD4E10 DEDICATED
DIAG  4BBD5934 DEDICATED
DBRM  4BBD6458 DEDICATED
DIA0  4BBD6F7C DEDICATED
MMAN  4BBD7AA0 DEDICATED
DBW0  4BBD85C4 DEDICATED
LGWR  4BBD90E8 DEDICATED
CKPT  4BBD9C0C DEDICATED
SMON  4BBDA730 DEDICATED
RECO  4BBDB254 DEDICATED
MMON  4BBDBD78 DEDICATED
MMNL  4BBDC89C DEDICATED
      4BBE6494 DEDICATED
RVWR  4BBE6FB8 DEDICATED
ARC0  4BBE7ADC DEDICATED
ARC1  4BBE8600 DEDICATED
ARC2  4BBE9124 DEDICATED
ARC3  4BBE9C48 DEDICATED
VKRM  4BBEA76C DEDICATED
QMNC  4BBEB290 DEDICATED
Q000  4BBEBDB4 DEDICATED
SMCO  4BBEC8D8 DEDICATED
CJQ0  4BBED3FC DEDICATED
W000  4BBEDF20 DEDICATED
Q001  4BBEEA44 DEDICATED

28 rows selected.

--5.当前活动事务的地址(taddr)
--taddr(transation address):当前有活动事务的地址,关联v$transaction表的addr,通过这个字段关联查出当前session正在使用的回滚段的情况,以及当前事务的大小等信息
SCOTT@PROD1> select t.name, t.addr from v$transaction t, v$session s where t.addr=s.taddr;

--6.会话状态(status)以及这个状态持续了多少秒(last_call_et)。
SCOTT@PROD1> select sid, serial#, status, last_call_et from v$session;

       SID    SERIAL# STATUS   LAST_CALL_ET
---------- ---------- -------- ------------
	 1	   11 ACTIVE		  0
	 2	    1 ACTIVE	       5900
	 3	    1 ACTIVE	       5900
	 4	    1 ACTIVE	       5900
	 5	    1 ACTIVE	       5897
	 6	    1 ACTIVE	       5897
	 7	    1 ACTIVE	       5897
	 8	    1 ACTIVE	       5897
	 9	    1 ACTIVE	       5897
	10	    1 ACTIVE	       5897
	11	    1 ACTIVE	       5897
	12	    1 ACTIVE	       5897
	13	    1 ACTIVE	       5897
	14	    1 ACTIVE	       5897
	15	    1 ACTIVE	       5897
	16	    1 ACTIVE	       5897
	18	    5 ACTIVE	       5891
	20	    3 ACTIVE	       5883
	21	    1 ACTIVE	       5882
	22	    1 ACTIVE	       5882
	23	    1 ACTIVE	       5882
	29	    1 ACTIVE	       5873
	30	    1 ACTIVE	       5868
	32	    3 ACTIVE	       5858
	36	   35 ACTIVE	       5552
	40	    3 ACTIVE	       5858
	41	    7 ACTIVE	       5857
	43	   61 ACTIVE		741
	47	  111 INACTIVE		251

29 rows selected.

--7.正在执行的SQL语句的类型(command)、与SQL语句相关的游标的标识(sql_address、sql_hash_value、sql_id和sql_child_number)
执行的开始时间(sql_exec_start)以及SQL语句的执行ID(sql_exec_id)。
执行ID是一个整数值,与sql_exec_start一起标识出某个特定执行。由于同样的游标每秒会被执行多次,所以会很重要。
SYS@PROD1> select command, sql_address, sql_hash_value, sql_id, sql_child_number, sql_exec_start, sql_exec_id from v$session;

   COMMAND SQL_ADDR SQL_HASH_VALUE SQL_ID	 SQL_CHILD_NUMBER SQL_EXEC_ SQL_EXEC_ID
---------- -------- -------------- ------------- ---------------- --------- -----------
	 3 465D7604	 754717924 9dtw6q8qgs574		0 02-MAR-17    16777216
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0
	 0 00			 0
	 0 00			 0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0				0
	 0 00			 0
	 0 00			 0				0
	 0 00			 0
	 0 00			 0
	 0 00			 0				0
	 0 00			 0
	 0 00			 0				0

28 rows selected.

--8.执行过的前一个游标的标识(prev_sql_addr、prev_hash_value、prev_sql_id、prev_child_number)、前一个执行的开始时间和执行ID(prev_exec_start、prev_exec_id)
SYS@PROD1> select prev_sql_addr, prev_hash_value, prev_sql_id, prev_child_number, prev_exec_start, prev_exec_id from v$session;

PREV_SQL PREV_HASH_VALUE PREV_SQL_ID   PREV_CHILD_NUMBER PREV_EXEC PREV_EXEC_ID
-------- --------------- ------------- ----------------- --------- ------------
44E39AC8	45038246 6sz4ct01ayfp6		       0 02-MAR-17     16777216
00		       0			       0
00		       0			       0
00		       0			       0
00		       0			       0
00		       0			       0
4B4BEC28      1129083356 8wxxddd1nswfw		       0 02-MAR-17     16777216
00		       0			       0
00		       0			       0
00		       0			       0
00		       0			       0
00		       0			       0
465719DC      4052085454 chsyr0gssbuqf		       0 02-MAR-17     16777216
4666BDE0      2886642122 1ptv0pqq0xafa		       0 02-MAR-17     16777216
4B59FDB4      3489409389 aykvshm7zsabd		       0 02-MAR-17     16777232
4B51199C      1570213724 bsa0wjtftg3uw		       0 02-MAR-17     16777239
00		       0			       0
00		       0			       0
00		       0			       0
00		       0			       0
00		       0			       0
4B48B1CC      2230961768 79w2cqu2gmjm8		       0 02-MAR-17     16777218
00		       0			       0
4677C88C       139075864 cv959u044n88s		       0 02-MAR-17     16777216
4B483EC8       352822532 3rw49yhahg984		       0 02-MAR-17     16777218
44E3A188      2754365971 1att0guk2skhm		       0 02-MAR-17     16777216
465D40B8      3679126745 5ms6rbzdnq16t		       0 02-MAR-17     16777311
00		       0			       0

28 rows selected.

--9.如果执行的是PL/SQL调用,那么该信息包括,被调用的顶层程序与子程序的标识(plsql_entry_object_id和plsql_entry_subprogram_id),
以及当前执行的顶层程序和自程序(plsql_object_id和plsql_subprogram_id)。
如果当前会话正在执行某个SQL语句,则会将plsql_object_id和plsql_subprogram_id设置为NULL。

--10.会话属性(client_identifier、module、action、client_info),如果会话设置了这些属性才显示。

SYS@PROD1> select client_identifier, module, action, client_info from v$session where module is not null;

CLIENT_IDENTIFI MODULE			     ACTION		  CLIENT_INFO
--------------- ---------------------------- -------------------- ---------------
		sqlplus@ocm1 (TNS V1-V3)
		Streams 		     QMON Coordinator
		Streams 		     QMON Slave
		Streams 		     QMON Slave
		KTSJ			     KTSJ Slave
		KTSJ			     KTSJ Slave
		KTSJ			     KTSJ Slave
		KTSJ			     KTSJ Slave
		KTSJ			     KTSJ Coordinator

9 rows selected.

--11.如果当前会话正在等待,则包含以下信息:
会话正在等待的等待时间的名称(event)、其等待级别(wait_class和wait_class#),
关于等待事件的详细信息(p1text、p1、p1raw、p2text、p2、p2raw、p3text、p3、p3raw、),
以及会话已经等待该等待事件的时间(seconds_in_wait,自11.1起为wait_time_micro),
如果state不是WAITING,那么表示会话在使用CPU,这种情况下,与等待事件相关的列会包含关于上一次的等待的信息。

SYS@PROD1> select event, wait_class, wait_class# from v$session;

EVENT							   WAIT_CLASS		     WAIT_CLASS#
---------------------------------------------------------- ------------------------- -----------
SQL*Net message to client				   Network			       7
pmon timer						   Idle 			       6
rdbms ipc message					   Idle 			       6
VKTM Logical Idle Wait					   Idle 			       6
rdbms ipc message					   Idle 			       6
DIAG idle wait						   Idle 			       6
rdbms ipc message					   Idle 			       6
DIAG idle wait						   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
smon timer						   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
rdbms ipc message					   Idle 			       6
Streams AQ: qmn coordinator idle wait			   Idle 			       6
VKRM Idle						   Idle 			       6
Streams AQ: qmn slave idle wait 			   Idle 			       6
Streams AQ: waiting for time management or cleanup tasks   Idle 			       6
Space Manager: slave idle wait				   Idle 			       6
rdbms ipc message					   Idle 			       6
Space Manager: slave idle wait				   Idle 			       6
Space Manager: slave idle wait				   Idle 			       6
Space Manager: slave idle wait				   Idle 			       6
rdbms ipc message					   Idle 			       6

31 rows selected.

--12.会话是否被另一个会话阻止(如果是,则会将blocking_session_status设置为VALID),
如果会话正在等待,那么是哪个会话正在组织它(blocking_instance和blocking_session)

--13.如果会话当前被组织并且在等待某个特定行,那么该信息是会话当前正在等待的行的标识
(row_wait_obj#,row_wait_file#,row_wait_block#,row_wait_row#)。
如果会话未在等待某个被锁定的行,那么row_wait_obj#列等于值-1。


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值