Skip to main content

Oracle RMAN Point-in-Time Recovery (PITR)

Oracle RMAN Point-in-Time Recovery

Introduction

Point-in-Time Recovery (PITR) is an Oracle RMAN recovery technique used to recover a database to a specific point in time, SCN, or log sequence. It is particularly useful when unwanted changes, accidental data deletion, or logical corruption occurs and the database needs to be restored to a known consistent state before the incident.

In this article, we will demonstrate how to perform an RMAN Point-in-Time Recovery using database backups, incremental backups, archived redo logs, and the control file. We will restore the database to a specific point in time and verify the database after recovery.

PITR Scenario

For this demonstration, we have an Oracle database named CDBORCL. We will first take an RMAN Level 0 backup followed by Level 1 incremental backups, archived redo log backups, and control file backups.

After taking the required backups, we will perform additional INSERT and UPDATE operations on a sample table. We will then identify a specific recovery point using the database SCN and timestamp.

In this demonstration, we will perform an RMAN backup-based database duplication to create a duplicate database from the available RMAN backups. The duplicate database will then be used to demonstrate Point-in-Time Recovery (PITR) to the required recovery point.

RMAN SET UNTIL Clause

The SET UNTIL clause is used to specify the target recovery point during RMAN recovery. The recovery can be performed based on time, SCN, or archived redo log sequence.

1. UNTIL TIME

Recovers the database up to a specified date and time.

SET UNTIL TIME "TO_DATE('01-JAN-2026 00:00:00',
                         'DD-MON-YYYY HH24:MI:SS')";

2. UNTIL SCN

Recovers the database up to a specific System Change Number (SCN).

SET UNTIL SCN 1234567;

This is useful when the exact SCN corresponding to the required recovery point is known.

3. UNTIL SEQUENCE

Recovers the database up to a specified archived redo log sequence number.

SET UNTIL SEQUENCE 100;

In a RAC environment, the redo thread can also be specified:

SET UNTIL SEQUENCE 100 THREAD 1;

Summary

Option Purpose
SET UNTIL TIME Recover to a specific date and time
SET UNTIL SCN Recover to a specific SCN
SET UNTIL SEQUENCE Recover up to a specific archived redo log sequence

Prerequisites

  • A valid RMAN backup.
  • An uninterrupted sequence of archived redo logs (or their RMAN backups) spanning from the time of the full backup up to the target recovery time.

Environment Used in This Guide

These are the source and target databases used throughout this walkthrough. Swap them for your own hostnames and database names, just keep the same values consistent across every step below.

Source Database
Hostname orcl.oraeasy.com
Database Name CDBORCL
Database Version 26ai (23.26)

Target Database
Hostname orcldev.oraeasy.com
Database Name ORCLDEV
Database Version 26ai (23.26)

Step 1: Create a Test User and Table at the Source

We create a small table at the source database so we have a simple way to confirm the data made it across after PITR completes.


SQL> def
DEFINE _DATE           = "10-AUG-26" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "cdborcl" (CHAR)
DEFINE _USER           = "SYS" (CHAR)
DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "2326010000" (CHAR)
DEFINE _EDITOR         = "vi" (CHAR)
DEFINE _O_VERSION      = "Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0" (CHAR)
DEFINE _O_RELEASE      = "2326010000" (CHAR)
SQL>
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDBORCL                        READ WRITE NO
SQL>
SQL> alter session set container=PDBORCL;

Session altered.

SQL> create user test identified by your@password;

User created.

SQL> grant connect,resource to test;

Grant succeeded.

SQL> alter user test quota unlimited on users;

User altered.

SQL> conn test@pdborcl
Enter password:
Connected.
SQL>

SQL> show user
USER is "TEST"
SQL>
SQL> CREATE TABLE employees (
    emp_id      NUMBER,
    emp_name    VARCHAR2(50),
    department  VARCHAR2(50),
    salary      NUMBER
);  

Table created.

SQL> INSERT INTO employees VALUES (101, 'Rahul', 'IT', 50000);

1 row created.

SQL> INSERT INTO employees VALUES (102, 'Amit', 'HR', 45000);

1 row created.

SQL> INSERT INTO employees VALUES (103, 'Priya', 'Finance', 55000);

1 row created.

SQL> COMMIT;

Commit complete.

SQL> SELECT * FROM employees;

    EMP_ID EMP_NAME      DEPARTMENT         SALARY
---------- ------------- -------------- ----------
       101 Rahul         IT                  50000
       102 Amit          HR                  45000
       103 Priya         Finance             55000

SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
10-AUG-2026 09:03:08

SQL>

Step 2: Create Directories for Backups

Separate directories for the L0 baseline and each L1 incremental keep the backup pieces organized by level, which makes it much easier to identify what needs transferring to the target later and in what order they need to be applied during recovery.

 
[oracle@orcl ~]$ mkdir -p /u01/app2/oracle/rman/L0
[oracle@orcl ~]$ mkdir -p /u01/app2/oracle/rman/L1_1
[oracle@orcl ~]$ mkdir -p /u01/app2/oracle/rman/L1_2
[oracle@orcl ~]$ mkdir -p /u01/app2/oracle/rman/L1_3

Step 3: Take the L0 Backup

The L0 backup is effectively a full database backup, and it serves as the baseline that every later incremental will be applied on top of during recovery. Alongside the datafiles, we also back up all archived logs and the current control file, since a complete recovery set needs all three.

 
[oracle@orcl ~]$ rman target /

Recovery Manager: Release 23.26.1.0.0 - Production on Mon Aug 10 09:12:27 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2026, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CDBORCL (DBID=3216361938)

RMAN>
RMAN> report schema;
report schema;
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name CDBORCL

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    1500     SYSTEM               YES     /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymt4wnr_.dbf
3    1000     SYSAUX               NO      /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymt8k0t_.dbf
4    750      UNDOTBS1             YES     /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
5    650      PDB$SEED:SYSTEM      NO      /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymwog0k_.dbf
6    610      PDB$SEED:SYSAUX      NO      /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymwog10_.dbf
7    5        USERS                NO      /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_users_nymtb90b_.dbf
8    245      PDB$SEED:UNDOTBS1    NO      /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymwog17_.dbf
9    650      PDBORCL:SYSTEM       YES     /u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
10   680      PDBORCL:SYSAUX       NO      /u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
11   245      PDBORCL:UNDOTBS1     YES     /u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
12   5        PDBORCL:USERS        NO      /u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
13   1024     PDBORCL:TEST1        NO      /u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
14   500      PDBORCL:TEST_TDE     NO      /u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    221      TEMP                 32767       /u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_temp_nymtf5mn_.tmp
2    211      PDB$SEED:TEMP        32767       /u01/app/oracle/oradata/CDBORCL/datafile/temp012026-04-23_15-52-27-082-PM.dbf
3    211      PDBORCL:TEMP         32767       /u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_temp_nymz5r3k_.dbf

RMAN>

