基本Oracle外围性能优化

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、  修改OracleSGA(运行时内存)

SGA主要由数据高速缓冲区Database Buffer Cache)、共享池Shared Pool)、重做日志缓冲区(Redo Log Cache)、大型池Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他结构(如固定SGA、锁管理等)组成。

根据物理内存来调节Oracle的运行时内存,才能更好的优化Oracle的性能。假设你的物理内存只有512M,这通常是小型应用。建议OracleSGA大约设置为240M,其中:共享池(SHARED_POOL_SIZE)可以设置60M80M,根据实际的用户数、查询等来定。数据块缓冲区可以大致分配120M-150M8i下需要设置DB_BLOCK_BUFFERSDB_BLOCK_BUFFER*DB_BLOCK_SIZE等于数据块缓冲区大小。9i 下的数据缓冲区可以用db_cache_size来直接分配。

假设物理内存有1GOracle SGA可以考虑分配500M:共享池分配100M150M,数据缓冲区分配300M400M

    假设物理内存2GSGA可以考虑分配1.2G,共享池300M500M,剩下的给数据块缓冲区。

假设物理内存2G以上:共享池300M500M就足够啦,再多也没有太大帮助;(Biti_rainy有专述)数据缓冲区是尽可能的大,但是一定要注意两个问题:一是要给操作系统和其他应用留够内存,二是对于32位的操作系统,OracleSGA1.75G的限制

 

修改Oracle SGA

alter system set sga_max_size=内存值 scope=spfile;

alter system set sga_target=内存值 scope=spfile;

 

 

提示:

如果SGA超过Oracle的上限时,你则无法启动数据库实例。所以一定要结合物理资源来分配OracleSGA资源。

如果由于你的SGA已经超过上限且无法启动的时候,你可以按照如下步骤来进行恢复:

1、  sqlplussys/密码@数据库实例名称 as sysdba

2、  调用create pfile from spfile(生成的文件名为:init数据库实例名.ora),修改SGA值;

3、  调用create spfile from pfile(生成的文件名为:SPFILE数据库实例名.ora);

4、  重新启动数据库监听和数据库实例;

猜你喜欢

转载自gao-xianglong.iteye.com/blog/1766991