`

查看oracle当前session

 
阅读更多
引用


查看oracle当前session 

怎样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了。

#查看当前不为空的连接
select * from v$session where username is not null

#查看不同用户的连接数

select username,count(username) from v$session where username is not null group by username

#连接数

select count(*) from v$session

#并发连接数

Select count(*) from v$session where status='ACTIVE' 

#最大连接

show parameter processes

#修改连接

alter system set processes = value scope = spfile

#查询锁表
select a.owner,
       a.object_name,
       a.subobject_name,
       a.object_type,
       l.session_id,
       l.oracle_username,
       l.os_user_name,
       se.SID,
       se.SERIAL#
  from  all_objects a, v$locked_object l,V$session se
where a.object_id = l.object_id
       and se.OSUSER = l.os_user_name
       and l.oracle_username = 'mcczjzx';

#杀掉某session     
Alter system kill session 'SID,SERIAL#'

#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。Oracle内部进程的user#为0。

USERNAME: session's username。等于dba_users中的username。Oracle内部进程的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。

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

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

v$process字段详解

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
select /*+ rule */ lpad(' ', decode(l.xidusn, 0, 3, 0)) || l.oracle_username user_name,
o.owner, o.object_name, o.object_type, s.sid, s.serial#, p.spid
from v$locked_object l, dba_objects o, v$session s, v$process p
where l.object_id = o.object_id and l.session_id = s.sid and s.paddr = p.addr
order by o.object_id, xidusn desc;
分享到:
评论

相关推荐

    oracle 查看当前会话执行的sql语句

    查询ORACLE 系统中当前会话正在执行的有关SQL语句。

    oracle Session与lock 解除

    以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句: select object_id,session_id,locked_mode from v$locked_object; select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v...

    Oracle疑难:session无法完全删除问题

    Oracle疑难:session无法完全删除问题

    对于oracle对session进行跟踪的分析

    - **当前会话跟踪**:使用`ALTER SESSION SET SQL_TRACE=true/false`命令,可以开启或关闭当前连接的session的跟踪功能。 - **其他用户会话跟踪**:通过`DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION()`过程,指定要跟踪...

    ORACLE_查看锁和解锁

    该语句可以查看当前阻塞的Session,包括Session ID、用户名、程序、状态、SQL ID、阻塞的实例和阻塞的Session等信息。 Oracle提供了多种方法来检查锁和解锁,开发者可以根据实际情况选择合适的方法来检查锁和解锁。

    查看oracle进程,杀进程pb源程序

    1. **V$SESSION视图**:这是Oracle提供的一张动态性能视图,用于显示当前会话的详细信息,包括用户进程的SID(会话ID)、 SERIAL#(序列号)、登录用户名、主机名、当前等待事件等。 2. **V$LOCKED_OBJECT视图**:...

    Oracle查询用户锁表

    Oracle 查询用户锁表是指在 Oracle 数据库中查询当前用户锁定的表,以便诊断和解决锁表问题。本文档将详细介绍如何查询用户锁表,并提供相关的代码。 一、查询用户锁表的必要性 在 Oracle 数据库中,锁表是指用户...

    oracle RAC查看blocking的脚本

    - **等待事件**:使用`v$session_wait`视图可以查看当前会话的等待事件,这些事件通常揭示了阻塞的原因。 - **锁定分析**:`v$lock`视图可以显示锁定详细信息,帮助识别哪些会话持有锁,哪些会话正在等待锁。 - **...

    Oracle 性能调优的基本方案

    可以使用 v$system_event 视图执行查询,查看数据库中某些常见的等待事件,然后使用 v$session_event 和 v$session 视图进行查询,研究具有对上面显示的内容有贡献的等待事件的会话。 把等待事件记入跟踪文件 把...

    oracle参数open_cursors与session_cached_cursors详解.pdf

    我们可以通过 SQL 语句查看当前的设定值,并根据实际情况进行调整。 open_cursors 和 session_cached_cursors 参数的设置需要遵循以下原则: 1. 设定合理的 open_cursors 值,以避免 ORA-01000 错误的出现。 2. ...

    获取top前10个Oracle的进程(支持多实例)

    A、获取top前10个Oracle的进程,并打印出(根据实际进程情况列出 R/S 状态) B、对这些进行进行PS检查资源占有情况,并确定是那个数据库实例的进程 C、根据当前目录下的connect.json配置数据库连接数据库访问,打印...

    解决Oracle_CPU高度消耗(100%)的数据库问题

    使用 top 命令可以查看系统当前的 CPU 使用情况,进程列表和内存使用情况。通过 top 命令,可以发现两个高 CPU 耗用的 Oracle 进程,它们分别消耗了 47.77% 和 40.98% 的 CPU 资源。 三、找到存在问题的进程信息 ...

    ORACLE查看并修改最大连接数

    3. 可以监控`v$session`视图来观察当前的会话数和活动状态,以便判断是否需要调整最大连接数。 4. 使用`pga_aggregate_target`和`sga_max_size`等其他参数优化内存分配,以提升数据库性能。 总的来说,Oracle数据库...

    oracle 10g 自动清除 session 删除库 并 自动 impdp 导入备份

    首先,自动清除Oracle当前链接,这通常涉及到`DBMS_SESSION`包中的`KILL_SESSION`过程。此过程用于终止指定会话,当有长时间未活动的会话或者需要紧急清理资源时非常有用。在Bash脚本中,我们可能通过SQL*Plus或oci8...

    常用oracle查询语句

    这条语句可以查看 Oracle 数据库中的回滚段名称和大小,结果显示每个回滚段的名称、状态、初始大小、下一个大小、最大扩展次数和当前大小。 4. 查看控制文件 select name from v$controlfile; 这条语句可以查看 ...

    Oracle 字符集详解

    在Oracle中,可以通过以下SQL查询来查看当前数据库的字符集设置: ```sql SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'; ``` 这将返回当前数据库的全局字符集。此外,也可以查询...

    oracle基础教程

    4.12 如何更新当前数据库日志备份方式为archive 56 4.13 Unix环境下如何实现自动备份 56 4.13.1 设置运行环境 56 4.13.2 倒出数据 56 4.13.3 异地备份 57 4.13.4 启动备份进程 58 4.14 怎样分析ORACLE故障 59 小结 ...

    Oracle 12c ASH 学习手册

    自 Oracle 10g 开始,Oracle 会将处于等待状态的会话的相关信息复制一份到 V$SESSION_WAIT 中,而 V$SESSION_WAIT_HISTORY 是其归档表,但这个表只会保留 V$SESSION_WAIT 最近 10 次的等待信息,这对一段时间内的...

    oracle日常巡检命令集合

    `DATABASE_STATUS`表示Oracle当前数据库的状态,必须为`ACTIVE`。 1.2. 检查Oracle在线日志状态 使用命令`select group#, status, type, member from v$logfile;`可以检查Oracle在线日志状态。输出结果应该有3条...

Global site tag (gtag.js) - Google Analytics