有感于网上资料给的不全不细致,做这个实验耽误了大量时间,因此写了这篇文章
理论不多,全是具体操作步骤。
背景介绍:
系统: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限制了。
转载于:https://blog.51cto.com/ocmaster/1196488