很早之前看到Tom提到,可以创建一个非标准的BLOCK_SIZE的数据库,也就是说数据库的DB_BLOCK_SIZE不在2K、4K、8K、16K和32K之中。
一直没有计划测试,今天正好有环境,简单测试了一下。
在9.2环境中,创建一个DB_BLOCK_SIZE为10K的数据库:
[oracle@bjtest ~]$ mkdir -p /opt/oracle/admin/test9/bdump
[oracle@bjtest ~]$ mkdir /opt/oracle/admin/test9/udump
[oracle@bjtest ~]$ mkdir /opt/oracle/admin/test9/cdump
[oracle@bjtest ~]$ mkdir /data/oradata/test9
[oracle@bjtest ~]$ export ORACLE_SID=test9
手工编辑初始化参数:
[oracle@bjtest ~]$ vi inittest9.ora
db_name=test9
db_cache_size=256m
log_buffer=2048000
shared_pool_size=200m
large_pool_size=64m
java_pool_size=64m
pga_aggregate_target=128m
undo_management=auto
control_files=/data/oradata/test9/control01.dbf
background_dump_dest=/opt/oracle/admin/test9/bdump
user_dump_dest=/opt/oracle/admin/test9/udump
core_dump_dest=/opt/oracle/admin/test9/cdump
db_block_size=10240
compatible=9.2.0.1.0
注意DB_BLOCK_SIZE的大小是10K。
[oracle@bjtest ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on 星期四 5月 21 00:52:38 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL> startup nomount pfile=inittest9.ora
ORACLE 例程已经启动。
Total System Global Area 657246184 bytes
Fixed Size 743400 bytes
Variable Size 385875968 bytes
Database Buffers 268435456 bytes
Redo Buffers 2191360 bytes
SQL> CREATE DATABASE test9
2 DATAFILE '/data/oradata/test9/system01.dbf' SIZE 300m EXTENT MANAGEMENT LOCAL
3 DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/data/oradata/test9/temp01.dbf' SIZE 100m
4 UNDO TABLESPACE "UNDOTBS1" DATAFILE '/data/oradata/test9/undotbs01.dbf' SIZE 200m
5 CHARACTER SET ZHS16GBK
6 NATIONAL CHARACTER SET AL16UTF16
7 LOGFILE GROUP 1 ('/data/oradata/test9/redo01.log') SIZE 50M,
8 GROUP 2 ('/data/oradata/test9/redo02.log') SIZE 50M,
9 GROUP 3 ('/data/oradata/test9/redo03.log') SIZE 50M;
数据库已创建。
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 10240
最后执行catalog.sql和catproc.sql,数据库建立完成:
SQL> spo result.txt
SQL> @?/rdbms/admin/catalog.sql
SQL> @?/rdbms/admin/catproc.sql
SQL> spo off
简单提一句,这种非标准BLOCK_SIZE的数据库没有什么实际的意义,而且这种非标准块的数据库无法像其他数据库迁移表空间,因为其他数据库上没有办法设置DB_NK_BLOCK_SIZE的值,来加载这个数据库的表空间。
要创建非标准块的数据库,必须设置COMPATIBLE,否则执行会报错:
[oracle@bjtest ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on 星期四 5月 21 00:34:49 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL> startup nomount pfile=inittest9.ora
ORACLE 例程已经启动。
Total System Global Area 657246184 bytes
Fixed Size 743400 bytes
Variable Size 385875968 bytes
Database Buffers 268435456 bytes
Redo Buffers 2191360 bytes
SQL> CREATE DATABASE test9
2 MAXINSTANCES 1
3 MAXLOGHISTORY 1
4 MAXLOGFILES 5
5 MAXLOGMEMBERS 3
6 MAXDATAFILES 100
7 DATAFILE '/data/oradata/test9/system01.dbf' SIZE 1024M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
8 EXTENT MANAGEMENT LOCAL
9 DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/data/oradata/test9/temp01.dbf' SIZE 4096M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
10 UNDO TABLESPACE "UNDOTBS1" DATAFILE '/data/oradata/test9/undotbs01.dbf' SIZE 4096M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
11 CHARACTER SET ZHS16GBK
12 NATIONAL CHARACTER SET AL16UTF16
13 LOGFILE GROUP 1 ('/data/oradata/test9/redo01.log') SIZE 512M,
14 GROUP 2 ('/data/oradata/test9/redo02.log') SIZE 512M,
15 GROUP 3 ('/data/oradata/test9/redo03.log') SIZE 512M;
CREATE DATABASE test9
*
ERROR 位于第 1 行:
ORA-01092: ORACLE 例程终止。强行断开连接
在alert文件中可以看到错误信息:
Errors in file /opt/oracle/admin/test9/udump/test9_ora_26099.trc:
ORA-01501: CREATE DATABASE ??
ORA-00406: COMPATIBLE ????? 9.2.0.0.0 ???
Thu May 21 00:35:18 2009
Error 406 happened during db open, shutting down database
USER: terminating instance due to error 406
Instance terminated by USER, pid = 26099
ORA-1092 signalled during: CREATE DATABASE test9
MAXINSTANCES 1
MAXLOGHISTORY...
也就是说建立非标准的块的数据库要求兼容性必须大于9.2。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-600606/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-600606/