oracle中的connect,session和processes的区别

需要先了解oracle一个概念:shared server模式和dedicated server模式
在创建数据库时,可以选择创建哪种模式的数据库。

简单描述2种模式的区别:
专用服务器模式 (dedicated server): 每次访问oracle服务时,创建一个新的进程。
共享服务器模式(shared server): 类似于数据库连接池的概念,初始化的时候就会创建一批服务器连接.

1. 如果是dedicated server,则客户端只能创建dedicated connection进行连接
2. 如果是shared server,则客户端能创建dedicated server connection和shared server connection,只要在service name中指定server=dedicated or server=shared.(可通过修改tnsnames.ora文件测试)

关于2种模式的详解:
推荐几篇文章,如下:
http://blog.csdn.net/kellyseeme/article/details/8959980
http://blog.itpub.net/7724693/viewspace-1026681/


connect(连接):使用plsql连接到oracle后,就是建立了一个连接(一次login)
session(会话):决定同时登陆到数据库的并发用户数(数据库层面)
processes:也决定同时登陆到数据库的并发用户数(操作系统层面)

session的设置和processes的设置共同决定了数据库允许的最大并发用户数。

connect与session的关系: 一个connect对应0或多个会话。
测试方式:
使用plsql连接oracle数据库后,每新增一个查询窗口执行查询后,使用语句:
select * from v$session where username is not null
就可以查看到多了一个会话session
固:使用plsql存在大量未关闭的执行窗口,就会占用大量的session数。所以说,仅需一个连接就可以达到所谓的最大并发用户数。


session与processes的关系如下:

1.当dedicated server模式下:
关系为一一对应。一个session对应一个processes。

2.当shared server模式下:
一个processes可以对应多个session.


常用查询sql记录:


允许最大进程数processes:
select value from v$parameter where name = 'processes' ;

当前已用进程数processes:
select count(*) from v$process  ;


最大允许会话数session:
show parameter sessions

当前已用会话数session:
select count(1) from v$session;


查看当前数据库使用的模式:
select count(*) from v$shared_server;(结果不为0,表示共享模式)

使用共享模式连接示例:

ORCL_146 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.146)(PORT = 1521))
    )
    (CONNECT_DATA =
    (server = shared )
      (sid = orcl)
    )
  )

使用专用服务器模式连接示例:
ORCL_146 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.146)(PORT = 1521))
    )
    (CONNECT_DATA =
    (server = dedicated )
      (sid = orcl)
    )
  )
















猜你喜欢

转载自ruyi574812039.iteye.com/blog/2270099