Multiple Block Size Support

 

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

Oracle 9i数据库中支持同一个数据库使用不同大小的Oracle 数据块,可以在表空间一级定义数据块的大小,例如:

CREATE TABLESPACE TBS1 ... BLOCKSIZE 16K;

CREATE TABLESPACE TBS2 ... BLOCKSIZE 8192;

其中,BLOCKSIZE可以取2K4K8K16K,如果操作系统支持,甚至可以取32K。可以通过DBA_TABLESPACES视图中的BLOCK_SIZE列值查看表空间的块尺寸。

 

Oracle 9i 以前的版本一样,在创建数据库的时候还是需要在参数文件中指定DB_BLOCK_SIZE参数(缺省数据库数据块尺寸,也成为标准块尺寸,standard block size)的值。这个参数的值将作为创建表空间时的缺省块尺寸(如果不指定新表空间的块尺寸的话),并且DB_BLOCK_SIZE参数的值仍然是在创建数据库的时候指定以后,除非重建数据库,否则不能更改。

 

需要注意的是:

·          当使用分区时,一个分区表的所有分区必须在相同的BLOCKSIZE的表空间中。

·          索引和相应的表可以放在不同的BLOCKSIZE的表空间中。

·          系统表空间的块尺寸只能是DB_BLOCK_SIZE参数的值

 

Oracle 9i中参数DB_CACHE_SIZE 替代了以前的 DB_BLOCK_BUFFERS参数,并使用字节为单位表示高速缓冲区的大小(而不是以块为单位)。

当我们在一个数据库中使用多块设置的时候,必须指定DB_CACHE_SIZE参数,并且为不同块设置的表空间设置DB_nK_CACHE_SIZE参数(至少指定一个DB_nK_CACHE_SIZE参数),其中,n可以是2481632,即:

DB_2K_CACHE_SIZE 的缓冲区是为了存取2k数据块尺寸的表空间对象而指定的高速缓存;

DB_4K_CACHE_SIZE的缓冲区是为了存取4k数据块尺寸的表空间对象而指定的高速缓存;

DB_8K_CACHE_SIZE的缓冲区是为了存取8k数据块尺寸的表空间对象而指定的高速缓存;

DB_16K_CACHE_SIZE的缓冲区是为了存取16k数据块尺寸的表空间对象而指定的高速缓存;

DB_32K_CACHE_SIZE的缓冲区是为了存取32k数据块尺寸的表空间对象而指定的高速缓存;

 

注意,n不能指定为和缺省数据块尺寸大小相同的数值,例如,如果DB_BLOCK_SIZE = 8192(8KB),那么就不能设置DB_8K_CACHE_SIZE参数。

 

例如:

     MAX_SGA_SIZE = 700M

     SHARE_POOL_SIZE = 80M

     DB_BLOCK_SIZE = 8192

     DB_CACHE_SIZE = 290M

     DB_2K_CACHE_SIZE = 4M

     DB_16K_CACHE_SIZE = 16M

 

上面的设置说明了,在SGA中,SGA动态增长最多可以达到700M,其中实例启动时SHARE POOL的大小为80M,数据库标准块尺寸(缺省数据块大小)是8KB,如果用标准数据块(即,8KB)的对象时,将使用290M的高速缓存(DATA BUFFER),如果使用2K数据块尺寸的表空间内的对象时,可以使用4M的高速缓存,如果使用16K数据块尺寸的表空间内的对象时,可以使用16M的高速缓存。

阅读更多
个人分类: oracle
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