大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
session设多少和你的应用环境有关系,说一下你的应用部署情况
创新互联提供成都做网站、网站建设、网页设计,成都品牌网站建设,广告投放平台等致力于企业网站建设与公司网站制作,十年的网站开发和建站经验,助力企业信息化建设,成功案例突破数千家,是您实现网站建设的好选择.
Sessions = (IIS process number) X (min pool size)
按照这个公式算,如iis进程数为30,连接池min pool size为10,那么安全的Oracle Sessions的数量应该为300。如果不按照这个数量进行设置,那么系统运行的过程中IIS会经常报告一些莫名奇妙的错误,如认证失败。很多人可能会认为IIS已经Crash了,实际上是由于Session的数量超过了Oracle允许的数量。
当然我们还必须将由于程序异常处理不当等造成的坏死的Session的可能数量计算在内。为了保证系统的运行问题,应该在上文所说的计算方法上加一个保险值,如350。
进去 控制面板 管理工具 服务,打开找到oracle 启动为手动,等以后开机会,自己再到服务向里面启动oracle进程,就可以了,这样最好的,我就是这样设置的 !
在繁忙的系统中,我们总是会期望提高某些Oracle进程的优先级,使其能够更容易的获得CPU资源,执行重要的任务。在Oracle 10g之前,这样的工作要通过操作系统上的设置来实现,在Oracle 10gR2中,一个新的隐含参数被引入到数据库中,用于配置提升Oracle后台进程的优先级。
这个核心参数是: _high_priority_processes
在 10.2 版本中,Oracle 缺省的对 LMS* 设置高优先级,在11g开始,对 LMS*||VKTM 设置高优先级。
在Linux平台上,进程的内核调用分为三类:
TS - SCHED_OTHER (SCHED_NORMAL) ,这是分时调度策略,缺省的正常级别;
FF - SCHED_FIFO,这是实时调度策略,先到先服务,先进先出;
RR - SCHED_RR,实时调度策略,时间片轮转;
其中 FF,RR 都是实时调度队列的,实时进程调度队列,是从优先级最高的进程运行,如果当前运行的是FIFO进程,如果进程不主动让出CPU,其他进程都不能运行,如果是RR(时间片轮转)的,则不会一直独占CPU,运行一段时间会被切换出来。
以下是在Linux中设置PMON进程提高优先级的测试。
[eygle@enmoteam2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Fri Aug 9 10:43:50 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL startup
ORACLE instance started.
Total System Global Area 1670221824 bytes
Fixed Size 2228944 bytes
Variable Size 402656560 bytes
Database Buffers 1258291200 bytes
Redo Buffers 7045120 bytes
Database mounted.
Database opened.
检查此时PMON进程的优先级为:TS 。
[eygle@enmoteam2 ~]$ ps -eo pid,class,pri,nice,time,args |grep pmon |grep -v grep
25424 TS 19 0 00:00:00 ora_pmon_enmot2
设置PMON进程,重新启动数据库:
SQL alter system set "_high_priority_processes"="PMON" scope=spfile;
System altered.
SQL shutdown abort;
ORACLE instance shut down.
SQL startup
ORACLE instance started.
Total System Global Area 1670221824 bytes
Fixed Size 2228944 bytes
Variable Size 402656560 bytes
Database Buffers 1258291200 bytes
Redo Buffers 7045120 bytes
Database mounted.
Database opened.
此时检查,可以发现PMON进程运行在RR模式:
SQL ! ps -eo pid,class,pri,nice,time,args |grep pmon |grep -v grep
26222 RR 41 - 00:00:00 ora_pmon_enmot2
在Solaris下有所不同,高优先级进程运行在RT模式 - Real Time,实时模式:
SQL show parameter pri
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_high_priority_processes string LMS*|LGWR|PMON
oracle@solaris:$ ps -eo pid,class,pri,nice,time,args |egrep 'lgwr|pmon' |grep -v grep
27674 RT 101 RT 00:00 ora_pmon_orcl
27694 RT 101 RT 00:00 ora_lgwr_orcl
注意,在RAC系统中,LMS*可能会导致一系列的LMS进程都获得高优先级,这可能是不必要的,也会抢占其他进程的资源,所以可以根据具体情况进行设置。
当系统中既有分时调度 - TS,又有时间片轮转调度(RR)和先进先出调度(FF)时,以下是一些细节上的说明:
当实时进程准备就绪后,如果当前CPU正在运行非实时进程,则实时进程立即抢占非实时进程;
RR进程和FIFO进程都采用实时优先级做为调度的权值标准,RR实际上是FIFO的一个延伸;
FIFO时,如果两个进程的优先级一样,则这两个优先级一样的进程具体执行哪一个是由其在队列中的位置决定的,这样导致一些不公正性,如果将两个优先级一样的任务的调度策略都设为RR,则保证了这两个任务可以循环执行,保证了公平。
在MOS (My Oracle Support)的文档:602419.1 上,还描述了这样一种情况:LMS not running in RT (real time) mode in 10.2.0.3 RAC database (Doc ID 602419.1)。
该案例提示:当 $ORACLE_HOME/bin/oradism 权限不对时,可能会导致进程无法运行在实时模式。
在该案例中oradism的权限如下:
384 -r-sr-s--- 1 oracle oinstall 186568 Dec 20 2006 /n01/app/oracle/product/10.2.0/bin/oradism ===
正常情况下,oradism 的属主应该为root,并且具有setuid位设置,以下是在我的系统中oradism的正确权限设置:
[eygle@enmoteam1 bin]$ ls -l oradism
-rwsr-x--- 1 root oinstall 71758 9月 17 2011 oradism
你最好买一本专门讲ORACLE性能优化的书,好好看看\x0d\x0a1、调整数据库服务器的性能\x0d\x0aOracle数据库服务器是整个系统的核心,它的性能高低直接影响整个系统的性能,为了调整Oracle数据库服务器的性能,主要从以下几个方面考虑: \x0d\x0a1.1、调整操作系统以适合Oracle数据库服务器运行\x0d\x0aOracle数据库服务器很大程度上依赖于运行服务器的操作系统,如果操作系统不能提供最好性能,那么无论如何调整,Oracle数据库服务器也无法发挥其应有的性能。 \x0d\x0a1.1.1、为Oracle数据库服务器规划系统资源 \x0d\x0a据已有计算机可用资源, 规划分配给Oracle服务器资源原则是:尽可能使Oracle服务器使用资源最大化,特别在Client/Server中尽量让服务器上所有资源都来运行Oracle服务。 \x0d\x0a1.1.2、调整计算机系统中的内存配置 \x0d\x0a多数操作系统都用虚存来模拟计算机上更大的内存,它实际上是硬盘上的一定的磁盘空间。当实际的内存空间不能满足应用软件的要求时,操作系统就将用这部分的磁盘空间对内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。为了避免过多地使用虚存,应加大计算机的内存。 \x0d\x0a1.1.3、为Oracle数据库服务器设置操作系统进程优先级 \x0d\x0a不要在操作系统中调整Oracle进程的优先级,因为在Oracle数据库系统中,所有的后台和前台数据库服务器进程执行的是同等重要的工作,需要同等的优先级。所以在安装时,让所有的数据库服务器进程都使用缺省的优先级运行。 \x0d\x0a1.2、调整内存分配\x0d\x0aOracle数据库服务器保留3个基本的内存高速缓存,分别对应3种不同类型的数据:库高速缓存,字典高速缓存和缓冲区高速缓存。库高速缓存和字典高速缓存一起构成共享池,共享池再加上缓冲区高速缓存便构成了系统全程区(SGA)。SGA是对数据库数据进行快速访问的一个系统全程区,若SGA本身需要频繁地进行释放、分配,则不能达到快速访问数据的目的,因此应把SGA放在主存中,不要放在虚拟内存中。内存的调整主要是指调整组成SGA的内存结构的大小来提高系统性能,由于Oracle数据库服务器的内存结构需求与应用密切相关,所以内存结构的调整应在磁盘I/O调整之前进行。 \x0d\x0a1.2.1、库缓冲区的调整 \x0d\x0a库缓冲区中包含私用和共享SQL和PL/SQL区,通过比较库缓冲区的命中率决定它的大小。要调整库缓冲区,必须首先了解该库缓冲区的活动情况,库缓冲区的活动统计信息保留在动态性能表v$librarycache数据字典中,可通过查询该表来了解其活动情况,以决定如何调整。 \x0d\x0a \x0d\x0aSelect sum(pins),sum(reloads) from v$librarycache; \x0d\x0a \x0d\x0aPins列给出SQL语句,PL/SQL块及被访问对象定义的总次数;Reloads列给出SQL 和PL/SQL块的隐式分析或对象定义重装载时在库程序缓冲区中发生的错误。如果sum(pins)/sum(reloads) ≈0,则库缓冲区的命中率合适;若sum(pins)/sum(reloads)1, 则需调整初始化参数 shared_pool_size来重新调整分配给共享池的内存量。 \x0d\x0a1.2.2、数据字典缓冲区的调整 \x0d\x0a数据字典缓冲区包含了有关数据库的结构、用户、实体信息。数据字典的命中率,对系统性能影响极大。数据字典缓冲区的使用情况记录在动态性能表v$librarycache中,可通过查询该表来了解其活动情况,以决定如何调整。 \x0d\x0a \x0d\x0aSelect sum(gets),sum(getmisses) from v$rowcache; \x0d\x0a \x0d\x0aGets列是对相应项请求次数的统计;Getmisses 列是引起缓冲区出错的数据的请求次数。对于频繁访问的数据字典缓冲区,sum(getmisses)/sum(gets)10%~15%。若大于此百分数,则应考虑增加数据字典缓冲区的容量,即需调整初始化参数shared_pool_size来重新调整分配给共享池的内存量。 \x0d\x0a1.2.3、缓冲区高速缓存的调整 \x0d\x0a用户进程所存取的所有数据都是经过缓冲区高速缓存来存取,所以该部分的命中率,对性能至关重要。缓冲区高速缓存的使用情况记录在动态性能表v$sysstat中,可通过查询该表来了解其活动情况,以决定如何调整。 \x0d\x0a \x0d\x0aSelect name,value from v$sysstat where name in ('dbblock gets','consistent gets','physical reads'); \x0d\x0a \x0d\x0adbblock gets和consistent gets的值是请求数据缓冲区中读的总次数。physical reads的值是请求数据时引起从盘中读文件的次数。从缓冲区高速缓存中读的可能性的高低称为缓冲区的命中率,计算公式: \x0d\x0a \x0d\x0aHit Ratio=1-(physical reds/(dbblock gets+consistent gets)) \x0d\x0a \x0d\x0a如果Hit Ratio60%~70%,则应增大db_block_buffers的参数值。db_block_buffers可以调整分配给缓冲区高速缓存的内存量,即db_block_buffers可设置分配缓冲区高速缓存的数据块的个数。缓冲区高速缓存的总字节数=db_block_buffers的值*db_block_size的值。db_block_size 的值表示数据块大小的字节数,可查询 v$parameter 表: \x0d\x0a \x0d\x0aselect name,value from v$parameter where name='db_block_size'; \x0d\x0a \x0d\x0a在修改了上述数据库的初始化参数以后,必须先关闭数据库,在重新启动数据库后才能使新的设置起作用。
在数据库服务器上运行 sqlplus system/password@xe (其中 system 是数据库用户无需改变;
password 是数据库密码应指定为实际密码;xe 是数据库实例名称) ,然后执行:
查看一下数据库现有的进程数,是否已经达到参数processes的大小。
1.select count(*) from v$process;取得数据库目前的进程数。
2.select value from v$parameter where name = 'processes';取得进程数的上限。
alter system set session_cached_cursors=200 scope=spfile;
alter system set session_max_open_files=200 scope=spfile;
alter system set sessions=20 scope=spfile;
alter system set license_max_sessions=200 scope=spfile;
alter system set license_sessions_warning=200 scope=spfile;
alter system set processes=200 scope=spfile;
执行后,重启 Oracle XE 数据库实例即可。要重启 Oracle XE 数据库实例:
1. 如安装于 Windows 上,先运行 net stop oracleservicexe,再运行 net start oracleservicexe 即可。也可通过“服务”管理控制台重启 OracleServiceXE 服务。
2. 如安装于 Linux 上,先运行 /etc/init.d/oracle-xe start,再运行 /etc/init.d/oracle-xe stop 即可。