session & process
http://blog.csdn.net/jlds123/archive/2011/04/29/6371563.aspx 写道
什么是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会清理现场,释放相关的资源。
在具体的应用场景中connction 和 session 有很多情况:
1. sqlplus 登录 oracle
这种场景比较容易理解,一个连接对应一个session。
2. 其他客户端工具登录oracle
比如:pl/sql developer 登录oracle。pl/sql developer 可以设置是否每个窗口共用同一个session. 如果想在调试窗口调试存储过程或函数,则必须设置为共享session。如果设置为非共享, www.linuxidc.com则每次打开一个操作窗口,pl/sql developer 会利用最初输入的帐户和口令建立新的connection 和 session.
3. IIS 用程序登录oracle
这种情况下,其实是IIS在登录oracle。connection 和 session 的建立情况和iis机制相关。
“对于Oracle来说,安全的Sessions数应该为Sessions = (IIS process number) * (min pool size)。”
IIS进程:在IIS6.0中,采用了新的进程隔离模式来响应用户的请求,在IIS管理器中,可以设置应用程序池的最大进程数。对于新的WEB应用请求,IIS进程管理器会启动多个W3wp.exe进行响应。
什么是process
process:这个参数限制了能够连接到SGA的操作系统进程数(或者是Windows 系统中的线程数),这个总数必须足够大,从而能够适用于后台进程与所有的专用服务器进程,此外,共享服务器进程与调度进程的数目也被计算在内.此外,共享服务器进程与调度进程的数目也被计算在内.因此,在专用服务器环境中,这是一种限制并发连接数的方法.
session与process的关系
oracle的连接数(sessions)与其参数文件中的进程数(process)相关,它们的关系如下:sessions=(1.1*process+5),若果资源允许,而当前process 数过小,那么可以适当增大processs 数( session 数依赖于process数,一般不去直接修改session数)。
Shared Server中的Process 一个对应着Oracle 中的一个或者一个以上的Session。Dedicated Server中,一个session对应一个process,但是一个process未必对应一个session。
如何修改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进行修改
这个里面说的非常详细。所以通过这篇文章,我理解的数据库连接数其实就是oracle中的session数量,而不是process数量,只是我们平时修改oracle配置时候一般都是去修改process,而session会根据process数量自动计算出来。
在修改processes时候,scope只能是spfile,我试了用memory和both都报错,后来google了一下发现应该是processes这个参数是不能直接在memory中修改。还有修改完processes后,如果有用pfile启动数据库的,就需要加上:create pfile from spfile,把spfile中修改的信息写到pfile文本文件中去。这样下次启动时候就能生效了。
Dedicated Server & Shared Server
在了解session与process关系时候,看到了Dedicated Server与Shared Server的不同会对process与session的关系会发生影响。有看了看自己本机数据库session中的server都是dedicted的,然后又问了华泰那边的数据session也都是dedicated的。于是又google了下这2中server的区别:
http://blog.csdn.net/inthirties/archive/2009/10/01/4624760.aspx 写道
Shared Server Architecture
Shared server architecture eliminates the need for a dedicated server process for each connection. A dispatcher directs multiple incoming network session requests to a pool of shared server processes. An idle shared server process from a shared pool of server processes picks up a request from a common queue, which means a small number of shared servers can perform the same amount of processing as many dedicated servers.
Also, because the amount of memory required for each user is relatively small, less memory and process management are required, and more users can be supported.
A number of different processes are needed in a shared server system:
¡ö A network listener process that connects the user processes to dispatchers or dedicated servers (the listener process is part of Oracle Net Services, not Oracle).
¡ö One or more dispatcher processes
¡ö One or more shared server processes
When an instance starts, the network listener process opens and establishes a communication pathway through which users connect to Oracle. Then, each dispatcher process gives the listener process an address at which the dispatcher listens for connection requests. At least one dispatcher process must be configured and started for each network protocol that the database clients will use.
A request from a user is a single program interface call that is part of the user’s SQL statement. When a user makes a call, its dispatcher places the request on the request queue, where it is picked up by the next available shared server process.
The request queue is in the SGA and is common to all dispatcher processes of an instance. The shared server processes check the common request queue for new requests, picking up new requests on a first-in-first-out basis. One shared server process picks up one request in the queue and makes all necessary calls to the database
to complete that request.
When the server completes the request, it places the response on the calling dispatcher’s response queue. Each dispatcher has its own response queue in the SGA. The dispatcher then returns the completed request to the appropriate user process.
NOTE£ºThe listener process is not part of an Oracle instance; rather, it is part of the networking processes that work with Oracle.
Oracle dynamically adjusts the number of shared server processes based on the length of the request queue. The number of shared server processes that can be created ranges between the values of the initialization parameters SHARED_SERVERS and MAX_ SHARED_SERVERS.
Certain administrative activities cannot be performed while connected to a dispatcher process, including shutting down or starting an instance and media recovery. An error message is issued if you attempt to perform these activities while connected to a dispatcher process.
=================================================================================
Dedicated Server Configuration
The user and server processes are separate, distinct processes. The separate server process created on behalf of each user process is called a dedicated server process (orshadow process), because this server process acts only on behalf of the associated user process.
This configuration maintains a one-to-one ratio between the number of user processes and server processes. Even when the user is not actively making a database request, the dedicated server process remains (though it is inactive and can be paged out on some operating systems).
分享到:
相关推荐
### Oracle 修改最大连接数 在Oracle数据库环境中,调整最大连接数是一项重要的系统管理任务,它直接影响到数据库能够同时处理的会话数量。本篇将详细探讨如何通过Oracle参数来修改最大连接数,包括理解相关参数的...
### 更改Oracle数据库的用户连接数 在Oracle数据库管理中,有时我们可能会遇到因为数据库连接过多而导致的新连接请求被拒绝的问题。这种情况不仅会影响用户的正常使用,还可能导致系统性能下降甚至数据库重启。因此...
由于数据库重启操作会影响业务系统的稳定运行,因此我们需要了解如何在不重启数据库的前提下,对Oracle数据库的连接数进行修改。 首先,我们需要了解Oracle数据库中的连接数指的是什么。数据库连接数是指数据库允许...
通过细致地调整Oracle数据库的`pga_aggregate_target`、`processes`、`sessions`参数,以及优化`LISTENER.ORA`文件和操作系统配置,可以有效解决Oracle连接数问题,提升数据库的并发处理能力。这些操作需要根据具体...
11. 故障排查总结:针对连接数故障,需要关注进程数、会话数、系统资源限制以及系统连接释放的细节。同时,也要注意监听器本身的配置和网络相关的细节。 在处理Oracle数据库的连接数和会话数问题时,系统管理员需要...
2. 并发控制:合理设置连接池的最大和最小连接数,平衡系统资源占用和响应速度。 3. 异步操作:考虑使用异步API或多线程技术,让数据库操作和应用逻辑并行执行,提高整体性能。 4. SQL优化:避免全表扫描,使用索引...
- `maxactive`: 最大活动连接数。 - `maxwait`: 获取连接的最大等待时间。 - `maxidle`: 最大空闲连接数。 - `minidle`: 最小空闲连接数。 配置文件示例格式如下: ```properties driver=...
- **MinPoolSize**:连接池的最小连接数。 - **ConnectionLifetime**:连接的最大生存时间。 - **ConnectionTimeout**:连接超时时间。 - **IncrPoolSize**:增加连接时每次增加的数量。 - **DecrPoolSize**:...
### ODBC及Lotusscript代码连接Oracle数据库总结 #### 一、Oracle客户端安装与配置 **1. 下载客户端** 为了能够顺利地使用ODBC及Lotusscript代码连接Oracle数据库,首先需要安装Oracle客户端。根据操作系统位数...
Oracle数据库是世界上最广泛使用的数据库系统之一,用于存储和管理企业级的数据。这篇文档"Oracle数据库所有操作总结.doc"主要涵盖了Oracle中的查询语句和其他基本操作,对于熟悉和使用Oracle数据库非常有帮助。以下...
本文详细介绍了如何在Oracle数据库中创建spfile以及如何修改最大连接数的过程。通过创建spfile,可以提高数据库的安全性和性能;而通过调整最大连接数,可以根据业务需求合理分配资源,避免不必要的性能瓶颈。这些...
其中,`name`是JNDI名称,`auth`指明认证方式,`type`是数据源类型,`maxActive`、`maxIdle`和`maxWait`分别设置最大活动连接数、最大空闲连接数和最大等待时间,`username`、`password`和`driverClassName`是...
总结,Oracle系统的性能优化是一个综合性的任务,涉及多个层面,包括内存分配、I/O优化、并发控制等。每个参数的调整都需谨慎,需要结合实际环境和监控数据进行,以确保数据库高效稳定运行。同时,随着Oracle版本的...
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与恢复等),以及Oracle的应用...
如果没有可用连接,且已有连接数小于最大连接数限制,则创建并返回新连接。 * * @param name 在属性文件中定义的连接池名字 * @return Connection 可用连接或null */ public Connection getConnection(String ...
### Oracle数据库学习总结知识点 #### 1. 数据表的基本操作 - **创建表**: 使用 `CREATE TABLE` 语句创建新的表。例如:`CREATE TABLE student (name VARCHAR2(20), age NUMBER(3));` - **插入记录**: 使用 `...
- `PATH`:系统路径,包含 Oracle 的二进制执行文件路径和其他常用工具路径。 通过命令 `env | grep -i sid` 可以查看 `ORACLE_SID` 的设置情况;`env | grep ORACLE_BASE`、`env | grep ORACLE_HOME` 和 `env | ...