Fractured block during buffer read [message #531716] |
Thu, 17 November 2011 07:48 |
|
jackypilou
Messages: 7 Registered: October 2011
|
Junior Member |
|
|
Hello all,
I am in charge of several instances located on a Linux server CentOS, virtualized on a ESX 3.5 environment.
From time to time (every 4 to 5 days), I have some errors in the alert.log. Last occurence was last night :
Corrupt block relative dba: 0x01004e12 (file 4, block 19986)
Fractured block found during buffer read
Data in bad block:
type: 6 format: 2 rdba: 0x01004e12
last change scn: 0x0000.131aaa5b seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x00000006
check value in block header: 0x9f16
computed block checksum: 0xd3f5
Reread of rdba: 0x01004e12 (file 4, block 19986) found same corrupted data
ORA-01578: ORACLE data block corrupted (file # 4, block # 19986)
ORA-01110: data file 4: '/u01/app/oracle/oradata/aaaaa.dbf'
*** 2011-11-17 01:03:02.483
GATHER_STATS_JOB: GATHER_TABLE_STATS('"owner"','"table"','""', ...)
ORA-01578: ORACLE data block corrupted (file # 4, block # 19986)
ORA-01110: data file 4: '/u01/app/oracle/oradata/aaaaa.dbf'
We are doing user manual backup (with BEGIN/END BACKUP) every night at 8PM, ending at 9PM approx.
Then, fractured blocks never occur during backups.
At 1AM, the maintenance window is opening, thus explaining the GATHER_STATS_JOB job.
When I check corruption on early morning, I am always unable to reproduce the problem. DBV is OK without issues.
We never had a problem with the data itself, whatever it is a table or an index in the reported failed block.
I would like to know what could cause these logical corruption, and how to stop them ?
Thx in advance
|
|
|
|
|
|
|
|
Re: Fractured block during buffer read [message #531889 is a reply to message #531785] |
Fri, 18 November 2011 05:39 |
|
jackypilou
Messages: 7 Registered: October 2011
|
Junior Member |
|
|
I thought again about my issue, and I still do not understand how 2 oracle processes, that basically know Oracle block size is 8k, can write only some parts of a block.
The only thing I could imagine is an external process is using system IO and touching some blocks in the datafile.
Is that correct ?
Can asyncIO, directIO have any influence on fractured blocks ? in which ways ?
Thx
[Updated on: Fri, 18 November 2011 05:40] Report message to a moderator
|
|
|
Re: Fractured block during buffer read [message #531896 is a reply to message #531889] |
Fri, 18 November 2011 06:01 |
|
Michel Cadot
Messages: 68729 Registered: March 2007 Location: Saint-Maur, France, https...
|
Senior Member Account Moderator |
|
|
Here's a case:
- process 1 send an 1 out of 2 IO to write an Oracle block.
- IO 1 is on-going, process 1 is swap from CPU.
- process 2 send an 1 out of 2 IO to write the same Oracle block.
- IO 1 is on-going, process 2 is swap from CPU.
- IO 1 of process 1 is over, process 1 is eligible to CPU.
- IO 1 of process 2 is over, process 1 is eligible to CPU.
- Process 2 is selected to CPU and send the second IO.
- IO 2 of process 2 is on-going, process 2 is swap from CPU.
- Process 1 is selected to CPU and send its second IO.
...
At the end, the beginning of the Oracle block is from process 2 and the end from process 1.
Regards
Michel
|
|
|