RMAN> RUN {
    ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
    BACKUP AS BACKUPSET
        INCREMENTAL LEVEL 0
        DATABASE
        FORMAT '/u01/app2/oracle/rman/L0/db_L0_%U.bkp';

    BACKUP AS BACKUPSET
        ARCHIVELOG ALL
        FORMAT '/u01/app2/oracle/rman/L0/arch_%U.bkp';

    BACKUP CURRENT CONTROLFILE
        FORMAT '/u01/app2/oracle/rman/L0/controlfile_%U.bkp';

    RELEASE CHANNEL c1;
        RELEASE CHANNEL c2;
}
RUN {
2>     ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
3>     ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
4>     BACKUP AS BACKUPSET
5>         INCREMENTAL LEVEL 0
6>         DATABASE
7>         FORMAT '/u01/app2/oracle/rman/L0/db_L0_%U.bkp';
8>
9>     BACKUP AS BACKUPSET
10>         ARCHIVELOG ALL
11>         FORMAT '/u01/app2/oracle/rman/L0/arch_%U.bkp';
12>
13>     BACKUP CURRENT CONTROLFILE
14>         FORMAT '/u01/app2/oracle/rman/L0/controlfile_%U.bkp';
15>
16>     RELEASE CHANNEL c1;
17>     RELEASE CHANNEL c2;
18>
}
allocated channel: c1
channel c1: SID=292 device type=DISK

allocated channel: c2
channel c2: SID=71 device type=DISK

Starting backup at 10-AUG-26
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymt4wnr_.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting incremental level 0 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymt8k0t_.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_users_nymtb90b_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/db_L0_0er5ii4j_14_1_1.bkp tag=TAG20260810T091250 comment=NONE
channel c2: backup set complete, elapsed time: 00:01:45
channel c2: starting incremental level 0 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00013 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
input datafile file number=00014 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/db_L0_0f89ii7v_15_1_1.bkp tag=TAG20260810T091250 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:15
channel c2: starting incremental level 0 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
input datafile file number=00012 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/db_L0_0dr5ii4i_13_1_1.bkp tag=TAG20260810T091250 comment=NONE
channel c1: backup set complete, elapsed time: 00:02:42
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymwog10_.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymwog17_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/db_L0_0htaii9k_17_1_1.bkp tag=TAG20260810T091250 comment=NONE
channel c1: backup set complete, elapsed time: 00:01:16
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00005 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymwog0k_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/db_L0_0go9ii8g_16_1_1.bkp tag=TAG20260810T091250 comment=NONE
channel c2: backup set complete, elapsed time: 00:01:52
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/db_L0_0j8diic0_19_1_1.bkp tag=TAG20260810T091250 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:25
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
current log archived
channel c1: starting archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=66 RECID=53 STAMP=1240909715
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=71 RECID=57 STAMP=1240909716
input archived log thread=1 sequence=72 RECID=58 STAMP=1240909718
input archived log thread=1 sequence=73 RECID=59 STAMP=1240910241
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/arch_0lbeiid3_21_1_1.bkp tag=TAG20260810T091721 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=67 RECID=52 STAMP=1240909715
input archived log thread=1 sequence=68 RECID=54 STAMP=1240909716
input archived log thread=1 sequence=69 RECID=55 STAMP=1240909716
input archived log thread=1 sequence=70 RECID=56 STAMP=1240909716
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/arch_0mdeiid5_22_1_1.bkp tag=TAG20260810T091721 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/arch_0kaeiid2_20_1_1.bkp tag=TAG20260810T091721 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:10
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L0/controlfile_0nqeiide_23_1_1.bkp tag=TAG20260810T091733 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 10-AUG-26

Starting Control File and SPFILE Autobackup at 10-AUG-26
piece handle=/u01/app/oracle/fast_recovery_area/CDBORCL/autobackup/2026_08_10/o1_mf_s_1240910260_o7llgwj4_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-AUG-26

released channel: c1

released channel: c2

RMAN>

Step 4: Add Some Data to the Table

Adding a few records and noting the exact timing gives us a known checkpoint for the data changes that happened after the L0 backup but before the first L1, useful later for confirming exactly which changes each incremental backup actually captured.

  
SQL> show user
USER is "TEST"
SQL>
SQL> INSERT INTO employees VALUES (104, 'Neha', 'IT', 60000);

1 row created.

SQL> INSERT INTO employees VALUES (105, 'Rohit', 'Sales', 48000);

1 row created.

SQL> UPDATE employees
     SET salary = 55000
     WHERE emp_id = 101; 
    
1 row updated.

SQL> UPDATE employees
     SET department = 'Finance'
     WHERE emp_id = 102; 

1 row updated.

SQL> commit;

Commit complete.

SQL> SELECT * FROM employees ORDER BY emp_id;

    EMP_ID EMP_NAME      DEPARTMENT        SALARY
---------- ------------- ------------- ----------
       101 Rahul         IT                 55000
       102 Amit          Finance            45000
       103 Priya         Finance            55000
       104 Neha          IT                 60000
       105 Rohit         Sales              48000

SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
10-AUG-2026 10:33:41

SQL>

Step 5: Take the First L1 Backup

By default, an incremental level 1 backup in RMAN is differential, meaning it only backs up blocks that changed since the last incremental backup at level 1 or level 0, whichever is more recent. That's why the output below shows several datafiles being skipped as unchanged, they haven't been touched since the L0, so there's nothing new to capture yet.


RMAN> RUN {
    ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

    BACKUP AS BACKUPSET
        INCREMENTAL LEVEL 1
        DATABASE
        FORMAT '/u01/app2/oracle/rman/L1_1/db_L1_%U.bkp';
        
    BACKUP AS BACKUPSET
        ARCHIVELOG ALL
        FORMAT '/u01/app2/oracle/rman/L1_1/arch_%U.bkp';

    BACKUP CURRENT CONTROLFILE
        FORMAT '/u01/app2/oracle/rman/L1_1/controlfile_%U.bkp';
    
    RELEASE CHANNEL c1;
    RELEASE CHANNEL c2;
}
RUN {
2>     ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
3>     ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
4>
5>     BACKUP AS BACKUPSET
6>         INCREMENTAL LEVEL 1
7>         DATABASE
8>         FORMAT '/u01/app2/oracle/rman/L1_1/db_L1_%U.bkp';
9>
10>     BACKUP AS BACKUPSET
11>         ARCHIVELOG ALL
12>         FORMAT '/u01/app2/oracle/rman/L1_1/arch_%U.bkp';
13>
14>     BACKUP CURRENT CONTROLFILE
15>         FORMAT '/u01/app2/oracle/rman/L1_1/controlfile_%U.bkp';
16>
17>     RELEASE CHANNEL c1;
18>     RELEASE CHANNEL c2;
19>
}
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=301 device type=DISK

allocated channel: c2
channel c2: SID=60 device type=DISK

