From 18c Onwards, we can enable Lost write protection for data blocks which occurs when an I/O subsystem acknowledges the completion of the block write even though the write did not occur or when a former image of the block overwrites the current image.
We can enable the Shadow Lost Write protection at Database, Tablespace, DataFile level for which a shadow tablespace is required. As per documentation,
When a tracked data block is read from disk, shadow lost write protection can detect a lost write by comparing the SCN for the block in the shadow tablespace with the SCN of the most recent write in the block being read. If the shadow entry has an SCN greater than the data block being read, then a lost write has occurred. When a lost write is detected, an error is returned.
First create a tablespace to track the data blocks reads.
CREATE BIGFILE TABLESPACE SHDW_LP DATAFILE 'shadow_protection.dbf' SIZE 10M LOST WRITE PROTECTION;
Enable Lost Protection at database level
ALTER DATABASE ENABLE LOST WRITE PROTECTION;
Enable Lost Protection for pluggable database Level
ALTER PLUGGABLE DATABASE ENABLE LOST WRITE PROTECTION;
Enable Lost Protection at tablespace level
ALTER TABLESPACE tbsu1 ENABLE LOST WRITE PROTECTION;
Enable Lost Protection at Datafile Level
ALTER DATABASE DATAFILE 'dfile1.df' ENABLE LOST WRITE PROTECTION;
Enable Lost protection at specific pluggable database datafile level
ALTER PLUGGABLE DATABASE DATAFILE 'dfile2.df' ENABLE LOST WRITE PROTECTION;
As such the SCN are compared and when you have load intensive databases running, anticipate some overhead with this. I really did not tested this one.
Thanks
Suresh
Follow Me!!!