目录
4.3.将数据库启动到nomount状态(使用最小化的pfile)
一、环境准备
1.1.连接数据库,记录关键信息
sqlplus / as sysdba
SELECT
DBID, -- ① 记录这个!灾难恢复的关键,我这里是DBID:1747225139
NAME AS DB_NAME, -- ② 记录这个!
LOG_MODE
FROM V$DATABASE;

1.2.创建专用测试环境
启动环境

1.2.1.创建表空间
查看当前存在的表空间:
select tablespace_name,status,contents from dba_tablespaces;

创建测试所需使用的表空间,并指定数据文件存放位置以及自动扩展:
CREATE TABLESPACE rman_test DATAFILE '/u01/app/oracle/oradata/orcl/rman_test01.dbf' SIZE 10M AUTOEXTEND ON NEXT 5M MAXSIZE 32766M;


1.2.2.创建测试用户
CREATE USER rmanlab IDENTIFIED BY oracle DEFAULT TABLESPACE rman_test QUOTA UNLIMITED ON rman_test;

1.2.3.进行用户授权
GRANT CONNECT, RESOURCE, CREATE TABLE TO rmanlab;

1.3.创建测试表并插入相应数据
bash
CONNECT rmanlab/oracle
CREATE TABLE recovery_test (
id NUMBER GENERATED ALWAYS AS IDENTITY,
test_time TIMESTAMP DEFAULT SYSTIMESTAMP,
test_data VARCHAR2(100),
backup_phase VARCHAR2(20)
);
-- 插入备份前数据(用于验证恢复)
INSERT INTO recovery_test (test_data, backup_phase) VALUES ('数据-备份前', 'PRE_BACKUP');
COMMIT;
-- 验证数据,应有1条记录:'数据-备份前'
SELECT * FROM recovery_test;

二、配置并执行RMAN备份
2.1.配置rman关键参数
2.1.1.连接目标数据库并查看当前配置
rman target /
show all

2.1.2.必须开启的配置
CONFIGURE CONTROLFILE AUTOBACKUP ON; -- 救命设置!
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/autobackup/cf_%F'; -- 固定目录
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

2.1.3.再次查看配置
SHOW ALL;

2.2.编写脚本
注意:这里需要提前创建目录

授权:chown -R oracle:oinstall /u01/backup

cd ~
mkdir oracle_autobackup_scripts
cd oracle_autobackup_scripts
vi autobackup_rman_test.rman
bash
RUN {
-- 1. 强制归档当前日志
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
-- 2. 0级全库备份
BACKUP INCREMENTAL LEVEL 0 DATABASE
FORMAT '/u01/backup/autobackup/data/full_0_%d_%T_%U'
TAG 'FULL_LEVEL0';
-- 3. 备份并删除归档日志
BACKUP ARCHIVELOG ALL
FORMAT '/u01/backup/autobackup/data/archlog_%d_%T_%U'
DELETE INPUT;
-- 4. 备份参数文件
BACKUP SPFILE
FORMAT '/u01/backup/autobackup/data/spfile_%d_%T_%U';
-- 5. 备份控制文件
BACKUP CURRENT CONTROLFILE
FORMAT '/u01/backup/autobackup/data/control_%d_%T_%U';
-- 6. 删除过期备份(可选)
DELETE NOPROMPT OBSOLETE;
}

2.3.执行脚本
rman target / @/home/oracle/oracle_autobackup_scripts/autobackup_rman_test.rman