Starting backup at 10-AUG-26
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymt4wnr_.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymt8k0t_.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_users_nymtb90b_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/db_L1_0pb0nmv3_25_1_1.bkp tag=TAG20260810T103515 comment=NONE
channel c1: backup set complete, elapsed time: 00:01:05
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00013 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
input datafile file number=00014 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/db_L1_0qb0nmv3_26_1_1.bkp tag=TAG20260810T103515 comment=NONE
channel c2: backup set complete, elapsed time: 00:01:05
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
input datafile file number=00012 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/db_L1_0rc2nn14_27_1_1.bkp tag=TAG20260810T103515 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:08
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymwog10_.dbf
skipping datafile 00006 because it has not changed
input datafile file number=00008 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymwog17_.dbf
skipping datafile 00008 because it has not changed
channel c1: backup cancelled because all files were skipped
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00005 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymwog0k_.dbf
skipping datafile 00005 because it has not changed
channel c1: backup cancelled because all files were skipped
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/db_L1_0sd2nn15_28_1_1.bkp tag=TAG20260810T103515 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:36
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
current log archived
channel c1: starting archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=66 RECID=53 STAMP=1240909715
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=74 RECID=60 STAMP=1240911138
input archived log thread=1 sequence=75 RECID=61 STAMP=1240912038
input archived log thread=1 sequence=76 RECID=62 STAMP=1240912938
input archived log thread=1 sequence=77 RECID=63 STAMP=1240913836
input archived log thread=1 sequence=78 RECID=64 STAMP=1240914737
input archived log thread=1 sequence=79 RECID=65 STAMP=1240915018
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/arch_10j3nn2b_32_1_1.bkp tag=TAG20260810T103658 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:03
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=67 RECID=52 STAMP=1240909715
input archived log thread=1 sequence=68 RECID=54 STAMP=1240909716
input archived log thread=1 sequence=69 RECID=55 STAMP=1240909716
input archived log thread=1 sequence=70 RECID=56 STAMP=1240909716
input archived log thread=1 sequence=71 RECID=57 STAMP=1240909716
input archived log thread=1 sequence=72 RECID=58 STAMP=1240909718
input archived log thread=1 sequence=73 RECID=59 STAMP=1240910241
channel c2: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/arch_0vj3nn2b_31_1_1.bkp tag=TAG20260810T103658 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:04
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/arch_11n3nn2f_33_1_1.bkp tag=TAG20260810T103658 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_1/controlfile_12s3nn2h_34_1_1.bkp tag=TAG20260810T103705 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 10-AUG-26

Starting Control File and SPFILE Autobackup at 10-AUG-26
piece handle=/u01/app/oracle/fast_recovery_area/CDBORCL/autobackup/2026_08_10/o1_mf_s_1240915030_o7lq3ykx_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-AUG-26

released channel: c1

released channel: c2

RMAN>

Step 6: Make More Changes to the Table

Adding and updating more rows here creates the next block of changes, this is exactly what the second L1 backup will capture, giving us another distinct, identifiable checkpoint in the data's history.


SQL> show user
USER is "TEST"
SQL>

SQL> INSERT INTO employees VALUES (106, 'Sneha', 'HR', 52000);

1 row created.

SQL> INSERT INTO employees VALUES (107, 'Vikas', 'Finance', 58000);

1 row created.

SQL> commit;

Commit complete.

SQL> set lines 333 pages 333
SQL> UPDATE employees SET salary = salary + 5000
     WHERE department = 'IT'; 

2 rows updated.

SQL> commit;

Commit complete.

SQL> select * from employees order by 1;

    EMP_ID EMP_NAME        DEPARTMENT         SALARY
---------- --------------- -------------- ----------
       101 Rahul           IT                  60000
       102 Amit            Finance             45000
       103 Priya           Finance             55000
       104 Neha            IT                  65000
       105 Rohit           Sales               48000
       106 Sneha           HR                  52000
       107 Vikas           Finance             58000

7 rows selected.

SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
10-AUG-2026 11:30:00

Step 7: Take the Second L1 Backup

This incremental captures everything changed since the first L1, cumulatively, so recovering through this point only needs the L0 plus these two L1 backups, not every individual change in between.


RMAN> RUN {
    ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

    BACKUP AS BACKUPSET
        INCREMENTAL LEVEL 1
        DATABASE
        FORMAT '/u01/app2/oracle/rman/L1_2/db_L1_%U.bkp';

    BACKUP AS BACKUPSET
        ARCHIVELOG ALL
        FORMAT '/u01/app2/oracle/rman/L1_2/arch_%U.bkp';

    BACKUP CURRENT CONTROLFILE
        FORMAT '/u01/app2/oracle/rman/L1_2/controlfile_%U.bkp';

    RELEASE CHANNEL c1;
        RELEASE CHANNEL c2;
}
RUN {
2>     ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
3>     ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
4>
5>     BACKUP AS BACKUPSET
6>         INCREMENTAL LEVEL 1
7>         DATABASE
8>         FORMAT '/u01/app2/oracle/rman/L1_2/db_L1_%U.bkp';
9>
10>     BACKUP AS BACKUPSET
11>         ARCHIVELOG ALL
12>         FORMAT '/u01/app2/oracle/rman/L1_2/arch_%U.bkp';
13>
14>     BACKUP CURRENT CONTROLFILE
15>         FORMAT '/u01/app2/oracle/rman/L1_2/controlfile_%U.bkp';
16>
17>     RELEASE CHANNEL c1;
18>     RELEASE CHANNEL c2;
19>
}
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=324 device type=DISK

allocated channel: c2
channel c2: SID=63 device type=DISK

Starting backup at 10-AUG-26
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymt4wnr_.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymt8k0t_.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_users_nymtb90b_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/db_L1_14m8qq7e_36_1_1.bkp tag=TAG20260810T113053 comment=NONE
channel c1: backup set complete, elapsed time: 00:01:05
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00013 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
input datafile file number=00014 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/db_L1_15m8qq7e_37_1_1.bkp tag=TAG20260810T113053 comment=NONE
channel c2: backup set complete, elapsed time: 00:01:06
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
input datafile file number=00012 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/db_L1_16oaqq9f_38_1_1.bkp tag=TAG20260810T113053 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:07
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymwog10_.dbf
skipping datafile 00006 because it has not changed
input datafile file number=00008 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymwog17_.dbf
skipping datafile 00008 because it has not changed
channel c1: backup cancelled because all files were skipped
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00005 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymwog0k_.dbf
skipping datafile 00005 because it has not changed
channel c1: backup cancelled because all files were skipped
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/db_L1_17oaqq9g_39_1_1.bkp tag=TAG20260810T113053 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:36
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
current log archived
channel c1: starting archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=66 RECID=53 STAMP=1240909715
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=76 RECID=62 STAMP=1240912938
input archived log thread=1 sequence=77 RECID=63 STAMP=1240913836
input archived log thread=1 sequence=78 RECID=64 STAMP=1240914737
input archived log thread=1 sequence=79 RECID=65 STAMP=1240915018
input archived log thread=1 sequence=80 RECID=66 STAMP=1240915918
input archived log thread=1 sequence=81 RECID=67 STAMP=1240916819
input archived log thread=1 sequence=82 RECID=68 STAMP=1240917718
input archived log thread=1 sequence=83 RECID=69 STAMP=1240918359
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/arch_1b0cqqao_43_1_1.bkp tag=TAG20260810T113239 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=67 RECID=52 STAMP=1240909715
input archived log thread=1 sequence=68 RECID=54 STAMP=1240909716
input archived log thread=1 sequence=69 RECID=55 STAMP=1240909716
input archived log thread=1 sequence=70 RECID=56 STAMP=1240909716
input archived log thread=1 sequence=71 RECID=57 STAMP=1240909716
input archived log thread=1 sequence=72 RECID=58 STAMP=1240909718
input archived log thread=1 sequence=73 RECID=59 STAMP=1240910241
input archived log thread=1 sequence=74 RECID=60 STAMP=1240911138
input archived log thread=1 sequence=75 RECID=61 STAMP=1240912038
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/arch_1c1cqqap_44_1_1.bkp tag=TAG20260810T113239 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/arch_1avbqqan_42_1_1.bkp tag=TAG20260810T113239 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:05
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_2/controlfile_1d9cqqau_45_1_1.bkp tag=TAG20260810T113246 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 10-AUG-26

