oracle 授权 v$session,Oracle中V$session及session相关信息

V$session参数

SADDR: session address

SID: session identifier,常用于连接其它列。

SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。

AUDSID: audit session id。可以通过audsid查询当前session的sid。select sid from v$session where audsid=userenv('sessionid');

PADDR: process address,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个进程的id。

USER#: session's user id。等于dba_users中的user_id。内部进程的user#为0。关联all_usersch的user_id查询username

USERNAME: session's username。等于dba_users中的username。Oracle内部进程的username为空。关联all_usersch的user_id查询username

COMMAND: session正在执行的SQL Id。1代表create table,3代表select。

TADDR: 当前的transaction address。可以用来关联v$transaction的addr字段。

LOCKWAIT: 可以通过这个字段查询出当前正在等待的锁的相关信息。sid & lockwait与v$lock中的sid & kaddr相对应。

STATUS: 用来判断session状态。Active:正执行SQL语句。Inactive:等待操作。Killed:被标注为删除。

SERVER: server type (dedicated or shared)

SCHEMA#: schema user id。Oracle内部进程的schema#为0。

SCHEMANAME: schema username。Oracle内部进程的schemaname为sys。

OR: 客户端操作系统用户名。

PROCESS: 客户端process id。

MACHINE: 客户端machine name。

TERMINAL: 客户端执行的terminal name。

PROGRAM: 客户端应用程序。比如ORACLE.EXE (PMON)或者sqlplus.exe

TYPE: session type (background or user)

SQL_ADDRESS,

SQL_HASH_VALUE, SQL_ID, SQL_CHILD_NUMBER: session正在执行的sql

statement,和v$sql中的address, hash_value, sql_id, child_number相对应。

PREV_SQL_ADDR, PREV_HASH_VALUE, PREV_SQL_ID, PREV_CHILD_NUMBER: 上一次执行的sql statement。

MODULE, MODULE_HASH, ACTION, ACTION_HASH, CLIENT_INFO: 应用通过DBMS_APPLICATION_INFO设置的一些信息。

FIXED_TABLE_SEQUENCE:

当session完成一个user call后就会增加的一个数值,也就是说,如果session

inactive,它就不会增加。因此可以根据此字段的值变化来监控某个时间点以来的session的性能情况。例如,一个小时以前,某个session

的FIXED_TABLE_SEQUENCE是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_BLOCK#: Identifier for the block containing the row specified in ROW_WAIT_ROW#

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

LOGON_TIME: session logon time

ADDR: process address。可以和v$session的paddr字段关联。

PID: Oracle进程identifier。

SPID: 操作系统进程identifier。

USERNAME: 操作系统进程的用户名。并非Oracle用户名。

SERIAL#:: process serial number。

TERMINAL: 操作系统terminal identifier(e.g., computer name)。

PROGRAM: 进程正在执行的程序(e.g., ORACLE.EXE (ARC0)),和v$session中的program类似。

BACKGROUND: 1代表oracle background process,null代表normal process。

查看当前用户的sid和serial#:

select sid, serial#, status from v$session where audsid=userenv('sessionid');

查看当前用户的spid:

select spid from v$process p, v$session s where s.audsid=userenv('sessionid') and s.paddr=p.addr;

select spid from v$process p join v$session s on p.addr=s.paddr and s.audsid=userenv('sessionid');

查看当前用户的trace file路径:

select p.value || '/' || t.instance || '_ora_' || ltrim(to_char(p.spid,'fm99999')) || '.trc'

from v$process p, v$session s, v$parameter p, v$thread t

where p.addr = s.paddr and s.audsid = userenv('sessionid') and p.name = 'user_dump_dest';

已知spid,查看当前正在执行或最近一次执行的语句:

select /*+ ordered */ sql_text from v$sqltext sql

where (sql.hash_value, sql.address) in (

select decode(sql_hash_value, 0, prev_hash_value, sql_hash_value), decode(sql_hash_value, 0, prev_sql_addr, sql_address)

from v$session s where s.paddr = (select addr from v$process p where p.spid = to_number('&pid')))

order by piece asc;

查看锁和等待:

col user_name format a10

col owner format a10

col object_name format a15

col sid format 999999

col serial# format 999999

col spid format a6

查看session相关信息以及相关操作

1、查询用户相关的session的ID和session的序列号,这里没有显示系统用户的,因为系统用户在V$SESSION的表里面的

