Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA-01114: IO error writing block to file string (block # string)

redologgerApr 4 2012 — edited Apr 9 2012
hi guys

just want to understand this ORA-error ...
ORA-01114: IO error writing block to file string (block # string) 

Cause: The device on which the file resides is probably offline. If the file is a temporary file, 
then it is also possible that the device has run out of space. 
This could happen because disk space of temporary files is not necessarily allocated at file creation time.
Can someone share some light what does it mean by
>
This could happen because disk space of temporary files is not necessarily allocated at file creation time.

>

I got some infor after searching the forum

some mention:

>
Other people have seen this error and it seems to happen when tempfiles are created (but not allocated by the O/S) and they come up against filesystem limits when they try to extend

SQL> !ls -l /*/oradata/ods/temp*dbf
-rw-rw---- 1 oracle oracle 17179885568 Mar 4 15:18 /e00/oradata/ods/temp_01.dbf
-rw-rw---- 1 oracle oracle 17179885568 Mar 4 15:39 /e01/oradata/ods/temp_02.dbf
-rw-rw---- 1 oracle oracle 17179885568 Mar 4 15:31 /n02/oradata/ods/temp_04.dbf
-rw-rw---- 1 oracle oracle 17179885568 Mar 4 15:31 /n03/oradata/ods/temp_03.dbf
SQL> !du -sk /*/oradata/ods/temp*dbf
13089416 /e00/oradata/ods/temp_01.dbf
13110940 /e01/oradata/ods/temp_02.dbf
13098640 /n02/oradata/ods/temp_04.dbf
13093640 /n03/oradata/ods/temp_03.dbf
SQL> !df -h /n03
Filesystem Size Used Avail Use% Mounted on
/dev/sde1 256G 254G 0 100% /n03

So the tempfile on /n03 is 16GB, but has only allocated 13GB. When it tries to actually allocate the additional 3GB, it will fail because /n03 is full.

So a better solution is to preallocate the files, using dd or mkfile (Solaris), I think.

You can:

SQL> ALTER DATABASE TEMPFILE '/n03/oradata/ods/temp_03.dbf' DROP INCLUDING DATAFILES;
Database altered.
SQL> ! dd if=/dev/zero of=/e06/oradata/ods/temp_03.dbf bs=1M count=16384
16384+0 records in
16384+0 records out
SQL> ALTER TABLESPACE temp ADD TEMPFILE '/e06/oradata/ods/temp_03.dbf' size 16g reuse;


>

what do u mean by

>
So the tempfile on /n03 is 16GB, but has only allocated 13GB
>
>
So a better solution is to preallocate the files, using dd or mkfile
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 7 2012
Added on Apr 4 2012
7 comments
11,584 views