Starting Control File and SPFILE Autobackup at 10-AUG-26
piece handle=/u01/app/oracle/fast_recovery_area/CDBORCL/autobackup/2026_08_10/o1_mf_s_1240918370_o7ltdcno_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-AUG-26

released channel: c1

released channel: c2

RMAN>

Step 8: Mark the Point in Time for Recovery

We update the table one more time and capture both the SCN and the human-readable timestamp at this exact moment, this is the actual target we'll recover to later. Capturing both matters: RMAN's SET UNTIL TIME clause needs the timestamp format, while the SCN gives an exact, unambiguous marker to cross-check against once the duplicate database is verified.


SQL> UPDATE employees
     SET salary = salary + 2000
     WHERE department = 'Finance';

3 rows updated.

SQL> COMMIT;

Commit complete.

SQL> select * from employees order by 1;

    EMP_ID EMP_NAME       DEPARTMENT         SALARY
---------- -------------- -------------- ----------
       101 Rahul          IT                  60000
       102 Amit           Finance             47000
       103 Priya          Finance             57000
       104 Neha           IT                  65000
       105 Rohit          Sales               48000
       106 Sneha          HR                  52000
       107 Vikas          Finance             60000

7 rows selected.

SQL> conn / as sysdba

Connected.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDBORCL                        READ WRITE NO
SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    3934360

SQL> select sysdate from dual;

SYSDATE
--------------------    
10-AUG-2026 12:19:24

SQL> select scn_to_timestamp(3934360) from dual;

SCN_TO_TIMESTAMP(3934360)
---------------------------------------------------------------------------
10-AUG-26 12.19.14.000000000 PM

SQL>

We will do our recovery till 10-AUG-2026 12:19:24.

Step 9: Simulate Further, Unwanted Changes

Now we add and change more data in the table. These changes represent the "unwanted" activity that happened after our target recovery point, exactly the kind of thing PITR is meant to undo. Since we'll compare against this state after recovery, seeing these later rows and updates absent from the recovered database is the clearest proof that PITR worked correctly.


SQL> show user
USER is "TEST"
SQL>
SQL> INSERT INTO employees VALUES (108, 'Anjali', 'IT', 65000);

1 row created.

SQL> UPDATE employees
     SET department = 'Management',
     salary = 70000
     WHERE emp_id = 103; 

1 row updated.

SQL> commit;

Commit complete.

SQL> select * from employees order by 1;

    EMP_ID EMP_NAME       DEPARTMENT           SALARY
---------- -------------- ---------------- ----------
       101 Rahul          IT                    60000
       102 Amit           Finance               47000
       103 Priya          Management            70000
       104 Neha           IT                    65000
       105 Rohit          Sales                 48000
       106 Sneha          HR                    52000
       107 Vikas          Finance               60000
       108 Anjali         IT                    65000

8 rows selected.

SQL> conn /as sysdba
Connected.
SQL>
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDBORCL                        READ WRITE NO
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    3939320

SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
10-AUG-2026 12:46:36

SQL>
SQL> select scn_to_timestamp(3939320) from dual;

SCN_TO_TIMESTAMP(3939320)
---------------------------------------------------------------------------
10-AUG-26 12.45.56.000000000 PM

SQL>

Step 10: Take the Third L1 Backup

This final incremental captures the redo needed to cover the entire window since the second L1, including both our target recovery point from Step 8 and the unwanted changes from Step 9. Having this backup in place means we have everything necessary to recover to any point within that window, not just the exact target time.


RMAN> RUN {
    ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

    BACKUP AS BACKUPSET
        INCREMENTAL LEVEL 1
        DATABASE
        FORMAT '/u01/app2/oracle/rman/L1_3/db_L1_%U.bkp';

    BACKUP AS BACKUPSET
        ARCHIVELOG ALL
        FORMAT '/u01/app2/oracle/rman/L1_3/arch_%U.bkp';

    BACKUP CURRENT CONTROLFILE
        FORMAT '/u01/app2/oracle/rman/L1_3/controlfile_%U.bkp';

   RELEASE CHANNEL c1;
   RELEASE CHANNEL c2;
}
RUN {
2>     ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
3>     ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
4>
5>     BACKUP AS BACKUPSET
6>         INCREMENTAL LEVEL 1
7>         DATABASE
8>         FORMAT '/u01/app2/oracle/rman/L1_3/db_L1_%U.bkp';
9>
10>     BACKUP AS BACKUPSET
11>         ARCHIVELOG ALL
12>         FORMAT '/u01/app2/oracle/rman/L1_3/arch_%U.bkp';
13>
14>     BACKUP CURRENT CONTROLFILE
15>         FORMAT '/u01/app2/oracle/rman/L1_3/controlfile_%U.bkp';
16>
17>    RELEASE CHANNEL c1;
18>    RELEASE CHANNEL c2;
19>
}
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=75 device type=DISK

allocated channel: c2
channel c2: SID=292 device type=DISK

Starting backup at 10-AUG-26
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymt4wnr_.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymt8k0t_.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_users_nymtb90b_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/db_L1_1g4quuos_48_1_1.bkp tag=TAG20260810T124827 comment=NONE
channel c2: backup set complete, elapsed time: 00:01:15
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00013 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
input datafile file number=00014 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
channel c2: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/db_L1_1f4quuos_47_1_1.bkp tag=TAG20260810T124827 comment=NONE
channel c1: backup set complete, elapsed time: 00:01:32
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
input datafile file number=00012 name=/u01/app/oracle/oradata/CDBORCL/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
channel c1: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/db_L1_1hhsuur8_49_1_1.bkp tag=TAG20260810T124827 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:15
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_sysaux_nymwog10_.dbf
skipping datafile 00006 because it has not changed
input datafile file number=00008 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_undotbs1_nymwog17_.dbf
skipping datafile 00008 because it has not changed
channel c2: backup cancelled because all files were skipped
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00005 name=/u01/app/oracle/oradata/CDBORCL/datafile/o1_mf_system_nymwog0k_.dbf
skipping datafile 00005 because it has not changed
channel c2: backup cancelled because all files were skipped
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/db_L1_1i0tuuro_50_1_1.bkp tag=TAG20260810T124827 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:56
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
current log archived
channel c1: starting archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=66 RECID=53 STAMP=1240909715
channel c1: starting piece 1 at 10-AUG-26
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=79 RECID=65 STAMP=1240915018
input archived log thread=1 sequence=80 RECID=66 STAMP=1240915918
input archived log thread=1 sequence=81 RECID=67 STAMP=1240916819
input archived log thread=1 sequence=82 RECID=68 STAMP=1240917718
input archived log thread=1 sequence=83 RECID=69 STAMP=1240918359
input archived log thread=1 sequence=84 RECID=70 STAMP=1240919255
input archived log thread=1 sequence=85 RECID=71 STAMP=1240920154
input archived log thread=1 sequence=86 RECID=72 STAMP=1240921053
input archived log thread=1 sequence=87 RECID=73 STAMP=1240921953
input archived log thread=1 sequence=88 RECID=74 STAMP=1240922854
input archived log thread=1 sequence=89 RECID=75 STAMP=1240923063
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/arch_1m2vuutq_54_1_1.bkp tag=TAG20260810T125104 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:07
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=67 RECID=52 STAMP=1240909715
input archived log thread=1 sequence=68 RECID=54 STAMP=1240909716
input archived log thread=1 sequence=69 RECID=55 STAMP=1240909716
input archived log thread=1 sequence=70 RECID=56 STAMP=1240909716
input archived log thread=1 sequence=71 RECID=57 STAMP=1240909716
input archived log thread=1 sequence=72 RECID=58 STAMP=1240909718
input archived log thread=1 sequence=73 RECID=59 STAMP=1240910241
input archived log thread=1 sequence=74 RECID=60 STAMP=1240911138
input archived log thread=1 sequence=75 RECID=61 STAMP=1240912038
input archived log thread=1 sequence=76 RECID=62 STAMP=1240912938
input archived log thread=1 sequence=77 RECID=63 STAMP=1240913836
input archived log thread=1 sequence=78 RECID=64 STAMP=1240914737
channel c2: starting piece 1 at 10-AUG-26
channel c2: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/arch_1ncvuuu3_55_1_1.bkp tag=TAG20260810T125104 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:03
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/arch_1l1vuutp_53_1_1.bkp tag=TAG20260810T125104 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:26
Finished backup at 10-AUG-26

