ORA-27044: unable to write the header block of file
ORA-27044: unable to write the header block of file
0.改訂履歴
1.はじめに
このドキュメントでは,ORA-27044エラーの概要を説明する.
なお,使用している環境は,Oracle8i 8.1.7.4.0 on Redhat 7.2である.
2.エラーを検証する
[oracle@poweredge oracle]$ sqlplus system/manager@testedbz
SQL*Plus: Release 8.1.7.0.0 - Production on Fri Oct 11 19:06:03 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
JServer Release 8.1.7.4.0 - Production
SQL>
|
- 2048MB(2GB)のデータファイルを作成する.
SQL> create tablespace "TEST"
2 logging
3 datafile '/opt/oracle/oradata/testedbz/TEST.dbf'
4 size 2048M
5 extent management local
6 ;
create tablespace "TEST"
*
ERROR at line 1:
ORA-01119: error in creating database file
'/opt/oracle/oradata/testedbz/TEST.dbf'
ORA-27044: unable to write the header block of file
Linux Error: 22: Invalid argument
Additional information: 2
SQL>
|
- まず,「このファイルにエラーがあります」を示すORA-01119が表示される.
- 園と食いに,ORA-027044が表示されている.
- Linux Errorとなっているあたりが,ファイルシステムに関連している.
- LinuxのKernel 2.2以前(RedHatなら6.x以前)では,2GBを越える単一ファイルに対応していない.
- この制限は頻繁に見られる良くある現象.(動画編集とかしていると)
- 今回テストしたのは,RedHat 7.2で稼働するOracle8i 8.1.7なので,単一ファイルに対応していてもおかしくないはず.
- と言う事で,ファイルシステムのマウント情報を確認してみる.
[oracle@poweredge oracle]$ cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/sda1 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
[oracle@poweredge oracle]$
|
- ext3を使って居るみたい.
- ちなみに,ext2でもテラバイトに対応しているそうな.
3.解決方法
- 2048MBの制限を越えられないと言う事で,それより1MB小さいサイズで作ってみる.
SQL> create tablespace "TEST"
2 logging
3 datafile '/opt/oracle/oradata/testedbz/TEST.dbf'
4 size 2047M
5 extent management local
6 ;
Tablespace created.
SQL>
|
4.何故にこのようになるのか
- RedHat Linux 7.2上のマシンで行っても2GBのファイルを越えられない制限がでている.
- これは,使っているOracleが8.1.7だからと考えられる.
- つまり,Oracle8i 8.1.7は,本来はKernel2.x用にビルドされたものだから.
- Kernel 2.4ディストリビューションの上で稼働させるには,互換パッケージを導入しなければならない事からも裏がとれる.