1、 修改数据库连接进程数
Oracle的默认连接数为150个链接,但很多时候往往无法满足我们项目的需求,尤其是在并发量极高的环境中。所以我们要手动修改Oracle的链接进程数。
查看Oracle当前链接进程数:
select count(*) from v$process;
修改Oracle链接进程数:
alter system set processes = 进程数 scope = spfile;
提示:
连接进程数一般不建议开得太大,因为32位的Oracle根本无法承受太大的链接,所以建议如果需要把连接数开得过大,那么至少具备的前提条件就是准备64位的Oracle。如果连接数违反了Oracle允许的上限后,你则无法启动数据库实例。当然如果你无法启动数据库实例时,你需要做的事情就是修改连接数即可。你可以找到Oracle安装目录下的:oracle\product\10.1.0\db_1\database\SPFILE数据库实例名.ORA,修改乃至成功启动即可。
2、 修改Oracle的SGA(运行时内存)
SGA主要由数据高速缓冲区(Database Buffer Cache)、共享池(Shared Pool)、重做日志缓冲区(Redo Log Cache)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他结构(如固定SGA、锁管理等)组成。
根据物理内存来调节Oracle的运行时内存,才能更好的优化Oracle的性能。假设你的物理内存只有512M,这通常是小型应用。建议Oracle的SGA大约设置为240M,其中:共享池(SHARED_POOL_SIZE)可以设置60M到80M,根据实际的用户数、查询等来定。数据块缓冲区可以大致分配120M-150M,8i下需要设置DB_BLOCK_BUFFERS,DB_BLOCK_BUFFER*DB_BLOCK_SIZE等于数据块缓冲区大小。9i 下的数据缓冲区可以用db_cache_size来直接分配。
假设物理内存有1G,Oracle 的SGA可以考虑分配500M:共享池分配100M到150M,数据缓冲区分配300M到400M。
假设物理内存有2G,SGA可以考虑分配1.2G,共享池300M到500M,剩下的给数据块缓冲区。
假设物理内存在2G以上:共享池300M到500M就足够啦,再多也没有太大帮助;(Biti_rainy有专述)数据缓冲区是尽可能的大,但是一定要注意两个问题:一是要给操作系统和其他应用留够内存,二是对于32位的操作系统,Oracle的SGA有1.75G的限制。
修改Oracle SGA:
alter system set sga_max_size=内存值 scope=spfile;
alter system set sga_target=内存值 scope=spfile;
提示:
如果SGA超过Oracle的上限时,你则无法启动数据库实例。所以一定要结合物理资源来分配Oracle的SGA资源。
如果由于你的SGA已经超过上限且无法启动的时候,你可以按照如下步骤来进行恢复:
1、 sqlplus:sys/密码@数据库实例名称 as sysdba;
2、 调用create pfile from spfile(生成的文件名为:init数据库实例名.ora),修改SGA值;
3、 调用create spfile from pfile(生成的文件名为:SPFILE数据库实例名.ora);
4、 重新启动数据库监听和数据库实例;