【TABLESPACE】创建非标准块大小(标准块8K)表空间

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

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

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


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

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

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

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

System altered.

SYS@orcl> show parameter db_16k_cache_size

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

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

4.添加数据库块为16K的非标准块表空间
在前期准备工作完成的情况下,我们便可以使用“blocksize 16k”参数完成表空间的创建。

SYS@orcl> create tablespace DATA01 datafile '+data' size 256M uniform size 4M 

blocksize 16K;

[ UNIFORM 就是这个表空间中所有的区间都是同样的大小,好处是防止碎片 ]


SYS@orcl> select dbms_metadata.get_ddl('TABLESPACE','DATA01') from dual;

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

 CREATE TABLESPACE "DATA01" DATAFILE

 SIZE 163577856

 LOGGING ONLINE PERMANENT BLOCKSIZE 16384

 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4194304 DEFAULT

 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO


5.未对db_16k_cache_size参数进行设置的ORA-29339报错信息
如果在创建表空间之前没有对db_16k_cache_size参数进行调整,将会收到如下ORA-29339报错。

SYS@orcl>create tablespace DATA01 datafile '+data' size 256M uniform size 4M 

blocksize 16K;

create tablespace DATA01 datafile '+data' size 256M uniform size 4M 

blocksize 16K;

*
ERROR at line 1:
ORA-29339: tablespace block size 16384 does not match configured block sizes

6.小结
本着特殊问题特殊处理的原则,创建非系统默认的表空间需要事先做一些微小的调整。

另外注意,当同一套数据库系统中存在数据块大小不同的表空间的时候,维护上需要更多的关照。充分评估,不要增加不必要的负担。


7.为表空间定制块尺寸的好处

  · 优化磁盘I/O:Oracle服务器必须把需要处理的表数据从物理磁盘读取到告诉缓冲区高速缓存中。

如果表行过长,最好使用更大的块尺寸,这样,每次读取的数据将多于从较小的块中读取

的数据,而且还减少了获得相同数据量所进行的读取操作数。

  · 优化数据高速缓存:Oracle针对不同的块尺寸提供不同的池,这样做可以更好地利用Oracle的内存。

  · 更易于表空间的传送:如果拥有多个块尺寸的表空间,则很容易使用Oracle的“传送表空间”特性  



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值