ioerr & ORA-00257

iotk-explain-oracle-error.php is a facility that helps to provide substantive documentation for common Oracle errors that you might encounter while using IOTK. It was added to the framework because of the often abstract or unrelated messages given by Oracle’s error reporting facility oerr.

For example, if you receive an ORA-00257 error you can execute the following Oracle command:

oerr ora 257

oerr will produce the following documentation:

00257, 00000, "archiver error. Connect internal only, until freed."
// *Cause:  The archiver process received an error while trying to archive
//       a redo log.  If the problem is not resolved soon, the database
//       will stop executing transactions. The most likely cause of this
//       message is the destination device is out of space to store the
//       redo log file.
// *Action:  Check archiver trace file for a detailed description
//        of the problem. Also verify that the
//       device specified in the initialization parameter
//       ARCHIVE_LOG_DEST is set up properly for archiving.

Instead of executing oerr to get a description of the issue, you can execute IOTK’s ioerr using the same command line parameters passed to oerr:

ioerr ora 257

Will produce the following documentation:

ORA-257
-------

Oracle's (oerr ora 257) official description:
archiver error. Connect internal only, until freed.

PROBLEM DESCRIPTION
-------------------

Attempts to service requests by querying or making transactions against Oracle
produce the following error:

exception 'ut_Oracle_Error' with message '
==================================================
Array
(
     => 257
    [message] => ORA-00257: archiver error. Connect internal only, until freed.
    [offset] => 0
    [sqltext] =>
)
==================================================

As a result of this issue, Oracle is essentially useless for retrieving or
manipulating data.

RESOLUTION
----------

o Log into Oracle as sysdba by executing the following as the oracle user:

    sqlplus / as sysdba

o Execute this command at the SQL*Plus prompt:

    SQL> show parameter db_recovery

  (Note, "SQL>" is the SQL*Plus prompt.)

o You should see something like the following:

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest                string      /path/to/flash_recovery_area
    db_recovery_file_dest_size           big integer 2G

o Exit SQL*Plus and execute:

    df -k

o You need to determine if the path set for "db_recovery_file_dest" (in this
  case "/path/to/flash_recovery_area") is 100% full.  If so, Oracle can no
  longer write archive logs.  If the disk is full you need to free up space.

o If the disk is not full you most likely need to increase the amount of space
  Oracle is allowed to use for archive logs, defined by "db_recovery_file_dest
  _size".  In this case, the value is set to "2G" or 2 gigabytes.  Oracle might
  need more than 2 gigs for archive logs.  You need to increase this.

o Log into Oracle as sysdba by executing the following as the oracle user:

    sqlplus / as sysdba

o Execute the following:

    SQL> alter system set db_recovery_file_dest_size = 5g;

  (In this case, I'm increasing "db_recovery_file_dest_size" from 2 gigs to
   5 gigs thus giving Oracle 3 more gigs to use for archive logs.)

o When this completes successfully you should see:

    System altered.

o Next, execute the following:

    SQL> alter system switch logfile;

o When this completes successfully you should see:

    System altered.

The system should be recovered.

In total, documentation is provided for 21 errors ranging from issues with straightforward solutions (like this one) to more complex issues with solutions requiring code changes or upgrades of Oracle.

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

Gravatar
WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.