Starting backup at 10-AUG-26
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 10-AUG-26
channel c1: finished piece 1 at 10-AUG-26
piece handle=/u01/app2/oracle/rman/L1_3/controlfile_1o50vuum_56_1_1.bkp tag=TAG20260810T125133 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 10-AUG-26

Starting Control File and SPFILE Autobackup at 10-AUG-26
piece handle=/u01/app/oracle/fast_recovery_area/CDBORCL/autobackup/2026_08_10/o1_mf_s_1240923103_o7lz08gs_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 10-AUG-26

released channel: c1

released channel: c2

RMAN>

Now assuming the application did some unwanted changes around 10-AUG-2026 12:19 PM, and they want the DBA to recover the database to that time on a separate instance. The given timing falls after the 2nd L1 and before the 3rd L1, so no single backup on its own can satisfy the requirement, this is exactly the scenario Point-in-Time Recovery is built for.

So now let's proceed with the recovery.

Step 11: Transfer the Backups to the Target

Since we'll use backup-based RMAN duplication rather than DUPLICATE ... FROM ACTIVE DATABASE, RMAN reads from backup pieces sitting on the target host itself rather than pulling live over the network from the source. Everything needs to be physically present on the target before the duplicate can run.


[oracle@orcl ~]$ cd /u01/app2/oracle/rman
[oracle@orcl rman]$ ls -lrth
total 16K
drwxr-xr-x. 2 oracle oinstall 4.0K Aug 10 09:17 L0
drwxr-xr-x. 2 oracle oinstall 4.0K Aug 10 10:37 L1_1
drwxr-xr-x. 2 oracle oinstall 4.0K Aug 10 11:32 L1_2
drwxr-xr-x. 2 oracle oinstall 4.0K Aug 10 12:51 L1_3
[oracle@orcl rman]$
[oracle@orcl rman]$ du -sh *
4.3G    L0
182M    L1_1
181M    L1_2
214M    L1_3
[oracle@orcl rman]$ scp -r * oracle@orcldev.oraeasy.com:/u01/app/oracle/rman
The authenticity of host 'orcldev.oraeasy.com (192.168.1.41)' can't be established.
ED25519 key fingerprint is SHA256:2CH2fx4xpcQBVTKO/W+6utc3T81pa7JcFmKngApPvDs.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? Yes
Warning: Permanently added 'orcldev.oraeasy.com' (ED25519) to the list of known hosts.
oracle@orcldev.oraeasy.com's password:
db_L0_0dr5ii4i_13_1_1.bkp                    100% 1343MB  19.9MB/s   01:07
db_L0_0er5ii4j_14_1_1.bkp                    100%  700MB   8.8MB/s   01:19
db_L0_0f89ii7v_15_1_1.bkp                    100% 4168KB   3.5MB/s   00:01
db_L0_0go9ii8g_16_1_1.bkp                    100% 1074MB   3.5MB/s   05:07
db_L0_0htaii9k_17_1_1.bkp                    100%  533MB  11.0MB/s   00:48
db_L0_0j8diic0_19_1_1.bkp                    100%  572MB  15.8MB/s   00:36
arch_0kaeiid2_20_1_1.bkp                     100%  136MB  27.2MB/s   00:04
arch_0lbeiid3_21_1_1.bkp                     100%  338KB   6.7MB/s   00:00
arch_0mdeiid5_22_1_1.bkp                     100%   68KB   9.5MB/s   00:00
controlfile_0nqeiide_23_1_1.bkp              100%   18MB  23.1MB/s   00:00
db_L1_0pb0nmv3_25_1_1.bkp                    100% 6224KB  22.8MB/s   00:00
db_L1_0qb0nmv3_26_1_1.bkp                    100% 9192KB  19.0MB/s   00:00
db_L1_0rc2nn14_27_1_1.bkp                    100%  352KB   1.3MB/s   00:00
db_L1_0sd2nn15_28_1_1.bkp                    100%  816KB   9.1MB/s   00:00
arch_0vj3nn2b_31_1_1.bkp                     100%  136MB  23.9MB/s   00:05
arch_10j3nn2b_32_1_1.bkp                     100%   11MB  24.4MB/s   00:00
arch_11n3nn2f_33_1_1.bkp                     100%  403KB   5.4MB/s   00:00
controlfile_12s3nn2h_34_1_1.bkp              100%   18MB  26.1MB/s   00:00
db_L1_14m8qq7e_36_1_1.bkp                    100% 3616KB   7.0MB/s   00:00
db_L1_15m8qq7e_37_1_1.bkp                    100% 6032KB  18.3MB/s   00:00
db_L1_16oaqq9f_38_1_1.bkp                    100%  336KB   3.6MB/s   00:00
db_L1_17oaqq9g_39_1_1.bkp                    100%  672KB  11.5MB/s   00:00
arch_1avbqqan_42_1_1.bkp                     100%  136MB  19.1MB/s   00:07
arch_1b0cqqao_43_1_1.bkp                     100%   10MB  17.9MB/s   00:00
arch_1c1cqqap_44_1_1.bkp                     100% 5964KB  16.0MB/s   00:00
controlfile_1d9cqqau_45_1_1.bkp              100%   18MB   8.4MB/s   00:02
db_L1_1f4quuos_47_1_1.bkp                    100% 3792KB   1.1MB/s   00:03
db_L1_1g4quuos_48_1_1.bkp                    100% 6680KB   3.8MB/s   00:01
db_L1_1hhsuur8_49_1_1.bkp                    100% 6368KB   8.1MB/s   00:00
db_L1_1i0tuuro_50_1_1.bkp                    100% 6760KB  17.9MB/s   00:00
arch_1l1vuutp_53_1_1.bkp                     100%  136MB  21.0MB/s   00:06
arch_1m2vuutq_54_1_1.bkp                     100%   25MB  21.5MB/s   00:01
arch_1ncvuuu3_55_1_1.bkp                     100%   11MB  18.9MB/s   00:00
controlfile_1o50vuum_56_1_1.bkp              100%   18MB  20.2MB/s   00:00
[oracle@orcl rman]$

