Ubuntu上Oracle数据库备份恢复流程
su - oracle切换至Oracle数据库用户,确保操作权限。~/.bash_profile或~/.bashrc,添加Oracle基础路径(如ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1)、SID(如ORACLE_SID=orcl)、库路径(如LD_LIBRARY_PATH=$ORACLE_HOME/lib)等变量,执行source ~/.bash_profile使配置生效。sqlplus / as sysdba),执行archive log list确认数据库处于归档模式(若未开启,需执行shutdown immediate→修改/u01/app/oracle/product/19c/dbhome_1/dbs/init.ora中的LOG_ARCHIVE_DEST参数→startup mount→alter database archivelog;→alter database open;)。RMAN是Oracle官方推荐的物理备份工具,支持全备、增量备份、压缩备份及自动恢复,适用于生产环境。
rman target /连接目标数据库,输入以下命令完成全备(包含数据文件、控制文件、归档日志):BACKUP DATABASE PLUS ARCHIVELOG;
如需增量备份(仅备份自上次备份后修改的块),可使用:BACKUP DATABASE PLUS ARCHIVELOG INCREMENTAL LEVEL 1;
/home/oracle/scripts/rman_backup.sh,内容如下:#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
run {
allocate channel ch1 type disk;
backup database plus archivelog format '/backup/oracle/full_%U.bkp';
release channel ch1;
}
exit;
EOF
执行chmod +x /home/oracle/scripts/rman_backup.sh添加执行权限,再通过crontab -e添加定时任务(如每天凌晨2点执行):0 2 * * * /home/oracle/scripts/rman_backup.sh >> /backup/oracle/backup.log 2>&1
expdp(数据泵导出)和impdp(数据泵导入)是Oracle提供的逻辑备份工具,适用于需要迁移数据到其他环境或进行选择性恢复的场景。
CREATE OR REPLACE DIRECTORY EXPDP_DIR AS '/backup/oracle/logical';
GRANT READ, WRITE ON DIRECTORY EXPDP_DIR TO PUBLIC;
expdp命令,导出指定用户或全库数据(如导出hr用户所有数据):expdp hr/hr_password@orcl DIRECTORY=EXPDP_DIR DUMPFILE=hr_full.dmp LOGFILE=hr_export.log FULL=Y
导出完成后,备份文件将存储在/backup/oracle/logical目录下。/backup/oracle/full_*.bkp)或逻辑备份目录(如/backup/oracle/logical/hr_full.dmp)是否存在且未损坏。CREATE USER rman_cat IDENTIFIED BY rman_pass;
GRANT CONNECT, RESOURCE TO rman_cat;
GRANT RECOVERY_CATALOG_OWNER TO rman_cat;
CONNECT rman_cat/rman_pass;
CREATE CATALOG;
REGISTER DATABASE; -- 注册目标数据库
RMAN恢复适用于数据文件损坏、丢失或数据库崩溃的场景,支持完整恢复、不完全恢复(如恢复到指定时间点)。
SHUTDOWN IMMEDIATE;STARTUP MOUNT;RESTORE DATABASE;(RMAN自动查找备份文件并恢复数据文件)RECOVER DATABASE;(应用归档日志和在线重做日志,使数据库达到一致状态)ALTER DATABASE OPEN;SHUTDOWN IMMEDIATE;STARTUP NOMOUNT;RESTORE CONTROLFILE FROM '/backup/oracle/controlfile.bkp';ALTER DATABASE MOUNT;RECOVER DATABASE UNTIL TIME '2025-09-28:18:00:00';ALTER DATABASE OPEN RESETLOGS;impdp恢复适用于逻辑备份的场景,如跨平台迁移、选择性恢复表或用户数据。
impdp命令,导入逻辑备份文件(如导入hr用户数据):impdp hr/hr_password@orcl DIRECTORY=EXPDP_DIR DUMPFILE=hr_full.dmp LOGFILE=hr_import.log FULL=Y
若需恢复特定表(如employees表),可添加TABLES=employees参数:impdp hr/hr_password@orcl DIRECTORY=EXPDP_DIR DUMPFILE=hr_full.dmp LOGFILE=hr_import.log TABLES=employees
RMAN> LIST BACKUP;(RMAN)或impdp hr/hr_password@orcl DIRECTORY=EXPDP_DIR DUMPFILE=hr_full.dmp LOGFILE=test_import.log FULL=Y(逻辑)验证备份完整性。chown -R oracle:oinstall /backup/oracle)。/backup/oracle/backup.log、hr_import.log),及时排查错误。