WEB开发网
开发学院数据库Oracle 在Oracle9i中使用多种Block Size 阅读

在Oracle9i中使用多种Block Size

 2006-08-05 11:58:36 来源:WEB开发网   
核心提示: 以下的查询是用来计算当前缓冲中的全部segment的块数目,根据你的缓冲大小,在Oracle9i中使用多种Block Size(5),这样或者需要很多排序空间,column object_name format a40column number_of_blocks format 999,9

以下的查询是用来计算当前缓冲中的全部segment的块数目。根据你的缓冲大小,这样或者需要很多排序空间。

column object_name format a40
column number_of_blocks format 999,999,999,999
column object_name format a40
column number_of_blocks format 999,999,999,999
SELECT
 o.object_name,
 COUNT(1) number_of_blocks
FROM
 DBA_OBJECTS o,
 V$BH bh
WHERE
 o.object_id = bh.objd
AND
 o.owner != SYS
GROUP BY
 o.object_name
ORDER BY
 count(1) desc;

以下让我们看一下缓冲中的对象名和数据块的数目

OBJECT_NAME  NUMBER_OF_BLOCKS
---------------------------------------- ----------------
ORDER_TABLE   123,273
ORDER_IDX    112,492
CUSTOMER     83,272
. . .
OEM_EXT       701

创建独立的数据缓冲

在Oracle9i中,将表或者索引块分配到不同数据块大小的表空间是很简单的。在创建一个表空间时,我们会使用一个新的blocksize参数。在以下的例子中,我们在Oracle数据库中创建了一个32K的表空间。

create tablespace
 32k_tablespace
datafile
 /u01/oradata/mysid/32k_file.dbf
size
 100M
blocksize
 32k
;

我们一旦创建了表空间,下一步是根据上面的blocksize来设置一个数据库缓冲。要记住,Oracle 9i不再使用init.ora文件,所以我们要通过alter database语句来动态地创建带名字的缓冲。

alter system set db_2k_cache_size=200M;
alter system set db_4k_cache_size=500M;
alter system set db_8k_cache_size=800M;
alter system set db_16k_cache_size=1600M;

一旦我们创建了带名字的内存缓冲和表空间,我们就可以将Oracle对象转移到新的表空间中。对于将对象由一个表空间转移到另一个,有多种方法,而许多的Oracle管理员已经习惯使用create table as select or CTAS语法来移动表格。对于index,则可以使用alter index rebuild转移到另一个表空间。

结论

对于Oracle9i的许多新特性,许多有经验的DBA都认为块的大小对于调整Oracle数据库是最重要的。管理员现在可以使用多达7个独立和不同的数据池,可以对每个数据对象使用的数据缓冲块的数目进行更大的控制。通过考察不同的缓冲访问特性,可以大大地减少磁盘I/O,从而极大地提高数据库的性能。

上一页  1 2 3 4 5 

Tags:Oraclei 使用 多种

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接