oracle数据库发展为0能显示,请教:数据库启动后databuffers大小显示为0 bytes

好的。主要是参考了Oracle技术支持给的几篇文档整理的。

其中提到的第二种方法目前没有用。

一、硬件环境与软件环境

1、硬件环境:CPU xeon 2.7GHz+RAM 16G

2、软件环境:RHEL AS 3.0 (kernel 2.4.21-4.Elsmp)+Oracle 10g(10.1.0.3)

二、方法

方法一:使用Hugetlb 和 Remap_file_pages(依赖于数据块大小(blocksize),最大可以将SGA空间调整到14G)

方法二:增加Oracle SGA的地址空间(单纯使用这种方法在RHEL 3.0 smp kernel上可以将SGA区空间最大增加到2.7G。)

三、步骤(方法一)

1、启动数据库,查看原有主要参数配置情况:

为了不更改原有的初始化参数文件,在本次实验中将初始化参数文件导出,更改导出的参数文件的配置,在启动数据库时以导出的参数文件启动。

启动sqlplus,导出初始化参数文件:

SQL>create pfile from spfile

在本次实验中,导出的参数文件为initZBDB.ora,打开参数文件,可以看到主要的参数设置情况:

db_block_size=8192

db_file_multiblock_read_count=16

sga_target=1228931072

pga_aggregate_target=408944640

db_cache_size=905969664

java_pool_size=16777216

large_pool_size=16777216

shared_pool_size=285212672

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=800000(本次实验计划将SGA区调整到6G左右,由于db_block_size=8192,所以设置db_block_buffers为800000)

将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=’/opt/oracle/product/10.1.0/db_1/dbs/initZBDB.ora’

显示内容如下:

Total System Global Area 6878658560 bytes

Fixed Size                  777812    bytes

Variable Size         6876832172  bytes

Database Buffers          0       bytes

Redo Buffers           1048576   bytes

注:此处database buffers为0是正常的,适用VLM技术后即会如此。

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

5、增加Oracle SGA地址空间(可选)(方法二)

不论是否使用大内存技术都可以通过这种方法增大SGA区的大小,但是,使用这种方法增大SGA区的使用空间的同时,相应的会减少PGA区的使用空间,如果SGA区大小增大到一定程度会导致PGA区分配失败,即使系统还有可用内存,因为Oracle使用的地址空间是有限的。因此建议使用下面给出的建议值进行调整。降低SGA当前的起始地址0x50000000

(1)cd $ORACLE_HOME/rdbms/lib

(2)genksms -s 0x15000000 >ksms.s (新的起始位置)

(3)make -f ins_rdbms.mk ksms.o

(4)make -f ins_rdbms.mk ioracle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值