The detection of block corruption involves using multiple diagnostic logs to identify that corruption has occurred. These methods include monitoring and reading the log files from the operating system, application, and database level. If audit functions are enabled at the operating system level, these audit logs can be reviewed as well.
System logs vary for each operating system:
In a Windows environment, the Event Viewer shows the contents of the system log. The Event Viewer is evoked by choosing Control Panel Administrative Tools Computer Management.
In a Unix environment, the SYSLOG file contains the system log events. This is a file located in /var/adm/syslog in many Unix environments.
Application logs can vary for each application that is installed. You need to read your application administrator's guide to determine the location of these logs. In most cases, these logs indicate that there is a problem with a process or procedure in the application. The application logs don't often give detailed information about block corruption, but they are a good starting point.
Database logs and trace file references are located in the ALERT.LOG file and the associated trace files in the UDUMP or BDUMP directories. The ALERT.LOG often indicates that there is a problem at a high level. Then a trace file is spawned off in the UDUMP or BDUMP directory, which provides detail about the ALERT.LOG entry. The trace files provide the most detail about the corruption problems.
The following is an example of a trace file created in the UDUMP directory:
Dump file c:oracleadminora101udumpora101_ora_2236.trc Fri Nov 16 16:21:35 2004 ORACLE V10.1.0.2.0 - Production vsnsta=0 *** 2004.11.16.15.53.02.000
*** SESSION ID:(11.9) 2004.05.08.11.51.09.000 kdbchk: row locked by non-existent transaction table=0" slot=0 lockid=44" ktbbhitc=l Block header dump: 0x01800005 Object id on Block? Y seg/obj: 0xb6d csc: 0x00.1cf5f itc: 1 fig: - typ: 1 - USERS fsl: 0 fnx: 0x0 ver: 0x01 Itl Xid Uba Flag Lck Scn/Fsc 0x01 xid: 0x0003.011.00000151 uba: 0x008018fb.0645.0d --U- 4 fsc 0x0000.OOOlcf60 data_block_dump =============== tsiz: 0x6b8 hsiz: 0x18 pbl: 0x38088044 bdba: 0x01800008 flag=----------- ntab=l nrow=5
As you can see, detecting block corruption is a detailed process of monitoring system, application, and database output. This can be a time-consuming process. If possible, monitoring of the ALERT.LOG file should be performed on a daily basis. Many times, you can use operating system capabilities to perform a string search for Oracle errors and send these to you automatically. In the next few sections, you will use Oracle utilities to detect block corruption. You will look for block corruption in a specific table, and you will learn how to bypass these corrupt blocks.