Hi All,
Recently One of my clients started getting above error which was reported in the alert log of the standby database. The excerpt of alert log is as shown below
Fri Oct 5 10:41:57 2007
Media Recovery Waiting for thread 1 seq# 5943 (in transit)
Media Recovery Log /u04/oracle/oradata/archive/1_5943.dbf
Media Recovery Log /u04/oracle/oradata/archive/1_5944.dbf
Media Recovery Log /u04/oracle/oradata/archive/1_5945.dbf
Fri Oct 5 10:43:37 2007
Media Recovery Waiting for thread 1 seq# 5946
Media Recovery Log /u04/oracle/oradata/archive/1_5946.dbf
Media Recovery Log /u04/oracle/oradata/archive/1_5947.dbf
Fri Oct 5 10:45:03 2007
Errors in file /home/oracle/admin/IMCLDBBU/bdump/imcldbbu_arc0_30373.trc:
ORA-07445: exception encountered: core dump [kcfsmpoll()+60] [SIGSEGV] [Address not mapped to object] [0x0000000A8] [] []
Fri Oct 5 10:45:03 2007
Errors in file /home/oracle/admin/IMCLDBBU/bdump/imcldbbu__30365.trc:
ORA-07445: exception encountered: core dump [kcfsmpoll()+60] [SIGSEGV] [Address not mapped to object] [0x0000000A8] [] []
Fri Oct 5 10:45:04 2007
Errors in file /home/oracle/admin/IMCLDBBU/bdump/imcldbbu__30355.trc:
ORA-07445: exception encountered: core dump [kcfsmpoll()+60] [SIGSEGV] [Address not mapped to object] [0x0000000A8] [] []
Fri Oct 5 10:45:04 2007
Errors in file /home/oracle/admin/IMCLDBBU/bdump/imcldbbu__30365.trc:
ORA-07445: exception encountered: core dump [<0x96533340>] [SIGSEGV] [Invalid permissions for mapped object] [0x096533340] [] []
ORA-07445: exception encountered: core dump [kcfsmpoll()+60] [SIGSEGV] [Address not mapped to object] [0x0000000A8] [] []
Fri Oct 5 10:45:06 2007
Errors in file /home/oracle/admin/IMCLDBBU/bdump/imcldbbu__30353.trc:
ORA-07445: exception encountered: core dump [kcffca()+8] [SIGSEGV] [Address not mapped to object] [0x000000000] [] []
Fri Oct 5 10:45:06 2007
On further observing the alert log I observed the following
Media Recovery Log /u04/oracle/oradata/archive/1_5903.dbf
Hex dump of Absolute File 14, Block 1612406 in trace file /home/oracle/admin/IMCLDBBU/bdump/imcldbbu_mrp0_30383.trc
***
Corrupt block relative dba: 0x03989a76 (file 14, block 1612406)
Bad header found during media/instance recovery
Data in bad block -
type: 80 format: 7 rdba: 0x0a002c53
last change scn: 0×3527.360dc405 seq: 0×4 flg: 0xc3
consistency value in tail: 0x6c6f4320
check value in block header: 0×2843, block checksum disabled
spare1: 0×52, spare2: 0×54, spare3: 0x20f
***
Reread of rdba: 0x03989a76 (file 14, block 1612406) found same corrupted data
Hex dump of Absolute File 14, Block 1612405 in trace file /home/oracle/admin/IMCLDBBU/bdump/imcldbbu_mrp0_30383.trc
***
Corrupt block relative dba: 0x03989a75 (file 14, block 1612405)
Bad header found during media/instance recovery
Data in bad block -
type: 8 format: 0 rdba: 0x45534d0a
last change scn: 0×5459.4e4f5354 seq: 0×56 flg: 0x2c
consistency value in tail: 0x5345455a
check value in block header: 0xa01, computed block checksum: 0x675f
spare1: 0×33, spare2: 0×32, spare3: 0xc405
***
Reread of rdba: 0x03989a75 (file 14, block 1612405) found same corrupted data
Media Recovery Log /u04/oracle/oradata/archive/1_5904.dbf
Media Recovery Log /u04/oracle/oradata/archive/1_5905.dbf
Fri Oct 5 09:44:51 2007
The above lines clearly show that datafile 14 has corrupt blocks and this was the main reason for getting the above ora-7445.
Due to above corruptions when the database was tried to put in recovery mode the instance was automatically getting terminated giving end of communication file error as shown
SQL> startup nomount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area 2686421760 bytes
Fixed Size 744192 bytes
Variable Size 1358954496 bytes
Database Buffers 1325400064 bytes
Redo Buffers 1323008 bytes
SQL> alter database mount standby database;
Database altered.
SQL> alter database recover managed standby database disconnect from session;
ora-3113: end of communication file error
Hence the solution to above problem is basically recreating the Standby database by taking the fresh cold backup from production server and restoring on standby and putting the database in recovery mode. The above solution is feasible provided the production database has not got any corruption. To check for corruption use db verify utility and run it on all files of the production database.If corruption is detected on production database also then u need to contact oracle support service to salvage the data