服务器进程概念:
Oracle的服务器进程有Oracle实例自动创建,用来处理连接到实例的客户端进程发出的请求,用户必须通过连接到Oracle的服务器进程来获取数据库中的信息。
对于专用服务器模式(建库时默认),客户端进程和Oracle服务器进程是一一对应的,新增一个服务器进程,大约需要的内存是: AIX 5-10M ;LINUX 3-5M内存--实测是1M多。
而在共享服务器模式下,一个Oracle服务器进程可能同时服务多个客户端进程。
服务器进程主要用来执行下列的任务:
解析、执行客户端提交的SQL语句。
从磁盘数据文件中读取必须的数据块到SGA得数据缓存区。
以适当形式返回SQL语句执行结果。
user process用户进程概念
客户机使用SQLPLUS/PLSQL等工具通过tnsnames.ora中的服务名,连接到数据库服务器的服务器进程。要经过监听--服务器进程--PGA。
PROCESSES与SESSIONS数之间关系: --
11g 官方默认值:sessions=1.5*processes + 22 文档:http://docs.oracle.com/cd/E11882_01/server.112/e40402/initparams234.htm#sthref696
10g 官方默认值:sessions=1.1*processes + 5 文档:http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams191.htm#REFRN10197
连接和会话的关系:
连接:
用户进程和 Oracle 实例间的通信通道communication pathway。
这个通信通道是通过进程间的通信机制interprocess communication mechanisms(在同一个计算机上运行用户进程和 Oracle 进程)或网络软件network software(当数据库应用程序与 Oracle 服务器运行在不同的计算机上时,就需要通过网络来通信)建立的。
会话 :
--在专有服务器模式下,一个连接对应一个会话。
主要指用户和数据库间的联系。
例如,当用户启动 SQL*Plus时必须提供有效的用户名和密码,之后 Oracle 为此用户建立一个会话。从用户开始连接到用户断开连接(或退出数据库应用程序)期间,会话一直持续。见下图1
例如:使用PLSQL连接数据库,就有一个连接,相应也有一个会话。在PLSQL中打开一个SQL窗口,就又是一个连接,相应也有一个会话。
在PLSQL里打开的SQL窗口查询:
select sid from v$mystat where rownum=1;
40
select b.spid,a.sid,a.username,a.program,a.machine from v$session a,v$process b where a.paddr=b.addr and a.type='USER';
30152 51 BYS plsqldev.exe WORKGROUP\BYS ---这一条是打开PLSQL软件连接到数据库的会话信息
30187 40 BYS plsqldev.exe WORKGROUP\BYS --这一条是当前PLSQL中的SQL窗口对应的会话信息
在运行数据库的LINUX系统上查询: ---进程的PID与PLSQL中查询的可以对应。
[oracle@bys3 ~]$ ps -ef |grep LOCAL |grep -v grep
oracle 30152 1 1 21:01 ? 00:00:02 oraclebys3 (LOCAL=NO) --对应PLSQL程序的会话
oracle 30187 1 0 21:02 ? 00:00:00 oraclebys3 (LOCAL=NO) --对应PLSQL中的SQL窗口
#####################
使用SQLPLUS测试: --实验环境,现在没有连接到数据库。
[oracle@bys3 ~]$ ps -ef |grep LOCAL |grep -v grep ---查询无返回,当前系统中没有ORACLE的连接信息
然后另开一窗口2,SSH到数据库所在服务器,启动SQLPLUS登陆数据库。再查询:
[oracle@bys3 ~]$ ps -ef |grep LOCAL |grep -v grep
oracle 30305 30302 3 21:10 ? 00:00:00 oraclebys3 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) --这一条就是窗口2中新打开SQLPLUS连接的信息 LACAL=YES,表明不是通过监听连接的--本地IPC