日志输出
oracle@rac01 oracle_autobackup_scripts\]$ rman target / @/home/oracle/oracle_autobackup_scripts/autobackup_rman_test.rman Recovery Manager: Release 19.0.0.0.0 - Production on Wed Apr 8 16:31:44 2026 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. connected to target database: ORCL (DBID=1747225139) RMAN\> RUN { 2\> # 1. 强制归档当前日志 3\> SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; 4\> 5\> # 2. 0级全库备份 6\> BACKUP INCREMENTAL LEVEL 0 DATABASE 7\> FORMAT '/u01/backup/autobackup/data/full_0_%d_%T_%U' 8\> TAG 'FULL_LEVEL0'; 9\> 10\> # 3. 备份并删除归档日志 11\> BACKUP ARCHIVELOG ALL 12\> FORMAT '/u01/backup/autobackup/data/archlog_%d_%T_%U' 13\> DELETE INPUT; 14\> 15\> # 4. 备份参数文件 16\> BACKUP SPFILE 17\> FORMAT '/u01/backup/autobackup/data/spfile_%d_%T_%U'; 18\> 19\> # 5. 备份控制文件 20\> BACKUP CURRENT CONTROLFILE 21\> FORMAT '/u01/backup/autobackup/data/control_%d_%T_%U'; 22\> 23\> # 6. 删除过期备份(可选) 24\> DELETE NOPROMPT OBSOLETE; 25\> } 26\> using target database control file instead of recovery catalog sql statement: ALTER SYSTEM ARCHIVE LOG CURRENT Starting backup at 08-APR-26 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=297 device type=DISK channel ORA_DISK_1: starting incremental level 0 datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf input datafile file number=00006 name=/u01/app/oracle/oradata/orcl/users_data02.dbf input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/ts_app_data01.dbf input datafile file number=00007 name=/u01/app/oracle/oradata/orcl/rman_data01.dbf input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/rman_test01.dbf channel ORA_DISK_1: starting piece 1 at 08-APR-26 channel ORA_DISK_1: finished piece 1 at 08-APR-26 piece handle=/u01/backup/autobackup/data/full_0_ORCL_20260408_084l24kq_1_1 tag=FULL_LEVEL0 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 Finished backup at 08-APR-26 Starting backup at 08-APR-26 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=53 RECID=16 STAMP=1230049946 input archived log thread=1 sequence=54 RECID=17 STAMP=1230049949 channel ORA_DISK_1: starting piece 1 at 08-APR-26 channel ORA_DISK_1: finished piece 1 at 08-APR-26 piece handle=/u01/backup/autobackup/data/archlog_ORCL_20260408_094l24kt_1_1 tag=TAG20260408T163229 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 channel ORA_DISK_1: deleting archived log(s) archived log file name=/u01/app/oracle/product/19c/dbhome_1/dbs/archarch_1_53_1219444403.dbf RECID=16 STAMP=1230049946 archived log file name=/u01/app/oracle/product/19c/dbhome_1/dbs/archarch_1_54_1219444403.dbf RECID=17 STAMP=1230049949 Finished backup at 08-APR-26 Starting backup at 08-APR-26 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current SPFILE in backup set channel ORA_DISK_1: starting piece 1 at 08-APR-26 channel ORA_DISK_1: finished piece 1 at 08-APR-26 piece handle=/u01/backup/autobackup/data/spfile_ORCL_20260408_0a4l24ku_1_1 tag=TAG20260408T163230 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 08-APR-26 Starting backup at 08-APR-26 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set including current control file in backup set channel ORA_DISK_1: starting piece 1 at 08-APR-26 channel ORA_DISK_1: finished piece 1 at 08-APR-26 piece handle=/u01/backup/autobackup/data/control_ORCL_20260408_0b4l24l0_1_1 tag=TAG20260408T163232 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 08-APR-26 Starting Control File and SPFILE Autobackup at 08-APR-26 piece handle=/u01/backup/autobackup/cf_c-1747225139-20260408-02 comment=NONE Finished Control File and SPFILE Autobackup at 08-APR-26 RMAN retention policy will be applied to the command RMAN retention policy is set to recovery window of 7 days using channel ORA_DISK_1 Deleting the following obsolete backups and copies: Type Key Completion Time Filename/Handle -------------------- ------ ------------------ -------------------- Backup Set 1 05-JAN-26 Backup Piece 1 05-JAN-26 /u01/app/oracle/product/19c/dbhome_1/dbs/c-1747225139-20260105-00 deleted backup piece backup piece handle=/u01/app/oracle/product/19c/dbhome_1/dbs/c-1747225139-20260105-00 RECID=1 STAMP=1221696144 Deleted 1 objects Recovery Manager complete. \[oracle@rac01 oracle_autobackup_scripts\]$
2.4.验证备份可用性
validate:可用性

RESTORE DATABASE VALIDATE;
RESTORE CONTROLFILE VALIDATE;
RESTORE SPFILE VALIDATE;

2.5.查看备份信息
LIST BACKUP SUMMARY;


2.6.添加验证数据并进行归档(制造差异好进行对比)
2.6.1.在备份完成后再次对测试的数据表进行新增数据
sqlplus / as sysdba
connect rmanlab/oracle
INSERT INTO recovery_test (test_data, backup_phase) VALUES ('数据-备份后', 'AFTER_BACKUP');

2.6.2.归档最后的变更
sqlplus / as sysdba
alter system archive log current;

2.6.3.备份这个最后的归档日志
rman target / BACKUP ARCHIVELOG ALL DELETE INPUT TAG 'FINAL_ARCH';
bash
[oracle@rac01 backup_scripts]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Tue Apr 7 15:25:14 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1747225139)
RMAN> list backup summary;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
2 B F A DISK 08-JAN-26 1 1 NO TAG20260108T044741
3 B F A DISK 08-APR-26 1 1 NO TAG20260408T155930
4 B 0 A DISK 08-APR-26 1 1 NO FULL_LEVEL0
5 B A A DISK 08-APR-26 1 1 NO TAG20260408T163048
6 B F A DISK 08-APR-26 1 1 NO TAG20260408T163052
7 B 0 A DISK 08-APR-26 1 1 NO FULL_LEVEL0
8 B A A DISK 08-APR-26 1 1 NO TAG20260408T163229
9 B F A DISK 08-APR-26 1 1 NO TAG20260408T163230
10 B F A DISK 08-APR-26 1 1 NO TAG20260408T163232
11 B F A DISK 08-APR-26 1 1 NO TAG20260408T163234
RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT TAG 'FINAL_ARCH';
Starting backup at 08-APR-26
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=55 RECID=18 STAMP=1230050375
input archived log thread=1 sequence=56 RECID=19 STAMP=1230050484
channel ORA_DISK_1: starting piece 1 at 08-APR-26
channel ORA_DISK_1: finished piece 1 at 08-APR-26
piece handle=/u01/app/oracle/product/19c/dbhome_1/dbs/0d4l255k_1_1 tag=FINAL_ARCH comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file name=/u01/app/oracle/product/19c/dbhome_1/dbs/archarch_1_55_1219444403.dbf RECID=18 STAMP=1230050375
archived log file name=/u01/app/oracle/product/19c/dbhome_1/dbs/archarch_1_56_1219444403.dbf RECID=19 STAMP=1230050484
Finished backup at 08-APR-26
Starting Control File and SPFILE Autobackup at 08-APR-26
piece handle=/u01/backup/autobackup/cf_c-1747225139-20260408-03 comment=NONE
Finished Control File and SPFILE Autobackup at 08-APR-26
RMAN> list backup summary;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
2 B F A DISK 08-JAN-26 1 1 NO TAG20260108T044741
3 B F A DISK 08-APR-26 1 1 NO TAG20260408T155930
4 B 0 A DISK 08-APR-26 1 1 NO FULL_LEVEL0
5 B A A DISK 08-APR-26 1 1 NO TAG20260408T163048
6 B F A DISK 08-APR-26 1 1 NO TAG20260408T163052
7 B 0 A DISK 08-APR-26 1 1 NO FULL_LEVEL0
8 B A A DISK 08-APR-26 1 1 NO TAG20260408T163229
9 B F A DISK 08-APR-26 1 1 NO TAG20260408T163230
10 B F A DISK 08-APR-26 1 1 NO TAG20260408T163232
11 B F A DISK 08-APR-26 1 1 NO TAG20260408T163234
12 B A A DISK 08-APR-26 1 1 NO FINAL_ARCH
13 B F A DISK 08-APR-26 1 1 NO TAG20260408T164125
RMAN>
三、模拟存储完全损坏
3.1.删除所有的数据库文件(彻底进行破坏)
3.1.1.查看数据库所有的重要文件
-- 数据文件
SELECT file_id, file_name, tablespace_name, status, autoextensible FROM dba_data_files;

