阅读量:3
Linux环境下Oracle数据库备份与恢复方法
一、物理备份(基于RMAN工具)
RMAN(Recovery Manager)是Oracle官方推荐的物理备份工具,支持完全备份、增量备份(Level 0/1)、归档日志备份,并能跳过未使用数据块,提升备份效率。
1. 全库备份(含归档日志)
rman target /
run {
backup database plus archivelog; -- 备份数据库及归档日志
backup current controlfile; -- 备份控制文件(可选但建议)
}
2. 增量备份(仅备份变化数据)
rman target /
run {
backup incremental level 1 database; -- 一级增量备份(基于上次Level 0或Level 1)
-- 或备份特定表空间
backup incremental level 1 tablespace users;
}
3. 恢复流程(以全库恢复为例)
rman target /
run {
restore database; -- 恢复数据文件、控制文件
recover database; -- 应用归档日志至最新状态
alter database open; -- 打开数据库
}
4. 自动化备份(通过cron定时任务)
编辑/etc/crontab,添加每日凌晨2点执行的备份脚本:
0 2 * * * /bin/bash /path/to/rman_backup.sh >> /var/log/oracle_rman.log 2>&1
脚本内容示例(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 {
backup database plus archivelog format '/backup/oracle/%U.bak';
delete noprompt obsolete; -- 删除过期备份
}
exit;
EOF
二、逻辑备份(基于Data Pump工具)
expdp(导出)/impdp(导入)是Oracle的逻辑备份工具,支持全库备份、schema备份、表级备份,适用于跨平台数据迁移或选择性恢复。
1. 全库备份
expdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=expdp_full.log full=y
2. 特定schema备份
expdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=schema_backup.dmp logfile=expdp_schema.log schemas=scott
3. 恢复流程(以全库恢复为例)
impdp system/password@ORCL directory=DATA_PUMP_DIR dumpfile=full_backup.dmp logfile=impdp_full.log full=y
4. 注意事项
- 导入前需确保目标数据库存在对应的schema(若恢复全库,需提前创建);
- 若恢复到不同数据库,可使用
remap_schema(重映射schema)或remap_tablespace(重映射表空间)参数。
三、物理冷备份(数据库关闭时备份)
冷备份需在数据库关闭状态下进行,适用于需要完整一致性备份的场景(如版本升级前)。
1. 备份步骤
# 1. 关闭数据库
sqlplus / as sysdba <<EOF
SHUTDOWN IMMEDIATE;
EOF
# 2. 复制数据库文件(数据文件、控制文件、归档日志、参数文件)
cp -R /u01/oradata/ORCL /backup/ORCL_cold
# 3. 启动数据库
sqlplus / as sysdba <<EOF
STARTUP;
EOF
2. 恢复步骤
# 1. 关闭数据库
sqlplus / as sysdba <<EOF
SHUTDOWN IMMEDIATE;
EOF
# 2. 删除原数据库文件(谨慎操作)
rm -rf /u01/oradata/ORCL/*
# 3. 复制备份文件到原位置
cp -R /backup/ORCL_cold/* /u01/oradata/ORCL/
# 4. 启动数据库
sqlplus / as sysdba <<EOF
STARTUP;
EOF
四、Oracle Data Guard(高可用与灾难恢复)
Data Guard是Oracle的高可用解决方案,通过standby数据库(物理/逻辑)实现数据同步,支持switchover(计划切换)和failover(故障切换),确保业务连续性。
1. 物理standby配置步骤(简要)
(1)准备主库(Primary Database)
-- 修改主库参数(在sqlnet.ora中添加)
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,STANDBY)';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=STANDBY ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY';
SQL> ALTER SYSTEM SET FAL_SERVER=STANDBY;
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> ALTER DATABASE ARCHIVELOG; -- 确保主库开启归档
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/oradata/ORCL/standby_redo01.log') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/oradata/ORCL/standby_redo02.log') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/oradata/ORCL/standby_redo03.log') SIZE 50M;
SQL> ALTER DATABASE FORCE LOGGING; -- 强制日志模式
(2)创建standby数据库
- 使用RMAN从主库备份恢复standby数据库:
rman target sys/password@ORCL auxiliary sys/password@STANDBY
run {
duplicate target database for standby from active database dorecover nofilenamecheck;
}
(3)监控数据同步
-- 查看主库redo传输状态
SQL> SELECT PROCESS, STATUS, BLOCKS FROM V$MANAGED_STANDBY;
-- 查看standby库应用状态
SQL> SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
2. 角色切换(Switchover)
-- 在主库执行
SQL> ALTER DATABASE SWITCHOVER TO STANDBY;
-- 在standby库执行
SQL> ALTER DATABASE SWITCHOVER TO PRIMARY;
3. 故障切换(Failover)
当主库不可用时,将standby库提升为primary:
-- 在standby库执行
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
五、备份与恢复注意事项
- 备份验证:定期执行
RMAN> LIST BACKUP;检查备份有效性,避免无效备份; - 归档日志保护:确保归档日志及时备份(可通过
BACKUP ARCHIVELOG ALL DELETE INPUT;实现),防止日志丢失导致无法恢复; - 存储空间管理:使用
RMAN> DELETE NOPROMPT OBSOLETE;删除过期备份,避免磁盘空间耗尽; - 恢复测试:每季度至少进行一次恢复测试,确保备份流程和命令正确;
- 环境一致性:恢复环境的Oracle版本、操作系统、字符集需与生产环境一致,避免兼容性问题。
以上就是关于“Linux Oracle备份与恢复方法是什么”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm