Wednesday, 12 June 2013

ORA-01144: File size (7864320 blocks) exceeds maximum of 4194303 blocks

ORA-01144: File size (7864320 blocks) exceeds maximum of 4194303 blocks

Issue:
SQL> create tablespace tbsnme datafile '/u102/oradata/databaname/tbsnme_01.dbf' size 30g;
create tablespace tbsnme datafile '/u102/oradata/databaname/tbsnme_01.dbf' size 30g
*
ERROR at line 1:
ORA-01144: File size (7864320 blocks) exceeds maximum of 4194303 blocks

Cause:
SQL> sho parameter db_block

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------
db_block_buffers                     integer        0
db_block_checking                    string        FALSE
db_block_checksum                    string      TYPICAL
db_block_size                            integer      4096

Oracle has limitation bounds with the db_block_size. Depending the db_block_size you can create datafiles up to one specific size. For example.db_block_size | Datafile upper limit
----------------------------------------------
2kb                  8GB
4kb                16GB
8kb                32GB
16kb              64GB
32kb            128GB

If you have db_block_size=8Kb and try to create a datafile with size 33GB you will get the error:ORA-01144: File size (4224000 blocks) exceeds maximum of 4194303 blocks
The formula to calculate the max size is: db_block_size * 4194303. 


Solution:

SQL> create tablespace tbsnme datafile '/u102/oradata/databaname/tbsnme_01.dbf' size 15g;

The workaround to this situation is obvious. One simple solution is to create multiple datafiles with smaller size. The othe is to useBigfile tablespaces 

Bigfile tablespaces 
This is a feature of Oracle 10g. A bigfile tablespace contains only one datafile (or tempfile) which can be as big as 2^32 (=4GB) blocks.

create bigfile tablespace tbsnme_ts data file '/u102/oradata/databaname/tbsnme.dbf' size 2T;

Bigfile tablespaces are supported only for locally managed tablespaces with automatic segment-space management (which is the default setting since Oracle 9i). There are two exceptions: locally managed undo and temporary tablespaces can be bigfile tablespaces, even though their segments are manually managed. 

The system and sysaux tablespace cannot be created as bigfile tablespace. Bigfile tablespaces should be used with automatic storage management, or other logical volume managers that support dynamically extensible logical volumes, striping and RAID.