很早之前看到Tom提到,可以创建一个非标准的BLOCK_SIZE的数据库,也就是说数据库的DB_BLOCK_SIZE不在2K、4K、8K、16K和32K之中。
一直没有计划测试,今天正好有环境,简单测试了一下。
这一篇介绍非标准数据块的限制。
9i创建非标准BLOCK_SIZE数据库(一):http://yangtingkun.itpub.net/post/468/484776
上一篇建立了一个DB_BLOCK_SIZE为10K的数据库,其实Oracle并不要求数据块的大小一定是2K的整数倍,只要数据块大小是512的整数倍就可以了,当然还要满足大于2K,小于32K的条件,下面这个例子在Windows环境中建立一个DB_BLOCK_SIZE为2560的数据库。
初始化参数为:
db_name=test9
db_cache_size=100m
log_buffer=2048000
shared_pool_size=80m
large_pool_size=8m
java_pool_size=8m
pga_aggregate_target=64m
undo_management=auto
control_files=e:\oracle\oradata\test9\control01.dbf
background_dump_dest=e:\oracle\admin\test9\bdump
user_dump_dest=e:\oracle\admin\test9\udump
core_dump_dest=e:\oracle\admin\test9\cdump
db_block_size=2560
compatible=9.2.0.1.0
数据库建立过程:
E:\>oradim -new -sid test9
E:\>sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on 星期三 5月 20 22:13:38 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL> startup nomount pfile=inittest9.ora
ORACLE 例程已经启动。
Total System Global Area 229072608 bytes
Fixed Size 454368 bytes
Variable Size 117440512 bytes
Database Buffers 109051904 bytes
Redo Buffers 2125824 bytes
SQL> CREATE DATABASE test9
2 DATAFILE 'e:\oracle\oradata\test9\system01.dbf' SIZE 300m EXTENT MANAGEMENT LOCAL
3 DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE 'e:\oracle\oradata\test9\temp01.dbf' SIZE 100m
4 UNDO TABLESPACE "UNDOTBS1" DATAFILE 'e:\oracle\oradata\test9\undotbs01.dbf' SIZE 200m
5 CHARACTER SET ZHS16GBK
6 NATIONAL CHARACTER SET AL16UTF16
7 LOGFILE GROUP 1 ('e:\oracle\oradata\test9\redo01.log') SIZE 50M,
8 GROUP 2 ('e:\oracle\oradata\test9\redo02.log') SIZE 50M,
9 GROUP 3 ('e:\oracle\oradata\test9\redo03.log') SIZE 50M;
数据库已创建。
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 2560
需要注意,在10.2中,已经无法创建非标准块的数据库了,CREATE DATABASE语句会报错:
[oracle@bjtest ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 5月 20 23:58:14 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup nomount pfile=inittest102.ora
ORACLE instance started.
Total System Global Area 851443712 bytes
Fixed Size 2076496 bytes
Variable Size 222298288 bytes
Database Buffers 620756992 bytes
Redo Buffers 6311936 bytes
SQL> create database;
create database
*
ERROR at line 1:
ORA-25157: Specified block size 5120 is not valid
SQL> host
[oracle@bjtest ~]$ vi inittest102.ora
db_name=test102
sga_target=812m
pga_aggregate_target=300m
control_files=/data/oradata/test102/control01.ctl
undo_management = auto
db_block_size=10240
~
"inittest102.ora" 6L, 151C written
[oracle@bjtest ~]$ exit
exit
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount pfile=inittest102.ora
ORACLE instance started.
Total System Global Area 851443712 bytes
Fixed Size 2076496 bytes
Variable Size 222298288 bytes
Database Buffers 620756992 bytes
Redo Buffers 6311936 bytes
SQL> create database;
create database
*
ERROR at line 1:
ORA-25157: Specified block size 10240 is not valid
也就是说建立非标准的块的数据库要求兼容性必须大于9.2,且数据库10.2已经不支持这个特性,由于手头没有环境,没有测试10.1版本的情况,估计Oracle认为实在没有大多的意义,因此在10g中禁止了这个功能。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-600771/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-600771/