登录
rman target /
或者
rman target sys/passwd@dbname
全量备份
oracle必须处于归档模式才可以进行全量备份
sqlplus / as sysdba << EOF
SELECT log_mode FROM v\$database;
EOF
如果结果是
SQL>
LOG_MODE
------------
ARCHIVELOG
则可以执行全量备份
在rman中执行
RMAN> backup database plus archivelog;
来备份所有数据文件和归档文件
如果不指定位置,oracle会将备份文件保存至默认路径,我们可以使用format指定位置
backup database format '/opt/oracle_backup/data_backup/20250329_data.dbf' plus archivelog format '/opt/oracle_backup/arch_backup/20250329_arch.dbf' ;
使用 backup database
命令则只备份数据文件
恢复数据
备份完成后可以使用 list backup
命令来查看备份情况,每份备份都有tag
恢复时可以指定tag
RMAN> restore database from tag='TAG20250327T172855'
恢复数据使用restore database
和recover database
,需要启动到mount状态
RMAN> restore database;
Starting restore at 27-MAR-25
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=6 device type=DISK
skipping datafile 1; already restored to file /opt/app/oracle/oradata/ORCL/system01.dbf
skipping datafile 2; already restored to file /opt/app/oracle/oradata/ORCL/sysaux01.dbf
skipping datafile 3; already restored to file /opt/app/oracle/oradata/ORCL/undotbs01.dbf
skipping datafile 4; already restored to file /opt/app/oracle/oradata/ORCL/users01.dbf
skipping datafile 5; already restored to file /opt/app/oracle/oradata/ORCL/orclys2.dbf
skipping datafile 6; already restored to file /opt/app/oracle/oradata/ORCL/orclys1.dbf
skipping datafile 7; already restored to file /opt/app/oracle/oradata/ORCL/TEST_2.dbf
skipping datafile 8; already restored to file /opt/app/oracle/oradata/ORCL/ORCL/datafile/o1_mf_autoys_mwx9j8kb_.dbf
skipping datafile 9; already restored to file /opt/app/oracle/product/19.3.0/dbhome_1/dbs/SMALL.dbf
restore not done; all files read only, offline, excluded, or already restored
Finished restore at 27-MAR-25
RMAN> recover database;
Starting recover at 27-MAR-25
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:02
Finished recover at 27-MAR-25
报错处理
在使用同一个命令测试rman备份时报错文件已存在,但是确实将文件删过了
backup database format '/opt/oracle_backup/data_backup/20250329_data.dbf' plus archivelog format '/opt/oracle_backup/arch_backup/20250329_arch.dbf' ;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup plus archivelog command at 03/27/2025 17:15:18
ORA-19504: failed to create file "/opt/oracle_backup/arch_backup/20250329_arch1.dbf"
ORA-27038: created file already exists
Additional information: 1
问过AI后得知,文件名不能重复,如果用一个文件名备份过了,就算删除了文件,记录也还在,就会报错
解决办法是给文件名加上%U,这个参数会生成唯一ID,就不会重复了
RMAN> backup database format '/opt/oracle_backup/data_backup/20250329_data_%U.dbf' plus archivelog format '/opt/oracle_backup/arch_backup/20250329_arch_%U.dbf';
增量备份
增量备份分为全量备份、累计增量和差异增量
零级备份
backup incremental level 0 database;
一级差异增量
backup incremental level 1 database;
一级累计增量
backup incremental level 1 cumulative database;
恢复语法和普通恢复一样