9i建立非標準BLOCK_SIZE資料庫(二)

yangtingkun發表於2009-05-21

很早之前看到Tom提到,可以建立一個非標準的BLOCK_SIZE的資料庫,也就是說資料庫的DB_BLOCK_SIZE不在2K4K8K16K32K之中。

一直沒有計劃測試,今天正好有環境,簡單測試了一下。

這一篇介紹非標準資料塊的限制。

9i建立非標準BLOCK_SIZE資料庫(一):http://yangtingkun.itpub.net/post/468/484776

 

 

上一篇建立了一個DB_BLOCK_SIZE10K的資料庫,其實Oracle並不要求資料塊的大小一定是2K的整數倍,只要資料塊大小是512的整數倍就可以了,當然還要滿足大於2K,小於32K的條件,下面這個例子在Windows環境中建立一個DB_BLOCK_SIZE2560的資料庫。

初始化引數為:

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章