oracle process state,v$process深入了解

前言:

process:这个参数限制了能够连接到SGA的操作系统进程数(或者是Windows 系统中的线程数),这个总数必须足够大,从而能够适用于后台进程与所有的专用服务器进程,此外,共享服务器进程与调度进程的数目也被计算在内.此外,共享服务器进程与调度进程的数目也被计算在内.因此,在专用服务器环境中,这是一种限制并发连接数的方法。

介绍:

oracle提供了相应的视图v$process用来监视整个数据库的进程情况。

v$process进程官方文档的介绍:This view has one row for each Oracle process connected to the instance. The columns PGA_USED_MEM, PGA_ALLOC_MEM, PGA_FREEABLE_MEM and PGA_MAX_MEM can be used to monitor the PGA memory usage of these processes. 用于监视每个进程的内存使用情况;

详细的V$PROCESS视图如下:

Column

Datatype

Description

解释

ADDR

RAW(4 | 8)

Address of the process state object

可以和v$session的paddr字段关联

PID

NUMBER

Oracle process identifier

SPID

VARCHAR2(24)

Operating system process identifier

操作系统进程identifier

PNAME

VARCHAR2(5)

Name of this process

进程的名称(从中可以看到前台和后台进程)

USERNAME

VARCHAR2(15)

Operating system process username

运行此进程的操作系统的用户名称;

Note: Any two-task user coming across the network has "-T" appended to the username.

SERIAL#

NUMBER

Process serial number

TERMINAL

VARCHAR2(30)

Operating system terminal identifier

终端名称类似于v$session;

PROGRAM

VARCHAR2(48)

Program in progress

程序的名称

TRACEID

VARCHAR2(255)

Trace file identifier

跟踪文件的ID

TRACEFILE

VARCHAR2(513)

Trace file name of the process

跟踪文件的名称及路径

BACKGROUND

VARCHAR2(1)

1 for a background process; NULL for a normal process

值为1代表是后台进程

LATCHWAIT

VARCHAR2(8)

Address of the latch the process is waiting for; NULL if none

等待LATCH的情况

LATCHSPIN

VARCHAR2(8)

This column is obsolete

PGA_USED_MEM

NUMBER

PGA memory currently used by the process

PGA的消耗情况

PGA_ALLOC_MEM

NUMBER

PGA memory currently allocated by the process (including free PGA memory not yet released to the operating system by the server process)

当前PGA允许消耗的内存

PGA_FREEABLE_MEM

NUMBER

Allocated PGA memory which can be freed

PGA_MAX_MEM

NUMBER

Maximum PGA memory ever allocated by the process

进程中最大的PGA内存分配

延伸:

1、v$process进程中的SPID提供了每个进程对应的操作系统的PID,因此如果监控某个操作系统的PID有异常,可以通过这个视图去查找相应的SQL语句。

脚本如下:

SELECT   /*+ ORDERED */ sql_text

FROM v$sqltext a

WHERE (a.hash_value, a.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 b

WHERE b.paddr = (SELECT addr

FROM v$process c

WHERE c.spid = TO_NUMBER ('&pid', 'xxxx')))

ORDER BY piece ASC/

2、在数据库查找有问题的session,然后在操作系统kill掉相应的进程,根据SESSION的SID查找相应的操作系统PID

SELECT A.SID,B.SPID,A.MACHINE,C.SQL_TEXT FROM v$SESSION A ,v$process B,V$SQL  C

where a.paddr=b.addr

AND A.PREV_SQL_ID=C.SQL_ID

AND A.SID='&sid'

3、v$process和v$session的关系

oracle的连接数(sessions)与其参数文件中的进程数(process)相关,它们的关系如下:sessions=(1.1*process+5),若果资源允许,而当前process 数过小,那么可以适当增大processs 数( session 数依赖于process数,一般不去直接修改session数)。

Shared Server中的Process 一个对应着Oracle 中的一个或者一个以上的Session。Dedicated Server中,一个session对应一个process,但是一个process未必对应一个session。

4、修改v$process和v$session参数

以上的v$process和v$session参数的设置只是经验值,但是在实际的运行过程由于业务或者架构的改变可能实际的系统的session数量和process数量超过了v$process和v$session参数的值,直接导致后面连接的用户登录不了;

查看当前session配置:show parameter sessions;

查看当前process配置:show parameter processes;

修改参数:alter system set processes=1000 scope=spfile;该参数重启后生效;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值