UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

ORA-27044: unable to write the header block of file

ORA-27044: unable to write the header block of file


0.改訂履歴

  • 2002.10.12 新規作成

1.はじめに

 このドキュメントでは,ORA-27044エラーの概要を説明する.

 なお,使用している環境は,Oracle8i 8.1.7.4.0 on Redhat 7.2である.

2.エラーを検証する

  • SQL*PlusでOracleに接続する.
[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ディストリビューションの上で稼働させるには,互換パッケージを導入しなければならない事からも裏がとれる.


広告スペース
Google