使用ORACLE10G VLM特性 使32位ORACLE突破1.7G SGA限制

最近公司在中心机房新增一台数据库用来存储解析前的原始数据使用,由于对该数据的安全性和实用性要求不高故采用了浪潮的英信系列服务器作为数据库服务器。考虑到数据库的性能,公司给该服务器配置了4G内存,由于一直听说在32位及其上ORACLE有SGA不能超过1.7G的限制。所以查找相关文档解决该问题,以下是解决办法。

步骤
1、启动数据库,查看原有主要参数配置情况:
为了不更改原有的初始化参数文件,在本次实验中将初始化参数文件导出,更改导出的参数文件的配置,在启动数据库时以导出的参数文件启动。
启动sqlplus,导出初始化参数文件:
SQL>create pfile from spfile
在本次实验中,导出的参数文件为/oracle/initora.ora,打开参数文件,可以看到主要的参数设置情况:
db_block_size=8192
db_file_multiblock_read_count=16
sga_target=1228931072
pga_aggregate_target=209715200
db_cache_size=905969664
java_pool_size=16777216
large_pool_size=16777216
shared_pool_size=838860800
sort_area_size=1048576
2、配置linux
(1)添加如下内容到/etc/rc.local:
umount /dev/shm
mount -t ramfs ramfs /dev/shm
chown oracle:dba /dev/shm
(2)增加“max locked memory”ulimit
为了适应VLM 窗口大小(默认为512M)需要调整Oracle锁定的内存地址空间的大小(在默认情况下为4k)在本次实验中将Oracle锁定的内存设置为接近4G,添加如下内容到/etc/security/limits.conf:
oracle soft memlock 4194303
oracle hard memlock 4194303
注:在32位的Oracle中,锁定内存的大小不能超过4G。
(3)切换到Oracle用户,输入如下命令,使第(2)步的设置生效:
$ ulimit
(4)输入“ulimit -l”可以查看当前设置的结果
3、配置Oracle
(1)修改initZBDB.ora文件中如下参数设置,如果参数文件中没有,则添加下述参数设置。
use_indirect_data_buffers=true
db_block_buffers=256000(本次实验计划将SGA区调整到2G左右,由于db_block_size=8192,所以设置db_block_buffers为256000)
将db_cache_size参数设置注释,使用VLM技术增大SGA到2.6G时db_cache_size参数将失效,必须使用db_block_buffers参数。
# db_cache_size=905969664
将sga_target参数注释:
# sga_target=1228931072
(2)以initZBDB.ora参数文件启动并关闭数据库,查看参数设置是否生效:
SQL>startup pfile=’/oracle/initorig.ora’
显示内容如下:
Total System Global Area 2986344448 bytes
Fixed Size                  1219784 bytes
Variable Size             872416056 bytes
Database Buffers         2097152000 bytes
Redo Buffers               15556608 bytes
4、配置hugetlb
(1)确保shmmax参数已经设置的足够大,在实验中,在安装数据库时,已经将shmmax参数设置为4G-1,可以通过如下命令查看shmmax参数设置:
# sbin/sysctl –a | grep shm
可以通过如下命令更改其大小:
# vi /etc/sysctl.conf
执行下述命令,使得更改生效:
# sbin/sysctl –p
(2)执行下述命令查看当前共享内存段的大小
#ipcs
显示内容如下:
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 1572864 oracle 660 337641472 16
0x154b1f50 1605633 oracle 660 4096 0

------ Semaphore Arrays --------
key semid owner perms nsems
0x8eded478 1933312 oracle 660 104

------ Message Queues --------
key msqid owner perms used-bytes messages
(3)关闭oracle
(4)将337641472 bytes转换为MB为单位,约等于338 MB
(5)在这个数值的基础上加一个小的数,比如加4,结果为342MB
(6)将这个数值写入到/proc/sys/vm/hugetlb_pool文件中:
echo 342 >/proc/sys/vm/hugetlb_pool
注:可以将上述命令添加到rc.local文件中,这样每次系统启动后都可立即获取内存。
(7)启动Oracle
SQL>startup pfile=’/opt/oracle/product/10.1.0/db_1/dbs/initZBDB.ora’
(8)执行命令:#. cat /proc/meminfo,在最下方,可以看到显示的内容如下:
HugePages_Total:171
HugePages_Free: 171
Hugepagesize: 2048
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值