Skip to Main Content

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, Tom.

Asked: January 08, 2024 - 10:08 am UTC

Last updated: February 21, 2024 - 2:39 am UTC

Version: 19.20.0

Viewed 1000+ times

You Asked

Hi Tom.

I'm a great believer that a backup you haven't tested isn't a backup, so I'm trying to ensure that our RMAN backups get automatically verified, however I've come across some weird behaviour with rman backup validation.

My aim is to run full verification of our backups on a regular basis using RMAN and send an email to someone if it finds any errors. I've been testing it out and found some strange behaviour which I'd like to understand

I start by creating a full backup of the database using RMAN. We use incrementally updated image copies so I'm using "backup incremental level 1 for recover of copy with tag 'database' database;". Once I've performed the backup

1. If I run "restore database validate" and "restore archivelog all validate" it (unsurprisingly) says all is fine
2. If I hex edit one of the data files and run the same commands, it picks up the corruption and returns an error code to the command prompt
3. If I hex edit one of the archive logs and run the same commands, it picks up the corruption and returns an error code to the command prompt
4. If I delete one of the archive logs and run the same commands, it picks up the missing file and returns an error code to the command prompt

However, if I delete one of the data file copies, RMAN shows an error on screen but then says "datafile X will be created automatically during restore operation" and does not return an error code to the command prompt. See RMAN log below

channel ORA_DISK_1: scanning datafile copy C:\BACKUPS\MYDB\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_UNDOTBS1_LSJCL5G5_.DBF
channel ORA_DISK_1: scanning datafile copy C:\BACKUPS\MYDB\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_TBS1_LSJCDDKS_.DBF
channel ORA_DISK_1: scanning datafile copy C:\BACKUPS\MYDB\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_TBS1_LSJCDVOT_.DBF
channel ORA_DISK_1: scanning datafile copy C:\DBACKUPS\MYDB\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_TBS1_LSJCHCYH_.DBF
ORA-19505: failed to identify file "C:\BACKUPS\MYDB\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_TBS1_LSJCHCYH_.DBF"
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.
ORA-19600: input file is datafile copy 0 (C:\BACKUPS\MYDB\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_TBS1_LSJCHCYH_.DBF)
channel ORA_DISK_1: scanning datafile copy C:\BACKUPS\MYDB\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_TBS1_LSJCG8VQ_.DBF
channel ORA_DISK_1: scanning datafile copy C:\BACKUPS\MYDB\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_TBS1_LSJCC7MK_.DBF
failover to previous backup

datafile 13 will be created automatically during restore operation
Finished restore at 05-JAN-24




So my questions are:

1. Why does RMAN not consider a completely missing data file a serious enough error in backup validation to throw an error? The documentation says "The main purpose of RMAN validation is to check for corrupt blocks and missing files. You can also use RMAN to determine whether backups can be restored.". In this case I have a completely missing file which I would have thought was a fairly serious failure in whether backups can be restored and yet RMAN is saying this is fine.

2. Is there a way to make RMAN return an error code if a file is missing so we can use it via a batch file and send an email to the DBAs if any files are missing? As far as I know crosscheck does not return an error code and restore validate doesn't either so I can't see a way this can be scripted without grepping through the logs for "ORA-19505" which isn't elegant.


Reproduction
------------
1. create a database which is in archivelog mode
2. from rman run: "backup incremental level 1 for recover of copy with tag 'daily' database"
3. switch redo logs a few times to ensure we have some archive logs
4. from rman run: "restore database validate" (all good)
5. from rman run: "restore archivelog all validate" (all good)
6. from os: rename one of the archive logs
7. from rman run: "restore archive log all validate" - you should get an error and RMAN returns -1 if you run it in a script
8. from os: delete or rename one of the data file copies
9. from rman run: "restore database validate" - you will get an error on screen but RMAN returns 0 if you run it in a script



and Connor said...

Are you sure there is not some other backup available to RMAN (which would mean a restore would indeed be available?)

Because I dont see your observations

C:\Users\connor>rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Wed Jan 17 14:41:02 2024
Version 19.19.0.0.0

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

connected to target database: DB19S (DBID=857515531)