-- 控制文件
select name,status,is_recovery_dest_file from v$controlfile;

-- 重做日志文件
select * from v$logfile;

-- SPFILE参数文件
select name, value FROM v$parameter WHERE name = 'spfile';

3.1.2.删除所有重要文件(模拟存储损坏)
rm -rf /u01/app/oracle/oradata/orcl/*.dbf
rm -rf /u01/app/oracle/oradata/ORCL/*.ctl
rm -rf /u01/app/oracle/oradata/orcl/*.log
rm -rf $ORACLE_HOME/dbs/spfileorcl.ora

3.1.3.尝试对测试表插入新的数据

四、使用RMAN进行恢复
4.1.查看当前数据库情况

注意:可以留意到当前数据库处于打开状态,但由于重要文件被破坏,实际情况下并不能对其进行相关操作
CONNECT rmanlab/oracle
INSERT INTO recovery_test (test_data, backup_phase) VALUES ('数据-test', 'PRE_BACKUP');
4.2.强制关闭数据库
shutdown abort;

4.3.将数据库启动到nomount状态(使用最小化的pfile)
cat > /tmp/minimal.ora << 'EOF'
db_name='ORCL' # 注意:用实际的数据库名,我这里是ORCL
EOF
sqlplus / as sysdba
STARTUP NOMOUNT PFILE='/tmp/minimal.ora';

4.4.从自动备份恢复spfile
DBID:1747225139
bash
rman target /
RUN {
SET DBID 1747225139; -- 你的DBID
-- 从自动备份恢复SPFILE到默认位置
RESTORE SPFILE FROM AUTOBACKUP;
-- 或者指定具体位置
-- RESTORE SPFILE TO '/u01/app/oracle/product/19c/db_home1/dbs/spfileorcl.ora' FROM '/u01/backup/autobackup/cf_c-1037145303-20251216-01';
-- 重启实例使用恢复的SPFILE
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
}

4.5.恢复控制文件
bash
rman target /
RESTORE CONTROLFILE FROM AUTOBACKUP; -- 找不到就用实际地址(前面我们在rman的重要配置中有配置到)
--RESTORE CONTROLFILE FROM '/u01/backup/autobackup/cf_c-1037145303-20251216-01';
RESTORE CONTROLFILE FROM '/u01/backup/autobackup/cf_c-1747225139-20260408-02';
RESTORE CONTROLFILE FROM '/u01/backup/autobackup/cf_c-1747225139-20260408-03';
-- 挂载数据库
ALTER DATABASE MOUNT;

4.6.恢复数据文件
bash
-- 恢复所有数据文件
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
RESTORE DATABASE;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
或
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
RESTORE DATABASE;
RELEASE CHANNEL c1;
}

4.7.应用归档日志
bash
-- 应用归档日志恢复数据
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
RECOVER DATABASE;
RELEASE CHANNEL c1;
}
4.7.1.第一次执行

这个错误表明 RMAN 在进行介质恢复时,找不到 sequence=57的归档日志。这说明你的恢复操作需要应用这个归档日志,但它在备份中不存在或无法访问。
关键问题:怎么产生了序列57?
可能的原因:
自动作业(如统计信息收集、审计等)
后台进程活动
之前的恢复操作本身产生了重做
系统表空间维护
4.7.2.第二次执行(尝试强制恢复到备份点)

bash
完整恢复:
RMAN TARGET /
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
或者不完整恢复(指定时间点或SCN):
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
-- 先还原数据文件到指定时间点
RESTORE DATABASE UNTIL TIME '2026-04-08 16:27:00';
-- 然后恢复(应用归档日志)
RECOVER DATABASE UNTIL TIME '2026-04-08 16:27:00';
RELEASE CHANNEL c1;
}
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
RESTORE DATABASE;
RECOVER DATABASE UNTIL SCN 1107090;
RELEASE CHANNEL c1;
}



4.8.打开数据库

4.9.立即备份新的控制文件

五、验证恢复完整性
5.1.验证数据库当前状态
SELECT NAME,DBID,OPEN_MODE,DATABASE_ROLE,LOG_MODE FROM v$DATABASE;


5.2.验证数据完整性
5.2.1.不完全备份恢复
CONNECT rmanlab/oracle
-- 应只能看到1条记录(备份前)
SELECT * FROM recovery_test;

问题:在实验开始之前我们插入的应该是两条数据,那为什么我们现在看不到后边插入的那条数据了?

思考:我们第二条数据是在做完一次全备之后新增的,并且在新增完数据之后,我们又再次对归档日志做了一次备份,那么我们最开始恢复的时候理应还需借助归档日志的帮助,从而实现数据的完整恢复。我们在恢复完之后只能看到一条数据,这是由于我们最开始在恢复的过程中使用了UTIL导致了不完整的恢复。
5.2.2.完全备份恢复
重置恢复到之前的环境:
并插入数据进行测试!!!,在这里我们省略前面的步骤,直接从恢复这里入手!!!探讨一下完整恢复和前面恢复的区别
bash
[root@rac01 ~]# su - oracle
上一次登录:四 4月 9 11:51:53 CST 2026pts/5 上
[oracle@rac01 ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Thu Apr 9 12:35:17 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (not mounted)
RMAN> select status from v$instance;
using target database control file instead of recovery catalog
STATUS
------------
STARTED
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
Starting restore at 09-APR-26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=15 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/09/2026 12:36:29
RMAN-06495: must explicitly specify DBID with SET DBID command
RMAN> set DBID 1747225139
executing command: SET DBID
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
Starting restore at 09-APR-26
using channel ORA_DISK_1
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20260409
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20260408
channel ORA_DISK_1: AUTOBACKUP found: c-1747225139-20260408-00
channel ORA_DISK_1: restoring control file from AUTOBACKUP c-1747225139-20260408-00
channel ORA_DISK_1: control file restore from AUTOBACKUP complete
output file name=/u01/app/oracle/oradata/ORCL/control01.ctl
output file name=/u01/app/oracle/oradata/ORCL/control02.ctl
Finished restore at 09-APR-26
RMAN> ALTER DATABASE MOUNT;
released channel: ORA_DISK_1
Statement processed
RMAN> ALTER DATABASE NOMOUNT;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of sql statement command at 04/09/2026 12:37:47
ORA-02231: missing or invalid option to ALTER DATABASE
RMAN> shutdown immediate
database dismounted
Oracle instance shut down
RMAN> STARTUP NOMOUNT;
connected to target database (not started)
Oracle instance started
Total System Global Area 1073737800 bytes
Fixed Size 8904776 bytes
Variable Size 784334848 bytes
Database Buffers 272629760 bytes
Redo Buffers 7868416 bytes
RMAN> RESTORE CONTROLFILE FROM '/u01/backup/autobackup/cf_c-1037145303-20251216-01';
Starting restore at 09-APR-26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
channel ORA_DISK_1: no AUTOBACKUP in 7 days found
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/09/2026 12:41:23
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece
RMAN> RESTORE CONTROLFILE FROM '/u01/backup/autobackup/cf_c-1747225139-20260408-03';
Starting restore at 09-APR-26
using channel ORA_DISK_1
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/ORCL/control01.ctl
output file name=/u01/app/oracle/oradata/ORCL/control02.ctl
Finished restore at 09-APR-26
RMAN> ALTER DATABASE MOUNT;
released channel: ORA_DISK_1
Statement processed
RMAN>
RESTORE DATABASE;
RMAN>
Starting restore at 09-APR-26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=23 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/orcl/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/orcl/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/orcl/ts_app_data01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/orcl/users_data02.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/orcl/rman_data01.dbf
channel ORA_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/orcl/rman_test01.dbf
channel ORA_DISK_1: reading from backup piece /u01/backup/autobackup/data/full_0_ORCL_20260408_084l24kq_1_1
channel ORA_DISK_1: piece handle=/u01/backup/autobackup/data/full_0_ORCL_20260408_084l24kq_1_1 tag=FULL_LEVEL0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:15
Finished restore at 09-APR-26
RMAN> RECOVER DATABASE;
Starting recover at 09-APR-26
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=54
channel ORA_DISK_1: reading from backup piece /u01/backup/autobackup/data/archlog_ORCL_20260408_094l24kt_1_1
channel ORA_DISK_1: piece handle=/u01/backup/autobackup/data/archlog_ORCL_20260408_094l24kt_1_1 tag=TAG20260408T163229
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/oracle/product/19c/dbhome_1/dbs/archarch_1_54_1219444403.dbf thread=1 sequence=54
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=55
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=56
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/19c/dbhome_1/dbs/0d4l255k_1_1
channel ORA_DISK_1: piece handle=/u01/app/oracle/product/19c/dbhome_1/dbs/0d4l255k_1_1 tag=FINAL_ARCH
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/oracle/product/19c/dbhome_1/dbs/archarch_1_55_1219444403.dbf thread=1 sequence=55
archived log file name=/u01/app/oracle/product/19c/dbhome_1/dbs/archarch_1_56_1219444403.dbf thread=1 sequence=56
unable to find archived log
archived log thread=1 sequence=57
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/09/2026 12:45:36
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 57 and starting SCN of 1107787
RMAN> ALTER DATABASE OPEN;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of sql statement command at 04/09/2026 12:45:51
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
RMAN> ALTER DATABASE OPEN RESETLOGS;
Statement processed
RMAN> CONNECT rmanlab/oracle
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "auxiliary, catalog, target"
RMAN-01008: the bad identifier was: rmanlab
RMAN-01007: at line 1 column 9 file: standard input
RMAN> select status from v$instance;
STATUS
------------
OPEN
RMAN>
结果:

六、备份健康检查(日常维护)
6.1.检查备份状态
rman target /
LIST BACKUP SUMMARY;

6.2.验证备份策略
REPORT NEED BACKUP;
REPORT OBSOLETE;

6.3.定期验证备份可用性
RESTORE DATABASE VALIDATE;
RESTORE CONTROLFILE VALIDATE;
