1、 在命令窗口中执行:
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
2、 2、 在 SQL 窗口中执行:
// 查询实例的 db_block_size 值 ( 为 8192 bytes )
select value from v$parameter where name='db_block_size'
// 查询出的回滚段中每个 extent 的初始分配的大小
select initial_extent from dba_rollback_segs
//initial_extent 值除以 db_block_size 后的结果:
select initial_extent/8192 from dba_rollback_segs
由此可见, initial_extent 值是 db_block_size 的整数倍, db_block_size 的默认值为 8192 bytes , 是不能被用户修改的 。 因为 db_block_size 对应于一个实例,所以意味着在数据库创建 ( 建库 ) 以后是不能修改的,如需修改,可行的方式是重新建库并把原库的数据 export 到新库。当然最好的方式是在建数据库之前就规划好 , 一般如果是 OLTP 系统 , 可以保持默认值 ; OLAP 环境可以考虑适当调大 。
db_block_size 典型的值有 4096 bytes 和 8192 bytes ,且必须是操作系统块 ( os block ) 的整数倍。操作系统块 ( os block ) 在 Windows 下可以通过 fsutil 工具查看,在 Linux 下则可以使用 tune2fs 命令。
Windows 下使用方法如下:
D:\>fsutil fsinfo ntfsinfo c:
NTFS 卷序列号 : 0x 388c89188c88d1b4
版本 : 3.1
区数量 : 0x00000000013fe599
簇总数 : 0x000000000027fcb3
可用簇 : 0x0000000000011e43
保留总数 : 0x0000000000000060
每个扇区字节数 : 512
每个簇字节数 : 4096
每个 FileRecord 段的字节数 : 1024
每个 FileRecord 段的簇数 : 0
Mft 有效数据长度 :