RMAN> RUN {
2>   recover copy of database with tag 'daily' until time 'sysdate - 1';
3>   backup incremental level 1 for recover of copy with tag 'daily' database;
4> }

Starting recover at 17-JAN-24
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=859 device type=DISK
no copy of datafile 1 found to recover
no copy of datafile 3 found to recover
no copy of datafile 4 found to recover
no copy of datafile 5 found to recover
no copy of datafile 7 found to recover
Finished recover at 17-JAN-24

Starting backup at 17-JAN-24
using channel ORA_DISK_1
no parent backup or copy of datafile 1 found
no parent backup or copy of datafile 5 found
no parent backup or copy of datafile 4 found
no parent backup or copy of datafile 3 found
no parent backup or copy of datafile 7 found
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=X:\ORACLE\ORADATA\DB19S\SYSTEM01.DBF
output file name=X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-SYSTEM_FNO-1_012GQNPK tag=DAILY RECID=1 STAMP=1158504256
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=X:\ORACLE\ORADATA\DB19S\LARGETS.DBF
output file name=X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-LARGETS_FNO-5_022GQNQ3 tag=DAILY RECID=2 STAMP=1158504270
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=X:\ORACLE\ORADATA\DB19S\UNDOTBS01.DBF
output file name=X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-UNDOTBS1_FNO-4_032GQNQI tag=DAILY RECID=3 STAMP=1158504284
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=X:\ORACLE\ORADATA\DB19S\SYSAUX01.DBF
output file name=X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-SYSAUX_FNO-3_042GQNR1 tag=DAILY RECID=4 STAMP=1158504295
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=X:\ORACLE\ORADATA\DB19S\USERS01.DBF
output file name=X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-USERS_FNO-7_052GQNR8 tag=DAILY RECID=5 STAMP=1158504297
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 17-JAN-24

Starting Control File and SPFILE Autobackup at 17-JAN-24
piece handle=C:\ORACLE\PRODUCT\19\DATABASE\C-857515531-20240117-00 comment=NONE
Finished Control File and SPFILE Autobackup at 17-JAN-24

RMAN> restore database validate;

Starting restore at 17-JAN-24
using channel ORA_DISK_1

channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-SYSTEM_FNO-1_012GQNPK
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-SYSAUX_FNO-3_042GQNR1
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-UNDOTBS1_FNO-4_032GQNQI
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-LARGETS_FNO-5_022GQNQ3
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-USERS_FNO-7_052GQNR8
Finished restore at 17-JAN-24

RMAN> restore archivelog all validate;

Starting restore at 17-JAN-24
using channel ORA_DISK_1

channel ORA_DISK_1: scanning archived log D:\ORACLE\ARCH\DB19S_ARC0000000088_1126560222.0001
channel ORA_DISK_1: scanning archived log D:\ORACLE\ARCH\DB19S_ARC0000000089_1126560222.0001
channel ORA_DISK_1: scanning archived log D:\ORACLE\ARCH\DB19S_ARC0000000090_1126560222.0001
Finished restore at 17-JAN-24

RMAN> restore database validate;

Starting restore at 17-JAN-24
using channel ORA_DISK_1

channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-SYSTEM_FNO-1_012GQNPK
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-SYSAUX_FNO-3_042GQNR1
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-UNDOTBS1_FNO-4_032GQNQI
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-LARGETS_FNO-5_022GQNQ3
channel ORA_DISK_1: scanning datafile copy X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-USERS_FNO-7_052GQNR8
ORA-19505: failed to identify file "X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-USERS_FNO-7_052GQNR8"
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.
ORA-19600: input file is datafile copy 0 (X:\ORACLE\BKP\DB19S\DATA_D-DB19S_I-857515531_TS-USERS_FNO-7_052GQNR8)

failover to previous backup

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 01/17/2024 14:47:15
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 7 found to restore

RMAN> exit


Recovery Manager complete.

C:\Users\connor>echo %ERRORLEVEL%
1


Rating

  (2 ratings)

Comments

Full walkthrough showing no previous backups

Tom, January 17, 2024 - 10:07 am UTC

Hi Connor.

I was fairly sure I'd tested all this, but went entirely from start to finish to demonstrate no previous backups being available. The below is the rman output

