默认情况下创建的表空间使用的数据块大小是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
6.小结
本着特殊问题特殊处理的原则,创建非系统默认的表空间需要事先做一些微小的调整。
另外注意,当同一套数据库系统中存在数据块大小不同的表空间的时候,维护上需要更多的关照。充分评估,不要增加不必要的负担。
Good luck.
secooler
10.07.16
-- The End --
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
6.小结
本着特殊问题特殊处理的原则,创建非系统默认的表空间需要事先做一些微小的调整。
另外注意,当同一套数据库系统中存在数据块大小不同的表空间的时候,维护上需要更多的关照。充分评估,不要增加不必要的负担。
Good luck.
secooler
10.07.16
-- The End --
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-668281/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/519536/viewspace-668281/