We have processes that run within Informatica that perform transformations on data using SQL. An error occurred tonight that is now causing our workflows to fail. I've pulled this information from the log file:
---START LOG---
Severity Timestamp Node Thread Message Code Message
ERROR 2/26/2009 10:06:14 PM node01_odwepp00 LKPDP_7:READER_1_1 RR_4035 SQL Error [
ORA-01114: IO error writing block to file %s (block # %s)
Database driver error...
Function Name : Execute
SQL Stmt : SELECT OCCURRENCE_NUMBER,PRODUCT_ACCOUNT_ID,PRCMP_CODE FROM PRD_ACCT_CMP ORDER BY PRODUCT_ACCOUNT_ID,PRCMP_CODE,OCCURRENCE_NUMBER
Oracle Fatal Error].
---END LOG---
I've been doing some research on other boards, including this one, and it seems the ORA-01114 error means one of two things: not enough temporary space is available to run the query and/or the server is down.
The server is not down as I am able to log in/out, run queries outside of the tool, etc. Also, within this statement (ORA-01114: IO error writing block to file %s (block # %s)) it should give me a file_id for the tablespace it's using. Other examples I have seen where this statement looks like this:
ORA-01114: IO error writing block to file 4 (block # 123456)
This statement specifically says 'file 4' but the error message we are getting says 'file %s' What does that mean exactly and how can I translate that back to the name/id of the tablespace it's trying to use?
The version of Oracle that is being used is 9i.
This is a bug.
The workaround is as mentioned by FVER - create a new temp tablespace and drop the old one.
You can also investigate the location of the bad block so:
SELECT tablespace_name, segment_type, owner, segment_name FROM dba_extents
WHERE file_id = 4
and block_id = 123456;
Very often the wrong blocks are in index.
If it is so recreate the index.