c:\>rman target=/

Recovery Manager: Release 19.0.0.0.0 - Production on Wed Jan 17 09:47:26 2024
Version 19.20.0.0.0

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

connected to target database: C3 (DBID=310641155)

RMAN> list backup;

using target database control file instead of recovery catalog
specification does not match any backup in the repository

RMAN> list archivelog all;

specification does not match any archived log in the repository

RMAN> list copy;

specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
specification does not match any archived log in the repository

RMAN> backup incremental level 1 for recover of copy with tag 'database' database;

Starting backup at 17-JAN-24
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=7 device type=DISK
no parent backup or copy of datafile 5 found
no parent backup or copy of datafile 1 found
no parent backup or copy of datafile 3 found
no parent backup or copy of datafile 7 found
no parent backup or copy of datafile 6 found
no parent backup or copy of datafile 2 found
no parent backup or copy of datafile 4 found
no parent backup or copy of datafile 15 found
no parent backup or copy of datafile 11 found
no parent backup or copy of datafile 12 found
no parent backup or copy of datafile 14 found
no parent backup or copy of datafile 13 found
no parent backup or copy of datafile 8 found
no parent backup or copy of datafile 9 found
no parent backup or copy of datafile 10 found
channel ORA_DISK_1: starting datafile copy
input datafile file number=00015 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_L44PDVJQ_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8M9GC_.DBF tag=DATABASE RECID=60 STAMP=1158486514
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00011 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_L44PDV9Z_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8MRKZ_.DBF tag=DATABASE RECID=61 STAMP=1158486534
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00012 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_L44PDVCN_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8N7QP_.DBF tag=DATABASE RECID=62 STAMP=1158486558
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile copy
input datafile file number=00014 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_L44PDVH8_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8O0WN_.DBF tag=DATABASE RECID=63 STAMP=1158486584
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile copy
input datafile file number=00013 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_L44PDVFL_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8OT2V_.DBF tag=DATABASE RECID=64 STAMP=1158486609
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile copy
input datafile file number=00008 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSTEM_L44PDR4N_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSTEM_LTH8PM6G_.DBF tag=DATABASE RECID=65 STAMP=1158486622
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=C:\ORACLE\DATA\C3\DATAFILE\O1_MF_UNDOTBS1_L44NHNXD_.DBF
output file name=C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_UNDOTBS1_LTH8Q2B5_.DBF tag=DATABASE RECID=66 STAMP=1158486628
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00009 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSAUX_L44PDR4N_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSAUX_LTH8Q5GW_.DBF tag=DATABASE RECID=67 STAMP=1158486633
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=C:\ORACLE\DATA\C3\DATAFILE\O1_MF_SYSTEM_L44NF499_.DBF
output file name=C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_SYSTEM_LTH8QDLB_.DBF tag=DATABASE RECID=68 STAMP=1158486638
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00010 name=C:\ORACLE\DATA\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_UNDOTBS1_L44PDR4N_.DBF
output file name=C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_UNDOTBS1_LTH8QHOG_.DBF tag=DATABASE RECID=69 STAMP=1158486641
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00006 name=C:\ORACLE\DATA\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_UNDOTBS1_L44NJG37_.DBF
output file name=C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_UNDOTBS1_LTH8QLSZ_.DBF tag=DATABASE RECID=70 STAMP=1158486644
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=C:\ORACLE\DATA\C3\DATAFILE\O1_MF_SYSAUX_L44NGDL9_.DBF
output file name=C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_SYSAUX_LTH8QOVH_.DBF tag=DATABASE RECID=71 STAMP=1158486646
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=C:\ORACLE\DATA\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSTEM_L44NFXFF_.DBF
output file name=C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSTEM_LTH8QS01_.DBF tag=DATABASE RECID=72 STAMP=1158486649
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:02
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=C:\ORACLE\DATA\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSAUX_L44NH5RN_.DBF
output file name=C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSAUX_LTH8QT1O_.DBF tag=DATABASE RECID=73 STAMP=1158486650
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=C:\ORACLE\DATA\C3\DATAFILE\O1_MF_USERS_L44NJX8M_.DBF
output file name=C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_USERS_LTH8QV3P_.DBF tag=DATABASE RECID=74 STAMP=1158486651
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 17-JAN-24

