创建非标准块表空间

默认情况下创建的表空间使用的数据块大小是8K,数据库默认的数据块大小由db_block_size参数决定。如果我们想要创建的表空间超出这个藩篱,首先需要调整数据库的参数db_nk_cache_size。以创建数据库块大小为16K的表空间为例,展示一下这个调整过程。

1.查看当前的数据库大小
sys@ora10g> show parameter db_block_size

NAME TYPE VALUE
--------------------- -------------------- -------------------
db_block_size integer 8192

2.查看参数db_16k_cache_size系统默认值
sys@ora10g> show parameter db_16k_cache_size

NAME TYPE VALUE
--------------------- -------------------- -------------------
db_16k_cache_size big integer 0

该参数默认值为0,表示未启用。

3.创建数据库高速缓存区
sys@ora10g> alter system set db_16k_cache_size=1M scope=both;

System altered.

sys@ora10g> show parameter db_16k_cache_size

NAME TYPE VALUE
-------------------- -------------------- --------------------
db_16k_cache_size big integer 32M

即使修改时指定的是1M,修改之后系统会自动给出一个最小的32M大小。

4.添加数据库块为16K的非标准块表空间
在前期准备工作完成的情况下,我们便可以使用“blocksize 16k”参数完成表空间的创建。
sys@ora10g> create tablespace DATA01 datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K;

sys@ora10g> select dbms_metadata.get_ddl('TABLESPACE','DATA01') from dual;

DBMS_METADATA.GET_DDL('TABLESPACE','DATA01')
---------------------------------------------------------------------

CREATE TABLESPACE "DATA01" DATAFILE
'/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' SIZE 10485760
LOGGING ONLINE PERMANENT BLOCKSIZE 16384
EXTENT MANAGEMENT LOCAL UNIFORM. SIZE 4194304 SEGMENT SPACE MANAGEMENT AUTO

5.未对db_16k_cache_size参数进行设置的ORA-29339报错信息
如果在创建表空间之前没有对db_16k_cache_size参数进行调整,将会收到如下ORA-29339报错。
sys@ora10g> create tablespace DATA01 datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K;
create tablespace DATA01 datafile '/u01/app/oracle/oradata/ora10g/DATA01_01.dbf' size 256M uniform. size 4M blocksize 16K
*
ERROR at line 1:
ORA-29339: tablespace block size 16384 does not match configured block sizes

posted @ 2015-01-11 16:07  智能先行者  阅读(568)  评论(0编辑  收藏  举报