|
oracle 工程师的分析处理过程。
Problem Description:
====================
You are attempting to start your database and receive the following
error:
ORA-03113: end-of-file on communication channel
Cause: An unexpected end-of-file was processed on the communication
channel. The problem could not be handled by the SQL*Net,
two task,
software. This message could occur if the shadow two-task
process
associated with a SQL*Net connect has terminated abnormally,
or if
there is a physical failure of the interprocess
communication
vehicle, that is, the network or server machine went down.
Action: If this message occurs during a connection attempt, check
the setup
files for the appropriate SQL*net driver and confirm SQL*Net
software is correctly installed on the server. If the
message
occurs after a connection is well established, and the error
is not
due to a physical failure, check if a trace file was
generated on
the server at failure time. Existence of a trace file may
suggest
an Oracle internal error that requires the assistance of
customer
support.
The database is mounting, but fails to open with ORA-3113 "end-of-file
on
communication channel".
The following errors are reported in the alert log:
Rolling back half complete log switch of thread 1.
Instance terminating with error 204.
Instance terminated by LGWR.
If you execute select * from "v$log_history" with the database mounted
you
recieve these errors:
ORA-00204: error in reading (block 4244119, # blocks 1) of controlfile
Cause: A disk read-failure occurred while attempting to read the
specified
control file.
The block location of the failure is given.
Action: Check that the disk is online.
If it is not, bring it online and shut down and restart
Oracle.
If the disk is online, then look for operating system
reasons for
Oracle's inability to read the disk or control file.
Refer to the <Oracle7 Server Administrator's Guide> for
information
about recovering from the loss of a control file.
See also your operating system-specific Oracle
documentation.
ORA-00202: controlfile: '/oradata/SID/control01.ctl'
Cause: This message reports the name of the file involved in other
messages.
Action: See the associated messages for a description of the
problem.
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
Cause: internal error, the range of blocks being read or written is
outside the range of the file, additional information
indicates the
starting block number, number of blocks in I/O, and the last
valid
block in the file
Action: check for trace file and contact Oracle Support
Solution Description:
=====================
1. Edit the "init<SID>.ora" file and add the parameter
CONTROL_FILE_RECORD_KEEP_TIME = 0
2. Mount instance: startup mount
3. Execute alter database backup controlfile to trace
4. Edit the generated trace and make necessary changes
5. Recreate control file
6. Startup the database
or
Workaround:
Change the value of MAXLOGHISTORY to something smaller than UB2MAXVAL
(which is usually 65,535), and repeat the operation.
Explanation:
============
The MAXLOGHISTORY section of the control file has been extended to its
maximum
size of 65535 entries, specified when the database was created, and
cannot be
extended further. Also, none of the existing log history entries are
eligible
for reuse because the "init<SID>.ora" parameter
CONTROL_FILE_RECORD_KEEP_TIME > 0.
The default value for CONTROL_FILE_RECORD_KEEP_TIME = 7 (days), so you
will
receive these errors if you generate more than 65535 redo logs within a
7 day
period.
Per <Bug:886406> - CREATE DATABASE AND CREATE CONTROLFILE DON'T ENFORCE
LIMITS ON MAXLOGHISTORY, fixed in 8.1.6
-->> The max value for this parameter is 65535.
The SQL statements CREATE DATABASE and CREATE CONTROLFILE did not
properly
enforce limits on the MAXLOGHISTORY parameter.
It was possible to get a control file whose MAXLOGHISTORY section was
smaller
than the requested size; or even to get a corrupted control file that
would
cause LGWR and the instance to crash.
Recreating the control file will clean the LOG HISTORY section of the
control
file, and setting CONTROL_FILE_RECORD_KEEP_TIME = 0 in the
"init<SID>.ora" file
will prevent the error from happening again. Log history entries will
be
reused as they are needed with no keep time restrictions. |
|