sqlplus / as sysdba
SQL> archive log list; -- 检查是否开启归档
SQL> shutdown immediate; -- 关闭数据库
SQL> startup mount; -- 启动到mount状态
SQL> alter database archivelog; -- 开启归档模式
SQL> alter database open; -- 打开数据库
ORACLE_HOME、ORACLE_SID、PATH(包含$ORACLE_HOME/bin)已正确设置(可通过echo $ORACLE_HOME验证)。RMAN(Recovery Manager)是Oracle内置的物理备份工具,支持全库、增量及归档日志备份。
rman target /
RMAN> run {
allocate channel c1 device type disk;
backup database plus archivelog; -- 备份数据库及归档日志
crosscheck backup; -- 检查备份有效性
delete noprompt expired backup; -- 删除过期备份
release channel c1;
}
rman target /
RMAN> run {
allocate channel c1 device type disk;
backup incremental level 1 database; -- 1级增量备份(基于最近的全备份)
release channel c1;
}
/home/oracle/backup_script.sh):crontab -e
# 添加以下内容(每天凌晨1点执行)
0 1 * * * /home/oracle/backup_script.sh
expdp system/password@orcl schemas=hr directory=DATA_PUMP_DIR dumpfile=hr_backup.dmp logfile=expdp_hr.log
其中,DATA_PUMP_DIR是Oracle目录对象(需提前创建),hr为目标用户/表空间。scp命令)。/u01/oracle/oradata/ORCL、归档日志目录/archivelog):mkdir -p /u01/oracle/oradata/ORCL /archivelog
chown -R oracle:oinstall /u01/oracle /archivelog
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup nomount;
/backup/controlfile.ctl,执行:RMAN> restore controlfile from '/backup/controlfile.ctl';
RMAN> alter database mount; -- 挂载数据库(需控制文件)
RMAN> restore database; -- 恢复所有数据文件到原路径
RMAN> recover database;
RMAN> recover database until scn 123456789; -- 恢复至指定SCN
RMAN> alter database open resetlogs; -- 打开数据库(需重置日志)
resetlogs:SQL> alter database open;
RMAN> list backup;检查备份文件有效性,避免无效备份。oracle用户对备份目录、数据库目录有读写权限(chown -R oracle:oinstall)。alert.log(位于$ORACLE_BASE/diag/rdbms/ORCL/ORCL/trace/)和RMAN日志,定位错误(如ORA-19698表示日志文件不匹配,需用CATALOG命令注册日志)。以上步骤覆盖了Oracle数据库在CentOS系统中的常规备份与恢复场景,实际操作中需根据数据库版本(如11g/19c/21c)、备份策略(全备/增量)及恢复需求(完全恢复/不完全恢复)调整命令参数。