Oracle Database SQL Certified Associate
1 Introduction to SQL
1-1 Overview of SQL
1-2 History of SQL
1-3 SQL Standards
2 SQL Data Types
2-1 Numeric Data Types
2-2 Character Data Types
2-3 Date and Time Data Types
2-4 Large Object (LOB) Data Types
2-5 Miscellaneous Data Types
3 Creating and Managing Tables
3-1 Creating Tables
3-2 Modifying Tables
3-3 Dropping Tables
3-4 Table Constraints
3-5 Temporary Tables
4 Data Manipulation Language (DML)
4-1 Inserting Data
4-2 Updating Data
4-3 Deleting Data
4-4 Selecting Data
4-5 Using Subqueries
5 Data Control Language (DCL)
5-1 Granting Privileges
5-2 Revoking Privileges
6 Data Definition Language (DDL)
6-1 Creating Tables
6-2 Altering Tables
6-3 Dropping Tables
6-4 Creating Indexes
6-5 Dropping Indexes
6-6 Creating Views
6-7 Dropping Views
7 SQL Functions
7-1 Single-Row Functions
7-2 Aggregate Functions
7-3 Group Functions
7-4 Analytical Functions
8 Joins and Subqueries
8-1 Inner Joins
8-2 Outer Joins
8-3 Self-Joins
8-4 Cross Joins
8-5 Subqueries
9 Set Operators
9-1 UNION
9-2 UNION ALL
9-3 INTERSECT
9-4 MINUS
10 Grouping and Aggregation
10-1 GROUP BY Clause
10-2 HAVING Clause
10-3 ROLLUP and CUBE
10-4 GROUPING SETS
11 Transactions and Concurrency
11-1 Transaction Control Statements
11-2 Locking and Concurrency
11-3 Isolation Levels
12 Oracle SQL Developer
12-1 Overview of Oracle SQL Developer
12-2 Using SQL Worksheet
12-3 Managing Connections
12-4 Running Scripts
13 Advanced SQL Topics
13-1 Recursive Queries
13-2 Model Clause
13-3 PIVOT and UNPIVOT
13-4 Flashback Query
14 Performance Tuning
14-1 Query Optimization
14-2 Indexing Strategies
14-3 Analyzing Query Performance
15 Security and Auditing
15-1 User Management
15-2 Role Management
15-3 Auditing SQL Statements
16 Backup and Recovery
16-1 Backup Strategies
16-2 Recovery Strategies
16-3 Using RMAN
17 Oracle Database Architecture
17-1 Overview of Oracle Database Architecture
17-2 Memory Structures
17-3 Process Structures
17-4 Storage Structures
18 PLSQL Basics
18-1 Introduction to PLSQL
18-2 PLSQL Block Structure
18-3 Variables and Data Types
18-4 Control Structures
18-5 Exception Handling
19 Oracle SQL Certification Exam Preparation
19-1 Exam Objectives
19-2 Sample Questions
19-3 Practice Tests
19-4 Exam Tips
Flashback Query in Oracle SQL

Flashback Query in Oracle SQL

Key Concepts

Flashback Query is a powerful feature in Oracle SQL that allows users to query data as it existed at a specific point in the past. This feature is invaluable for auditing, troubleshooting, and data recovery. Understanding the following key concepts is essential for effectively using Flashback Query:

1. AS OF SCN

The AS OF SCN clause allows you to query data as it existed at a specific System Change Number (SCN). An SCN is a timestamp used by Oracle to track changes in the database.

Example:

To query data as it existed at SCN 123456:

SELECT * FROM Employees AS OF SCN 123456;

2. AS OF TIMESTAMP

The AS OF TIMESTAMP clause allows you to query data as it existed at a specific point in time. This is useful when you need to retrieve data from a specific date and time.

Example:

To query data as it existed on January 1, 2023, at 10:00 AM:

