Data buffer 现在我们来谈数据缓冲区,在确定了SGA 的大小并分配完了前面部分的内存后,其余的,都分配给这部分内存。通常,在允许的情况下,我们都尝试使得这部分内存更大。这部分内存的作用主要是缓存 DB BLOCK,减少甚至避免从磁盘上获取数据,在8i中通常是由db_block_buffers*db_block_size 来决定大小的。如果我们设置了buffer_pool_keep 和buffer_pool_recycle,则应该加上后面这两部分内存的大小。
假定64 bit ORACLE 内存4G shared_pool_size = 200M , data buffer = 2.5G
内存8G shared_pool_size = 300M , data buffer = 5G
内存 12G shared_pool_size = 300M-----800M , data buffer = 8G
1.3 32bit 与 64bit 对SGA的影响 为什么在上面SGA大小设置的经验规则中要分 32bit Oracle 和 64bit Oracle 呢,是因为这关系到SGA大小的上限问题。在32bit的数据库下,通常oracle只能使用不超过1.7G的内存,即使我们拥有12G的内存,但是我们却只能使用1.7G,这是一个莫大的遗憾。假如我们安装64bit的数据库,我们就可以使用很大的内存,几乎不可能达到上限。但是64bit 的数据库必须安装在64bit 的操作系统上,可惜目前windows上只能安装32bit的数据库,我们通过下面的方式可以查看数据库是 32bit 还是 64bit : SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production PL/SQL Release 8.1.7.0.0 - Production CORE 8.1.7.0.0 Production TNS for 32-bit Windows: Version 8.1.7.0.0 - Production NLSRTL Version 3.4.1.0.0 – Production
在UNIX平台下的显示有所不同,明显可以看出是 64bit Oracle ,比如在HP-UX平台上: SQL> select * from v$version;
BANNER ---------------------------------------------------------------- Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production PL/SQL Release 8.1.7.4.0 - Production CORE 8.1.7.0.0 Production TNS for HPUX: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 – Production