USERNAME为空,只可以通过关联ALL_USERS表,通过user#和user_id相关联。

SELECTUSERNAME ||'('|| SID ||','|| SERIAL# ||')'USERNAME,

MODULE,

ACTION,

CLIENT_INFO

FROMV$SESSION

WHEREMODULE ||ACTION|| CLIENT_INFOISNOTNULL;

--关联用户表,查询出用户的名字。

SELECTAU.USERNAME, V.ACTION, V.SID

FROMV$SESSION V

LEFTJOINALL_USERS AUONAU.USER_ID = V.USER#

ORDERBYAU.USERNAME;

2、查询session视图中的SQL_ID对应的SQL语句:

SELECTVS.SQL_TEXT

FROMV$SESSION V

LEFTJOINV$SQL VSONV.SQL_ID = VS.SQL_ID

uid-27155104-id-4881645.html

3、查询当前的锁模式:

当前的用户为空,代表为系统用户,要显示系统用户的名字,可以通过v$session中的user#与all_users的user_id相关联,来显示用户名字:

SELECTSESSION_ID"SID",

LOCK_TYPE"Lock Type",

MODE_HELD"Mode Held",

BLOCKING_OTHERS"Blocking?",

V.USERNAME,--为空,代表为系统用户

V.MACHINE,

V.ACTION

FROMDBA_LOCKS DL

LEFTJOINV$SESSION VONV.SID = DL.SESSION_ID

uid-27155104-id-4881645.html

4、查询出相应的统计资料:包括登录次数,回滚次数,提交次数等等:

SELECTNAME, VALUEFROMV$SYSSTAT

uid-27155104-id-4881645.html

5、查询出死锁的次数:

selectname, valuefromv$sysstatwherename='enqueue deadlocks';

6、查看被锁定的对象

SELECT*FROMV$LOCKED_OBJECT;

可以查询出OBJECT_ID和SESSION_ID分别和V$SESSION和USER_OBJECT关联查询更具体的信息。

SELECT*FROMv$session tWHEREt.SID ='139';--根据会话ID查询

SELECT*FROMUSER_OBJECTS UWHEREU.OBJECT_ID ='61151';--根据OBJECT_ID查询

7、KILL_SESSION

注意:BLOCK表示的是阻塞的, TYPE != 'BACKGROUND'表示防止杀死系统进程

SELECT'alter system kill session '''|| SID ||','|| SERIAL# ||''';'"Deadlock"

FROMV$SESSION

WHERESIDIN(SELECTSIDFROMV$LOCKWHEREBLOCK = 1)

ANDTYPE !='BACKGROUND';

8、查询死锁的SQL语句,&sid为上面查出的ID,查询出的死锁的会话ID

SELECTs.sid, q.sql_text

FROMv$sqltext q, v$session s

WHEREq.address = s.sql_address

ANDs.sid = &sid

9、查看锁住对象,所有者,类型,会话ID

SELECTo.owner, o.object_name, o.object_type, s.sid, s.serial#

FROMv$locked_object l, dba_objects o, v$session s

WHEREl.object_id = o.object_id

ANDl.session_id = s.sid

ORDERBYo.object_id, xidusnDESC

10、查询非系统进程,和进行操作的语句和他的类型和他的事件

SELECTv.sql_text, v.sql_fulltext, t.action, t.type, t.event, t.*

FROMv$session t

LEFTJOINv$sql vONv.sql_id = t.sql_id

WHEREt.type !='BACKGROUND'

11、杀掉会话可以采用两种方式:

altersystem kill session'sid,serial#'immediate;--使用immediate关键字

altersystem kill session'sid,serial#';

注意:被标记为killed 的进程由PMON 进程kill,但是这个也是有条件的:

PMON will notdelete the session object itself until the client connected to that sessionnotices that it has been killed.

12、使用系统命令杀掉进程:操作系统级别的杀掉会话

windows命令:

To kill the session on the Windows operating system, first identify the session, then substitute the relevantSIDandSPIDvalues into the following command issued from the command line.

C:> orakill _SID(数据库实例名) spid(v$process表中获取)

测试

SELECTSpid, Or, s.Program

FROMV$session s, V$process p

WHEREs.Paddr = p.Addr

ANDs.Sid = 137;

uid-27155104-id-4881645.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值