
查看一下数据库现有的进程数,是否已经达到参数processes的大小
-- select count(*) from v$process 取得数据库目前的进程数。
-- select value from v$parameter where name = 'processes'取得进程数的上限
(1)查看当前会话数、processes和sessions值,发现session数14和processes值150已经非常接近
SQL> select count(*) from v$sessionCOUNT(*)
----------
146
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 2
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
(2) Modify the two parameter(processes,sessions)
SQL> alter system set processes=300 scope=spfile
System altered.
SQL> alter system set sessions=335 scope=spfile
System altered.
(3) Let's shutdown and startup database in order to let the two parameter taken effect.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2030456 bytes
Variable Size 989856904 bytes
Database Buffers 603979776 bytes
Redo Buffers 14745600 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
$ sqlplus /nolog
(4) test the result.
SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 12月 9 09:53:13 2011
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> conn sys/oracle@orcl as sysdba
Connected.
SQL>
--the end.
session 和 process的区别:连接connects,会话sessions和进程pocesses的关系
每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话,如果数据库运行在专用服务器方式,
一个会话对应一个服务器进程(process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。
session 和 process的关系,tom在他的书里写的很清楚了
一个process可以有0个,1个或者多个session
一个session也可以存在这个或者那个process中
oracle中session跟process的研究
使用方法:
首先看看v$session跟v$processwww.hbbz08.com 中主要的字段属性:
v$session(sid,serial#,paddr,username,status,machine,terminal,sql_hash_value,sql_address,,,)
v$process(addr,spid,,,)
可看到v$session中的paddr跟v$process中的addr对应,也即会话session在数据库主机上对应进程的进程地址.
这里我们要先定位该session正在执行的sql语句,此时我们可以查询如下的语句: select sql_text
from v$sqltext_with_newlines
where (hash_value,address) in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)