有感于网上资料给的不全不细致,做这个实验耽误了大量时间,因此写了这篇文章

理论不多,全是具体操作步骤。

背景介绍:

系统:redhat5.5   xen内核 ;  oracle:10g  32位 Release 10.2.0.1.0

内存4G,swap8g    

目前:升级到8G内存,sga调整到3g以上

操作步骤如下:

1关闭oracle:

#su - oracle

$sqlplus / as sysdba

SQL> select status from v$instance;

SQL>shutdown immediate

2修改文件系统

# umount /dev/shm

# mount -t ramfs ramfs /dev/shm -o maxsize=4000m

# chown oracle.oinstall /dev/shm

3修改参数

# vim /etc/rc.local

添加:

umount /dev/shm

mount -t ramfs ramfs /dev/shm -o maxsize=4000m

chown oracle.oinstall /dev/shm

:wq 保存退出


#vim /etc/security/limits.conf

添加:

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536


oracle soft memlock 1048576

oracle hard memlock 1048576

前4行有的可以不写,直接添加下面2行


#su - oralce

$ ulimit -l 1048576

$ exit   回退到root

#vim /etc/sysctl.conf


kernel.shmmax = 4194967295 #Linux主机内存的一半,单位为byte,但最大最不能超过4294967295

kernel.shmmni = 4096 #一般固定为4094

kernel.shmall = 2097152 #应该>或= kernel.shmmax/kernel.shmmni

这些配置参数就是参考没有就添加,有就看下一步了亲。

#sysctl -p


5启动数据库并修改参数文件

#su - oracle

$cd $ORACLE_HOME/dbs

$cp spfileorcl.ora  /home/oracle/         //这一步就是备份下文件用的

$ strings spfileorcl.ora > init.ora.bak      

$vim init.ora.bak

添加:

*.use_indirect_data_buffers=true

*.db_block_buffers = 393216

*.shared_pool_size = 452984832

删除:

*.sga_max_size

*.sga_target


db_block_buffers表示db_block_size的大小,如欲使用3g的db_block_size,则公式:(3×1024×1024/8=393216)



$ sqlplus / as sysdba

SQL> startup pfile='?/dbs/init.ora.bak'

生成spfile

SQL> create spfile from pfile='?/dbs/init.ora.bak';

SQL> shutdown immediate

SQL> startup

SQL> select status from v$instance;


这样就可以了,sga可以突破1.7G限制了。