Oralcle 常用 知识

来源:互联网 发布:java进销存源码下载 编辑:程序博客网 时间:2024/05/27 00:33

查看oracle数据库连接数:

SELECT   username, machine, program, status, COUNT (machine) AS  连接数量 
FROM v$session
GROUP BY username, machine, program, status
ORDER BY machine

 

 


 

 

ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:

sessions=(1.1*process+5)

但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/system/ 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,
需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围
可从200--2000不等。

semmns的计算公式为:SEMMNS>processes+instance_processes+system

processes=数据库参数processes的值 instance_processes=5(smon,pmon,dbwr,lgwr,arch)

system=系统所占用信号量。系统所占用信号量可用下列命令查出:#ipcs -sb

其中列NSEMS显示系统已占用信号量。

其它一些跟连接有关的参数,如 licence_max_sessions, licence_sessions_warning 等默认设置都为
零,也就是没有限制。我们可以放心大胆地使用数据库了。

 


 

Oracle数据库获取当前用户连接数,具体实现如下:

SQL> select count(*) from v$session  #连接数
SQL> Select count(*) from v$session where status='ACTIVE' #并发连接数
SQL> show parameter processes  #最大连接
SQL> alter system set processes = value scope = spfile;重启数据库  #修改连接

 


查看Oracle的当前连接数限制:
以sysdba身份登陆PL/SQL 或者 Worksheet, 在命令行窗口(不是SQL窗口)执行如下
命令:
show parameter processes;

 

修改Oracle最大连接数:

在oracle的安装目录下找到 oracle的启动配置文件: init.ora.一串数字

 

打开这个初始化文件,找到其中的 # Processes and Sessions 参数:
###########################################
# Processes and Sessions
###########################################
processes=150


更改150 为300 或1000.
然后保存,重启Oracle

 


 

修改ORACLE 中的SESSION和PROCESS

会话sessions和进程pocesses的关系
一个process可以有0个、1个或者多个session,一个session也可以存在若干个process中,并行同样是一个session对应一个process,主session是coordinator session,每个parallel process同样会对应数据库里一个单独的session。可以从v$px_session和v$session中验证这点。
连接connects,会话sessions和进程pocesses的关系

每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话,如果数据库运行在专用服务器方式,一个会话对应一个服务器进程(process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。

Oracle的sessions和processes的数量关系是:sessions=1.1 * processes + 5

下面我们用两种方法修改PROCESS的最大值
一、通过Oracle Enterprise Manager Console在图形化管理器中修改
以系统管理员的身份登入,进入界面 数据库的例程 - 配置 - 一般信息 - 所有初始化参数,修改processes的值

二、在SQLPLUS中修改
以DBA权限登录,修改PROCESS的值(SESSION的值会跟着改);创建pfile;重新启动数据库。输入的SQL命令如下,回显信息省略了
SQL> connect sys/sys as sysdba
SQL> alter system set processes=400 scope = spfile;
SQL> create pfile from spfile;
SQL> shutdown immediate;
SQL> startup