什么是session:
通俗来讲,session 是通信双方从开始通信到通信结束期间的一个上下文(context)。这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应用程序、哪个用户在登录等信息[在pl/sql developer中,通过Tools-->Sessions可以查看当前数据库的session]。session 是和connection同时建立的,两者是对同一件事情不同层次的描述。简单讲,connection是物理上的客户机同服务器段的通信链路,session是逻辑上的用户同服务器的通信交互。session被应用于oracle层次而非操作系统层次.在不考虑通过专用服务器或共享服务器进行登录的情况下,这个参数限制了对指定实例的并发登陆数. oracle中一个用户登录oracle服务器的前提,就是该用户具有oracle的 “create session”权限。
oracle允许同一个用户在同一个客户机上建立多个同服务器的连接,这一点从oracle的视图V$session中可以看到[select * from v$session;]。每个session都代表了用户与服务器的一个交互。就像两个国家之间可以同时开展很多谈判,经济的,环境的等等。关闭了有关经济的谈判,不会影响到环境谈判的进行。后台进程PMON会每隔一段时间,就会测试用户连接状况,如果连接已断开,PMON会清理现场,释放相关的资源。
什么是process
process:这个参数限制了能够连接到SGA的操作系统进程数(或者是Windows 系统中的线程数),这个总数必
查看process与session之间的联系
SELECT
S.SID SESSION_ID,
S.SERIAL# SESSION#,
S.PROCESS 客户端进程,
S.USERNAME ORACLE用户名,
S.STATUS 状态,
S.OSUSER 操作系统用户名,
S.MACHINE 客户端主机,
S.PROGRAM 程序,
P.PID ORACLE进程ID,
P.SPID 服务器OS进程,
P.SERIAL#
FROM V$SESSION S, V$PROCESS P
WHERE S.PADDR = P.ADDR
ORDER BY 1, 2;
session与process存在的对应关系:
1、Shared Server中的Process 一个对应着Oracle 中的一个或者一个以上的Session。
Dedicated Server中,一个session对应一个process,但是一个process未必对应一个session。
2、多个session对应一个process
比如使用pl/sql developer 登录oracle。pl/sql developer 可以设置是否每个窗口共用同一个session. 如果想在调试窗口调试存储过程或函数,则必须设置为共享session。如果设置为非共享, 则每次打开一个操作窗口,pl/sql developer 会利用最初输入的帐户和口令建立新的connection 和 session.
3、有session没有process
比如:操作系统上process已经kill -9了,但是看v$session视图里面还存在对应的session,可能过一会或者很久才会消失,甚至有时需要手动调用PMON进程。
如何修改session与process
v$session 每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR
,LGWR,arcchiver等等。
V$process 本视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进
程ID与数据库session之间建立联系。
show parameter sessions 查看当前session配置
show parameter processes 查看当前process配置
alter system set processes=1000 scope=spfile 更改配置,更改完后需要重启数据库。
修改oracle配置文件中process进行修改
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15489979/viewspace-720618/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15489979/viewspace-720618/