SELECT * FROM Employees AS OF TIMESTAMP TO_TIMESTAMP('2023-01-01-10:00:00', 'YYYY-MM-DD HH24:MI:SS');

3. VERSIONS BETWEEN

The VERSIONS BETWEEN clause allows you to query data across a range of SCNs or timestamps. This is useful for comparing data changes over a period.

Example:

To query data changes between SCN 123456 and SCN 234567:

SELECT * FROM Employees VERSIONS BETWEEN SCN 123456 AND 234567;

4. VERSIONS QUERY

The VERSIONS query provides detailed information about the versions of rows that existed within a specified time range. This includes the SCN, operation type, and other metadata.

Example:

To query versions of rows between two timestamps:

SELECT VERSIONS_STARTSCN, VERSIONS_ENDSCN, VERSIONS_OPERATION, * FROM Employees VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2023-01-01-10:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2023-01-01-11:00:00', 'YYYY-MM-DD HH24:MI:SS');

5. Flashback Data Archive

The Flashback Data Archive (FDA) is a feature that stores historical data for a specified retention period. This allows for more granular and long-term flashback queries.

Example:

To query data from the Flashback Data Archive:

SELECT * FROM Employees AS OF TIMESTAMP TO_TIMESTAMP('2023-01-01-10:00:00', 'YYYY-MM-DD HH24:MI:SS') FLASHBACK ARCHIVE my_archive;

6. Flashback Transaction Query

The Flashback Transaction Query allows you to query the details of transactions that have been committed. This includes the operations performed, the SCN, and the affected rows.

Example:

To query the details of a transaction:

SELECT * FROM FLASHBACK_TRANSACTION_QUERY WHERE XID = '01020304';

7. Flashback Table

The Flashback Table feature allows you to restore a table to a previous state. This is useful for recovering from accidental data changes or deletions.

Example:

To flashback a table to a specific timestamp:

FLASHBACK TABLE Employees TO TIMESTAMP TO_TIMESTAMP('2023-01-01-10:00:00', 'YYYY-MM-DD HH24:MI:SS');

8. Flashback Drop

The Flashback Drop feature allows you to recover a table that has been dropped. Oracle stores dropped tables in the recycle bin, from which they can be restored.

Example:

To flashback a dropped table:

FLASHBACK TABLE Employees TO BEFORE DROP;

9. Flashback Database

The Flashback Database feature allows you to restore the entire database to a previous point in time. This is useful for recovering from catastrophic failures.

Example:

To flashback the database to a specific SCN:

FLASHBACK DATABASE TO SCN 123456;

10. Flashback Query Limitations

Flashback Query has certain limitations, such as the retention period for undo data and the need for sufficient undo tablespace. Understanding these limitations is crucial for effective use.

Example:

Ensure that the undo tablespace is large enough to retain data for the required period:

ALTER TABLESPACE UNDO_TBS ADD DATAFILE '/u01/app/oracle/oradata/ORCL/undo02.dbf' SIZE 1G;

11. Flashback Query Best Practices

Best practices for using Flashback Query include regularly monitoring undo tablespace usage, setting appropriate retention policies, and testing flashback capabilities.

Example:

Set a retention policy for undo data:

ALTER SYSTEM SET UNDO_RETENTION = 86400;

12. Flashback Query Use Cases

Flashback Query is used in various scenarios, including auditing data changes, troubleshooting application issues, and recovering from accidental data modifications.

Example:

Auditing data changes:

SELECT * FROM Employees VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2023-01-01-10:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2023-01-01-11:00:00', 'YYYY-MM-DD HH24:MI:SS');

13. Flashback Query and Data Guard

Flashback Query can be used in conjunction with Oracle Data Guard to provide high availability and disaster recovery solutions. This allows for seamless data recovery in case of primary database failure.

Example:

Flashback query on a standby database:

SELECT * FROM Employees AS OF TIMESTAMP TO_TIMESTAMP('2023-01-01-10:00:00', 'YYYY-MM-DD HH24:MI:SS') AT STANDBY;