Step 12: Create the Directories on the Target

These paths need to exist on the target before we start the instance, they match the locations we'll reference in the pfile parameters in the next step.


[oracle@orcldev ~]$ mkdir -p /u01/app/oracle/admin/ORCLDEV/adump
[oracle@orcldev ~]$ mkdir -p /u01/app/oracle/oradata/ORCLDEV/
[oracle@orcldev ~]$ mkdir -p /u01/app/oracle/fast_recovery_area/ORCLDEV

Step 13: Create the Password File and Pfile

orapwd creates the auxiliary instance's password file, needed since RMAN authenticates to the auxiliary as SYSDBA during the duplicate. In the pfile, DB_FILE_NAME_CONVERT and LOG_FILE_NAME_CONVERT handle translating the source database's file paths to the target's automatically during the duplicate, the same mechanism used when setting up a standby database.


[oracle@orcldev ~]$ . oraenv
ORACLE_SID = [oracle] ? orcldev
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/26ai/dbhome_1
The Oracle base has been set to /u01/app/oracle
[oracle@orcldev ~]$
[oracle@orcldev ~]$
[oracle@orcldev ~]$ orapwd file=/u01/app/oracle/26ai/dbhome_1/dbs/orapworcldev entries=15 password=sys format=12
[oracle@orcldev ~]$ ls -lrth /u01/app/oracle/26ai/dbhome_1/dbs/orapworcldev
-rw-r-----. 1 oracle oinstall 2.0K Aug 10 14:41 /u01/app/oracle/26ai/dbhome_1/dbs/orapworcldev
[oracle@orcldev ~]$ vi /u01/app/oracle/26ai/dbhome_1/dbs/initorcldev.ora
[oracle@orcldev ~]$ cat /u01/app/oracle/26ai/dbhome_1/dbs/initorcldev.ora
db_name=orcldev
db_block_size=8192
remote_login_passwordfile=EXCLUSIVE
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/CDBORCL/','/u01/app/oracle/oradata/ORCLDEV/'
LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/CDBORCL/','/u01/app/oracle/oradata/ORCLDEV/'
CONTROL_FILES='/u01/app/oracle/oradata/ORCLDEV/control01.ctl'
DB_RECOVERY_FILE_DEST_SIZE='15G'
DB_RECOVERY_FILE_DEST='/u01/app/oracle/fast_recovery_area/ORCLDEV'
enable_pluggable_database=true
[oracle@orcldev ~]$

Step 14: Start the Database Instance in Nomount State

Now we will start the database instance in nomount state with the created pfile. This is the essential step towards the backup-based RMAN duplication. Later we'll create the spfile and bounce the instance.


[oracle@orcldev ~]$ . oraenv
ORACLE_SID = [orcldev] ?
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/26ai/dbhome_1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@orcldev ~]$
[oracle@orcldev ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Mon Aug 10 14:45:51 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> def
DEFINE _DATE           = "10-AUG-26" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "orcldev" (CHAR)
DEFINE _USER           = "SYS" (CHAR)
DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "2326010000" (CHAR)
DEFINE _EDITOR         = "vi" (CHAR)
DEFINE _O_VERSION      = "" (CHAR)
DEFINE _O_RELEASE      = "" (CHAR)
SQL> startup nomount pfile='/u01/app/oracle/26ai/dbhome_1/dbs/initorcldev.ora';
ORACLE instance started.

Total System Global Area  344747248 bytes
Fixed Size                  5008624 bytes
Variable Size             297795584 bytes
Database Buffers           33554432 bytes
Redo Buffers                8388608 bytes
SQL>
SQL> create spfile from pfile='/u01/app/oracle/26ai/dbhome_1/dbs/initorcldev.ora';

File created.

SQL> shut immediate
ORA-01507: database not mounted
Help: https://docs.oracle.com/error-help/db/ora-01507/

ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area  344747248 bytes
Fixed Size                  5008624 bytes
Variable Size             297795584 bytes
Database Buffers           33554432 bytes
Redo Buffers                8388608 bytes
SQL>
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/26ai/dbhome_1/
                                                 dbs/spfileorcldev.ora
SQL>

SQL> exit

Step 15: Connect to the Target as Auxiliary in RMAN

RMAN's DUPLICATE command specifically requires an auxiliary connection, since the auxiliary is the instance actually being built. There's no target connection here at all, unlike an active-database duplicate, because backup-based duplication reads directly from the backup pieces already sitting on this host rather than from a live source database.


[oracle@orcldev ~]$ rman auxiliary /

Recovery Manager: Release 23.26.1.0.0 - Production on Mon Aug 10 14:50:47 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2026, Oracle and/or its affiliates.  All rights reserved.

connected to auxiliary database: ORCLDEV (not mounted)

RMAN>

Step 16: Execute the Recovery Script

Now we will execute the recovery script. In the script we will use SET UNTIL TIME for PITR.

RUN {
    -- Specify the point in time to which the database will be recovered.
    SET UNTIL TIME "TO_DATE('10-AUG-2026 12:19:14',
                             'DD-MON-YYYY HH24:MI:SS')";
    -- Perform a backup-based duplicate of the target database.
    DUPLICATE TARGET DATABASE TO ORCLDEV
    -- Specify the RMAN backup location.
    BACKUP LOCATION '/u01/app/oracle/rman'
    -- Do not check for filename conflicts.
    NOFILENAMECHECK;
}

SET UNTIL TIME scopes the DUPLICATE command that follows to stop recovery at exactly the timestamp captured back in Step 8. BACKUP LOCATION tells RMAN where on this host to scan for backup pieces, since there's no catalog or target connection to look them up automatically. NOFILENAMECHECK is necessary here because the source and target reused overlapping default file paths, you can see this reflected in the RMAN-05158 warnings about conflicting logfile names further down in the output below.


RMAN> RUN {
    SET UNTIL TIME "TO_DATE('10-AUG-2026 12:19:14','DD-MON-YYYY HH24:MI:SS')";
    DUPLICATE target DATABASE TO orcldev
    BACKUP LOCATION '/u01/app/oracle/rman'
    NOFILENAMECHECK;
   }
   RUN {
2>     SET UNTIL TIME "TO_DATE('10-AUG-2026 12:19:14','DD-MON-YYYY HH24:MI:SS')";
3>     DUPLICATE target DATABASE TO orcldev
4>     BACKUP LOCATION '/u01/app/oracle/rman'
5>     NOFILENAMECHECK;
6>
        }
executing command: SET until clause (TIME)

Starting Duplicate Db at 10-AUG-26
Starting Search Files at 10-AUG-26
Finished Search Files at 10-AUG-26
searching for database ID
found backup of database ID 3216361938

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''CDBORCL'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''orcldev'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile from  '/u01/app/oracle/rman/L1_2/controlfile_1d9cqqau_45_1_1.bkp';
   alter clone database mount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''CDBORCL'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''orcldev'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     344747248 bytes

