|
ORA-27072 skgfdisp: I/O エラーが発生しました。
ORA-27072 skgfdisp: I/O エラーが発生しました。
0.更新履歴
1.エラー内容
- 既存のテーブルスペースに,データファイルを追加しようとした.
SQL> ALTER TABLESPACE data
2 ADD DATAFILE '/data02.dbf'
3 SIZE 1000M
4 ;
ALTER TABLESPACE data
*
ERROR at line 1:
ORA-19502: write error on file "/data02.dbf", blockno 60033
(blocksize=8192)
ORA-27072: skgfdisp: I/O error
Linux Error: 9: Bad file descriptor
Additional information: 60033
SQL>
|
- 60033ブロック目を書こうとして,エラーとなっている. ブロックサイズが8192byteなので,491,782,144Bbyteまでは書き込めた模様.
2.原因
- ディスクの空き容量がなかったのでファイルを作成できなかった.
[oracle8i@BillG /]$ df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sdb1 8815372 8193832 8193832 100% /
/dev/sda1 521748 5896 489348 1% /boot
/dev/sda6 1011928 10456 950068 1% /var
[oracle8i@BillG /BillG]$ ls -la *.dbf
-rw-r----- 1 oracle8i oinstall 314580992 Jun 6 06:38 rbs01.dbf
-rw-r----- 1 oracle8i oinstall 371204096 Jun 7 13:30 system01.dbf
-rw-r----- 1 oracle8i oinstall 1614815232 Jun 7 11:40 data01.dbf
-rw-r----- 1 oracle8i oinstall 491782144 Jun 7 12:59 data02.dbf
-rw-r----- 1 oracle8i oinstall 536879104 Jun 6 06:38 index01.dbf
-rw-r----- 1 oracle8i oinstall 104865792 Jun 6 06:38 temp01.dbf
-rw-r----- 1 oracle8i oinstall 12591104 Jun 7 11:57 tools01.dbf
[oracle8i@BillG /]$
|
- 失敗しているが,データファイルが中途半端な形で残っている.(1000MB作成のところを,約500MBで終了している)
3.対処
- 中途半端なデータファイルがOracleから認識されているか確認する.
- テーブルスペースの空き容量が依然と変わりないことを確認している.
- テーブルスペースDATAを構成しているデータファイルの一覧を表示する.
SQL> select sum(bytes) from dba_free_space
2 where tablespace_name = 'DATA';
SUM(BYTES)
----------
4186112
SQL> select file_id,tablespace_name,file_name from dba_data_files
2 where tablespace_name = 'DATA';
FILE_ID
----------
TABLESPACE_NAME
--------------------------------------------------------------------------------
FILE_NAME
--------------------------------------------------------------------------------
3
TALOT_BillG_DATA
/data01.dbf
SQL>
|
- 表示結果から,新規追加しようとしていたデータファイルは使われていないことがわかる.
- 作成に失敗したファイルを削除して,改めてデータファイルを作成する.
SQL> !! rm /data02.dbf
SQL> ALTER TABLESPACE data
2 ADD DATAFILE '/data02.dbf'
3 SIZE 300M;
Tablespace altered.
SQL> select file_id,tablespace_name,file_name from dba_data_files
2 where tablespace_name = 'DATA';
FILE_ID
----------
TABLESPACE_NAME
--------------------------------------------------------------------------------
FILE_NAME
--------------------------------------------------------------------------------
3
TALOT_BillG_DATA
/data01.dbf
7
TALOT_BillG_DATA
/data02.dbf
FILE_ID
----------
TABLESPACE_NAME
--------------------------------------------------------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SQL> select sum(bytes) from dba_free_space
2 where tablespace_name = 'DATA';
SUM(BYTES)
----------
318750720
SQL>
|
- データファイルを追加した後,テーブルスペースにその領域が認識されているか,データファイル名と空き領域で確認している.
|
|