Oracle Flashback Technologies - Introduction
In his May 29th 2014 blog, my colleague Joe Meeks introduced Oracle Maximum Availability Architecture (MAA) and discussed both planned and unplanned outages. Let’s take a closer look at unplanned outages. These can be caused by physical failures (e.g., server, storage, network, file deletion, physical corruption, site failures) or by logical failures – cases where all components and files are physically available, but data is incorrect or corrupt. These logical failures are usually caused by human errors or application logic errors. This blog series focuses on these logical errors – what causes them and how to address and recover from them using Oracle Database Flashback.
In this introductory blog post, I’ll provide an overview of the Oracle Database Flashback technologies and will discuss the features in detail in future blog posts. Let’s get started.
We are all human beings (unless a machine is reading this), and making mistakes is a part of what we do…often what we do best! We “fat finger”, we spill drinks on keyboards, unplug the wrong cables, etc. In addition, many of us, in our lives as DBAs or developers, must have observed, caused, or corrected one or more of the following unpleasant events:
- Accidentally updated a table with wrong values !!
- Performed a batch update that went wrong - due to logical errors in the code !!
- Dropped a table !!
How do DBAs typically recover from these types of errors? First, data needs to be restored and recovered to the point-in-time when the error occurred (incomplete or point-in-time recovery). Moreover, depending on the type of fault, it’s possible that some services – or even the entire database – would have to be taken down during the recovery process.
Apart from error conditions, there are other questions that need to be addressed as part of the investigation. For example, what did the data look like in the morning, prior to the error? What were the various changes to the row(s) between two timestamps? Who performed the transaction and how can it be reversed?
Oracle Database includes built-in Flashback technologies, with features that address these challenges and questions, and enable you to perform faster, easier, and convenient recovery from logical corruptions.
Flashback Query, the first Flashback Technology, was introduced in Oracle 9i. It provides a simple, powerful and completely non-disruptive mechanism for data verification and recovery from logical errors, and enables users to view the state of data at a previous point in time.
Flashback Technologies were further enhanced in Oracle 10g, to provide fast, easy recovery at the database, table, row, and even at a transaction level.
Oracle Database 11g introduced an innovative method to manage and query long-term historical data with Flashback Data Archive. The 11g release also introduced Flashback Transaction, which provides an easy, one-step operation to back out a transaction. Oracle Database versions 184.108.40.206 and beyond further enhanced the performance of these features. Note that all the features listed here work without requiring any kind of restore operation.
In addition, Flashback features are fully supported with the new multi-tenant capabilities introduced with Oracle Database 12c,
Oracle Flashback Database enables point-in-time-recovery of the entire database without requiring a traditional restore and recovery operation. It rewinds the entire database to a specified point in time in the past by undoing all the changes that were made since that time.
Oracle Flashback Table enables an entire table or a set of tables to be recovered to a point in time in the past.
Oracle Flashback Drop enables accidentally dropped tables and all dependent objects to be restored.
Oracle Flashback Query enables data to be viewed at a point-in-time in the past. This feature can be used to view and reconstruct data that was lost due to unintentional change(s) or deletion(s). This feature can also be used to build self-service error correction into applications, empowering end-users to undo and correct their errors.
Oracle Flashback Version Query offers the ability to query the historical changes to data between two points in time or system change numbers (SCN)
Oracle Flashback Transaction Query enables changes to be examined at the transaction level. This capability can be used to diagnose problems, perform analysis, audit transactions, and even revert the transaction by undoing SQL
Oracle Flashback Transaction is a procedure used to back-out a transaction and its dependent transactions.
Flashback technologies eliminate the need for a traditional restore and recovery process to fix logical corruptions or make enquiries. Using these technologies, you can recover from the error in the same amount of time it took to generate the error. All the Flashback features can be accessed either via SQL command line (or) via Enterprise Manager.
Most of the Flashback technologies depend on the available UNDO to retrieve older data. The following table describes the various Flashback technologies: their purpose, dependencies and situations where each individual technology can be used.
Example Syntax Error investigation related:
The purpose is to investigate what went wrong and what the values were at certain points in time
Flashback Queries ( select .. as of SCN | Timestamp
- Helps to see the value of a row/set of rows at a point in time
Flashback Version Queries ( select .. versions between SCN | Timestamp and SCN | Timestamp
- Helps determine how the value evolved between certain SCNs or between timestamps
Flashback Transaction Queries (select .. XID=
- Helps to understand how the transaction caused the changes.Error correction related:
The purpose is to fix the error and correct the problems,
Flashback Table (flashback table .. to SCN | Timestamp
- To rewind the table to a particular timestamp or SCN to reverse unwanted updates
Flashback Drop (flashback table .. to before drop
- To undrop or undelete a table
Flashback Database (flashback database to SCN | Restore Point
- This is the rewind button for Oracle databases. You can revert the entire database to a particular point in time. It is a fast way to perform a PITR (point-in-time recovery).
Flashback Transaction (DBMS_FLASHBACK.TRANSACTION_BACKOUT(XID..)
- To reverse a transaction and its related transactions
Advanced use cases
Flashback technology is integrated into Oracle Recovery Manager (RMAN) and Oracle Data Guard. So, apart from the basic use cases mentioned above, the following use cases are addressed using Oracle Flashback.
- Block Media recovery by RMAN - to perform block level recovery
- Snapshot Standby - where the standby is temporarily converted to a read/write environment for testing, backup, or migration purposes
- Re-instate old primary in a Data Guard environment – this avoids the need to restore an old backup and perform a recovery to make it a new standby.
- Guaranteed Restore Points - to bring back the entire database to an older point-in-time in a guaranteed way.
and so on..
I hope this introductory overview helps you understand how Flashback features can be used to investigate and recover from logical errors. As mentioned earlier, I will take a deeper-dive into to some of the critical Flashback features in my upcoming blogs and address common use cases.