Fixed Size                     5008624 bytes
Variable Size                297795584 bytes
Database Buffers              33554432 bytes
Redo Buffers                   8388608 bytes

Starting restore at 10-AUG-26
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=42 device type=DISK

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/ORCLDEV/control01.ctl
Finished restore at 10-AUG-26

database mounted
released channel: ORA_AUX_DISK_1
Starting Search Files at 10-AUG-26
Finished Search Files at 10-AUG-26
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=42 device type=DISK
RMAN-05158: WARNING: auxiliary (logfile) file name /u01/app/oracle/fast_recovery_area/CDBORCL/onlinelog/o1_mf_1_nymtd0d3_.log conflicts with a file used by the target database
RMAN-05158: WARNING: auxiliary (logfile) file name /u01/app/oracle/fast_recovery_area/CDBORCL/onlinelog/o1_mf_2_nymtd10g_.log conflicts with a file used by the target database
RMAN-05158: WARNING: auxiliary (logfile) file name /u01/app/oracle/fast_recovery_area/CDBORCL/onlinelog/o1_mf_3_nymtd26q_.log conflicts with a file used by the target database

contents of Memory Script:
{
   set until scn  3932350;
   set newname for datafile  1 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymt4wnr_.dbf";
   set newname for datafile  3 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf";
   set newname for datafile  4 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf";
   set newname for datafile  5 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymwog0k_.dbf";
   set newname for datafile  6 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymwog10_.dbf";
   set newname for datafile  7 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf";
   set newname for datafile  8 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymwog17_.dbf";
   set newname for datafile  9 to
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf";
   set newname for datafile  10 to
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf";
   set newname for datafile  11 to
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf";
   set newname for datafile  12 to
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf";
   set newname for datafile  13 to
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf";
   set newname for datafile  14 to
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf";
   restore
   clone database
   ;
}
executing Memory Script

executing command: SET until clause (SCN)

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 10-AUG-26
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymt4wnr_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L0/db_L0_0dr5ii4i_13_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L0/db_L0_0dr5ii4i_13_1_1.bkp tag=TAG20260810T091250
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:36
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L0/db_L0_0er5ii4j_14_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L0/db_L0_0er5ii4j_14_1_1.bkp tag=TAG20260810T091250
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00012 to /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L0/db_L0_0go9ii8g_16_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L0/db_L0_0go9ii8g_16_1_1.bkp tag=TAG20260810T091250
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:05
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00013 to /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
channel ORA_AUX_DISK_1: restoring datafile 00014 to /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L0/db_L0_0f89ii7v_15_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L0/db_L0_0f89ii7v_15_1_1.bkp tag=TAG20260810T091250
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymwog0k_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L0/db_L0_0j8diic0_19_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L0/db_L0_0j8diic0_19_1_1.bkp tag=TAG20260810T091250
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymwog10_.dbf
channel ORA_AUX_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymwog17_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L0/db_L0_0htaii9k_17_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L0/db_L0_0htaii9k_17_1_1.bkp tag=TAG20260810T091250
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 10-AUG-26

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=14 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymt4wnr_.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=15 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=16 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=17 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymwog0k_.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=18 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymwog10_.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=19 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf
datafile 8 switched to datafile copy
input datafile copy RECID=20 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymwog17_.dbf
datafile 9 switched to datafile copy
input datafile copy RECID=21 STAMP=1240930759 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=22 STAMP=1240930760 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=23 STAMP=1240930760 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=24 STAMP=1240930760 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
datafile 13 switched to datafile copy
input datafile copy RECID=25 STAMP=1240930760 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
datafile 14 switched to datafile copy
input datafile copy RECID=26 STAMP=1240930760 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf

contents of Memory Script:
{
   set until time  "to_date('2026/08/10 12:19:14', 'YYYY/MM/DD HH24:MI:SS')";
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause (TIME)

Starting recover at 10-AUG-26
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymt4wnr_.dbf
destination for restore of datafile 00004: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_1/db_L1_0pb0nmv3_25_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_1/db_L1_0pb0nmv3_25_1_1.bkp tag=TAG20260810T103515
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00003: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf
destination for restore of datafile 00007: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_1/db_L1_0qb0nmv3_26_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_1/db_L1_0qb0nmv3_26_1_1.bkp tag=TAG20260810T103515
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00009: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
destination for restore of datafile 00010: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
destination for restore of datafile 00012: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_1/db_L1_0sd2nn15_28_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_1/db_L1_0sd2nn15_28_1_1.bkp tag=TAG20260810T103515
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00011: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
destination for restore of datafile 00013: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
destination for restore of datafile 00014: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_1/db_L1_0rc2nn14_27_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_1/db_L1_0rc2nn14_27_1_1.bkp tag=TAG20260810T103515
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymt4wnr_.dbf
destination for restore of datafile 00004: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_2/db_L1_14m8qq7e_36_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_2/db_L1_14m8qq7e_36_1_1.bkp tag=TAG20260810T113053
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:15
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00003: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf
destination for restore of datafile 00007: /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_2/db_L1_15m8qq7e_37_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_2/db_L1_15m8qq7e_37_1_1.bkp tag=TAG20260810T113053
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00009: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf
destination for restore of datafile 00010: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
destination for restore of datafile 00012: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_2/db_L1_17oaqq9g_39_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_2/db_L1_17oaqq9g_39_1_1.bkp tag=TAG20260810T113053
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting incremental datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00011: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
destination for restore of datafile 00013: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
destination for restore of datafile 00014: /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_2/db_L1_16oaqq9f_38_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_2/db_L1_16oaqq9f_38_1_1.bkp tag=TAG20260810T113053
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

starting media recovery

channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=83
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=84
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=85
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=86
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=87
channel ORA_AUX_DISK_1: reading from backup piece /u01/app/oracle/rman/L1_3/arch_1m2vuutq_54_1_1.bkp
channel ORA_AUX_DISK_1: piece handle=/u01/app/oracle/rman/L1_3/arch_1m2vuutq_54_1_1.bkp tag=TAG20260810T125104
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
recovery status time_needed 2026-08-10 11:30:54
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_83_o7m6k9xk_.arc thread=1 sequence=83
channel ORA_AUX_DISK_1: deleting archived log(s)
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_83_o7m6k9xk_.arc RECID=5 STAMP=1240930818
recovery status time_needed 2026-08-10 11:32:38
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_84_o7m6k9xw_.arc thread=1 sequence=84
channel ORA_AUX_DISK_1: deleting archived log(s)
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_84_o7m6k9xw_.arc RECID=1 STAMP=1240930818
recovery status time_needed 2026-08-10 11:47:35
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_85_o7m6kb02_.arc thread=1 sequence=85
channel ORA_AUX_DISK_1: deleting archived log(s)
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_85_o7m6kb02_.arc RECID=3 STAMP=1240930818
recovery status time_needed 2026-08-10 12:02:34
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_86_o7m6k9yx_.arc thread=1 sequence=86
channel ORA_AUX_DISK_1: deleting archived log(s)
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_86_o7m6k9yx_.arc RECID=2 STAMP=1240930818
recovery status time_needed 2026-08-10 12:17:33
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_87_o7m6k9x4_.arc thread=1 sequence=87
channel ORA_AUX_DISK_1: deleting archived log(s)
archived log file name=/u01/app/oracle/fast_recovery_area/ORCLDEV/ORCLDEV/archivelog/2026_08_10/o1_mf_1_87_o7m6k9x4_.arc RECID=4 STAMP=1240930818
media recovery complete, elapsed time: 00:00:03
Finished recover at 10-AUG-26
Oracle instance started

Total System Global Area     344747248 bytes

Fixed Size                     5008624 bytes
Variable Size                297795584 bytes
Database Buffers              33554432 bytes
Redo Buffers                   8388608 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name =
 ''ORCLDEV'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
}
executing Memory Script

sql statement: alter system set  db_name =  ''ORCLDEV'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile
Oracle instance started

Total System Global Area     344747248 bytes

Fixed Size                     5008624 bytes
Variable Size                297795584 bytes
Database Buffers              33554432 bytes
Redo Buffers                   8388608 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCLDEV" RESETLOGS ARCHIVELOG
  MAXLOGFILES     16
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES     8
  MAXLOGHISTORY      292
 LOGFILE
  GROUP     1 ( '/u01/app/oracle/oradata/ORCLDEV/onlinelog/o1_mf_1_nymtcwk5_.log', '/u01/app/oracle/fast_recovery_area/CDBORCL/onlinelog/o1_mf_1_nymtd0d3_.log' ) SIZE 200 M  REUSE,
  GROUP     2 ( '/u01/app/oracle/oradata/ORCLDEV/onlinelog/o1_mf_2_nymtcwlf_.log', '/u01/app/oracle/fast_recovery_area/CDBORCL/onlinelog/o1_mf_2_nymtd10g_.log' ) SIZE 200 M  REUSE,
  GROUP     3 ( '/u01/app/oracle/oradata/ORCLDEV/onlinelog/o1_mf_3_nymtcwoc_.log', '/u01/app/oracle/fast_recovery_area/CDBORCL/onlinelog/o1_mf_3_nymtd26q_.log' ) SIZE 200 M  REUSE
 DATAFILE
  '/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymt4wnr_.dbf',
  '/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_system_nymwog0k_.dbf',
  '/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_system_nymz5qxb_.dbf'
 CHARACTER SET AL32UTF8

contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_temp_nymtf5mn_.tmp";
   set newname for tempfile  2 to
 "/u01/app/oracle/oradata/ORCLDEV/datafile/temp012026-04-23_15-52-27-082-PM.dbf";
   set newname for tempfile  3 to
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_temp_nymz5r3k_.dbf";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymwog10_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymwog17_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf",
 "/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

renamed tempfile 1 to /u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_temp_nymtf5mn_.tmp in control file
renamed tempfile 2 to /u01/app/oracle/oradata/ORCLDEV/datafile/temp012026-04-23_15-52-27-082-PM.dbf in control file
renamed tempfile 3 to /u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_temp_nymz5r3k_.dbf in control file

cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf RECID=1 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf RECID=2 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymwog10_.dbf RECID=3 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf RECID=4 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymwog17_.dbf RECID=5 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf RECID=6 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf RECID=7 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf RECID=8 STAMP=1240930854
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf RECID=9 STAMP=1240930855
cataloged datafile copy
datafile copy file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf RECID=10 STAMP=1240930855

datafile 3 switched to datafile copy
input datafile copy RECID=1 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymt8k0t_.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=2 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymtb7vf_.dbf
datafile 6 switched to datafile copy
input datafile copy RECID=3 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_sysaux_nymwog10_.dbf
datafile 7 switched to datafile copy
input datafile copy RECID=4 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_users_nymtb90b_.dbf
datafile 8 switched to datafile copy
input datafile copy RECID=5 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/datafile/o1_mf_undotbs1_nymwog17_.dbf
datafile 10 switched to datafile copy
input datafile copy RECID=6 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_sysaux_nymz5r3g_.dbf
datafile 11 switched to datafile copy
input datafile copy RECID=7 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_undotbs1_nymz5r3j_.dbf
datafile 12 switched to datafile copy
input datafile copy RECID=8 STAMP=1240930854 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/o1_mf_users_nymzk6kx_.dbf
datafile 13 switched to datafile copy
input datafile copy RECID=9 STAMP=1240930855 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test1.dbf
datafile 14 switched to datafile copy
input datafile copy RECID=10 STAMP=1240930855 file name=/u01/app/oracle/oradata/ORCLDEV/501F9BE43D9F38CEE0650A0027BEE017/datafile/test_tde1.dbf

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened

contents of Memory Script:
{
   sql clone "alter pluggable database all open";
}
executing Memory Script

sql statement: alter pluggable database all open
Finished Duplicate Db at 10-AUG-26

RMAN>

Step 17: Verify the Data in the Table

Now that recovery has completed, we need to verify the data.

After completing the PITR, the CURRENT_SCN of the duplicate database may be higher than the recovery SCN because Oracle generates new SCNs during the duplicate, recovery, and subsequent database operations. Therefore, CURRENT_SCN should not be used as the sole validation of PITR; instead, verify the data state at the specified recovery point.


[oracle@orcldev ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Mon Aug 10 15:03:26 2026
Version 23.26.1.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0

SQL> select NAME,DB_UNIQUE_NAME,DATABASE_ROLE,OPEN_MODE from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
--------- ------------------------------ ---------------- --------------------
ORCLDEV   ORCLDEV                        PRIMARY          READ WRITE

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDBORCL                        READ WRITE NO
SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    3942151

SQL> select sysdate from dual;

SYSDATE
--------------------
10-AUG-2026 15:04:21

SQL> select scn_to_timestamp(3942151) from dual;

SCN_TO_TIMESTAMP(3942151)
---------------------------------------------------------------------------
10-AUG-26 03.04.11.000000000 PM

SQL> alter session set container=PDBORCL;

Session altered.

SQL> select * from test.employees order by 1;

    EMP_ID EMP_NAME       DEPARTMENT         SALARY
---------- -------------- -------------- ----------
       101 Rahul          IT                  60000
       102 Amit           Finance             47000
       103 Priya          Finance             57000
       104 Neha           IT                  65000
       105 Rohit          Sales               48000
       106 Sneha          HR                  52000
       107 Vikas          Finance             60000

7 rows selected.

SQL>

The recovered table shows seven rows with the salary values as they stood at 10-AUG-2026 12:19:14, matching Step 8 exactly and correctly excluding Anjali's row and Priya's department change from Step 9. That confirms the point-in-time recovery landed precisely where we intended.

Thank you for reading!

I hope this content has been helpful to you. Your feedback and suggestions are always welcome. Feel free to leave a comment or reach out with any queries.

Abhishek Shrivastava

Oracle DBA with hands-on experience managing production Data Guard, RAC, GoldenGate, and APEX environments. I write practical, tested installation and troubleshooting guides based on real deployment work.

📧 Email: oraeasyy@gmail.com
🌐 Website: www.oraeasy.com

Follow Us

Comments