Starting Control File and SPFILE Autobackup at 17-JAN-24
piece handle=C:\ORACLE\BACKUPS\C3\AUTOBACKUP\2024_01_17\O1_MF_S_1158486652_LTH8QWDM_.BKP comment=NONE
Finished Control File and SPFILE Autobackup at 17-JAN-24

RMAN> restore database validate;

Starting restore at 17-JAN-24
using channel ORA_DISK_1

channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_SYSTEM_LTH8QDLB_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSTEM_LTH8QS01_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_SYSAUX_LTH8QOVH_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSAUX_LTH8QT1O_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_UNDOTBS1_LTH8Q2B5_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_UNDOTBS1_LTH8QLSZ_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_USERS_LTH8QV3P_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSTEM_LTH8PM6G_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSAUX_LTH8Q5GW_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_UNDOTBS1_LTH8QHOG_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8MRKZ_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8N7QP_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8OT2V_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8O0WN_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8M9GC_.DBF
Finished restore at 17-JAN-24

RMAN> restore controlfile validate;

Starting restore at 17-JAN-24
using channel ORA_DISK_1

channel ORA_DISK_1: starting validation of datafile backup set
channel ORA_DISK_1: reading from backup piece C:\ORACLE\BACKUPS\C3\AUTOBACKUP\2024_01_17\O1_MF_S_1158486652_LTH8QWDM_.BKP
channel ORA_DISK_1: piece handle=C:\ORACLE\BACKUPS\C3\AUTOBACKUP\2024_01_17\O1_MF_S_1158486652_LTH8QWDM_.BKP tag=TAG20240117T095052
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
Finished restore at 17-JAN-24

RMAN> host "del C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8N7QP_.DBF"
2> ;

host command complete

RMAN> restore database validate;

Starting restore at 17-JAN-24
using channel ORA_DISK_1

channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_SYSTEM_LTH8QDLB_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSTEM_LTH8QS01_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_SYSAUX_LTH8QOVH_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_SYSAUX_LTH8QT1O_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_UNDOTBS1_LTH8Q2B5_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\D21CABDB73E7462FA9C1CC99A7B826B3\DATAFILE\O1_MF_UNDOTBS1_LTH8QLSZ_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\DATAFILE\O1_MF_USERS_LTH8QV3P_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSTEM_LTH8PM6G_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_SYSAUX_LTH8Q5GW_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_UNDOTBS1_LTH8QHOG_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8MRKZ_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8N7QP_.DBF
ORA-19505: failed to identify file "C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8N7QP_.DBF"
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) The system cannot find the file specified.
ORA-19600: input file is datafile copy 0 (C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8N7QP_.DBF)
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8OT2V_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8O0WN_.DBF
channel ORA_DISK_1: scanning datafile copy C:\ORACLE\BACKUPS\C3\E812A6F4CE05460DBEABDF29CB7A5D6F\DATAFILE\O1_MF_E360_LTH8M9GC_.DBF
failover to previous backup

datafile 12 will be created automatically during restore operation
Finished restore at 17-JAN-24

RMAN>



So as you can see

1. started with no backups, no archive logs and no copies of data files, control files or spfiles
2. performed the backup and verified it successfully
3. deleted a file and the verification says the file is missing but will be recreated on restore

I note that the message says "failover to previous backup" which is where I am confused since I've clearly shown there are no previous backups!

Any suggestions? Are there any ways for backups to be "hidden" (maybe a previous incarnation)?

Full walkthrough showing no previous backups

Tom, February 20, 2024 - 5:23 pm UTC

Hi Connor.

I was wondering if you had any thoughts about the test case I provided above showing that Oracle seems to be not considering a missing file as problematic in the restore.

Or at least any thoughts as to what might be different between your test case and mine, since we are seeing different results.
Connor McDonald
February 21, 2024 - 2:39 am UTC

I've passed it along internally and I'm waiting for some feedback

Will keep you posted.

More to Explore

Backup/Recovery

Check out the complete guide to all of the Backup & Recovery techniques in the Oracle Database.