Re: What is the purpose of segment level checkpoint before DROP/TRUNCATE of a table?

  • From: "Jonathan Lewis" <jonathan@xxxxxxxxxxxxxxxxxx>
  • To: <saibabu_d@xxxxxxxxx>, "free" <oracle-l@xxxxxxxxxxxxx>
  • Date: Thu, 7 Jul 2011 06:24:39 +0100


Sai,

I started writing a long complicated note to see if I could show why there ought to be no problems with the standby and primary being out of synch at this point - but it got too complicated because it was trying to cover too many options. So I'd like to do this the other way round, since you may already have worked this out. Can you supply the detailed sequence of events where it matters - I can't but my model may be missing something that you know about.

Regards

Jonathan Lewis
http://jonathanlewis.wordpress.com


----- Original Message ----- From: "Saibabu Devabhaktuni" <saibabu_d@xxxxxxxxx>
To: "free" <oracle-l@xxxxxxxxxxxxx>
Sent: Wednesday, July 06, 2011 10:33 PM
Subject: Re: What is the purpose of segment level checkpoint before DROP/TRUNCATE of a table?
writes.

=> Yes redo gets applied on the physical standby, but the dirty blocks which
were marked as *not to write* on the primary can get flushed out to disk with
all the dirty changes on the standby before "*not to write* redo is applied on
the standby, causing blocks not matching with primary at binary level. If there was higher level checkpoint (datafile or system level) happened at the same time
"TRUNCATE" operation is marking dirty blocks as *not to write* and instance
crashing before "TRUNCATE" operation is fully completed; it can introduce
logical corruption. Even though oracle can fix it if they wanted to, but why?
The whole concept of physical standby and primary not matching at binary level
can introduce code regression in other areas. I think it does not worth all this for improving infrequent "TRUNCATE or DROP" operations to perform little faster.


=> If there was a rollover of flashback logs (and higher level checkpoint)
happening at the same time dirty blocks being marked as *not to write* and
flashing back the database to right before the completion of "TRUNCATE"
operation, then there is a possibility of logical corruption.


--
//www.freelists.org/webpage/oracle-l


Other related posts: