Ubuntu上Oracle数据库的备份恢复流程是怎样的
导读:Ubuntu上Oracle数据库备份恢复流程 一、备份流程 1. 准备工作 切换Oracle用户:通过su - oracle切换至Oracle数据库用户,确保操作权限。 配置环境变量:编辑~/.bash_profile或~/.bashrc...
Ubuntu上Oracle数据库备份恢复流程
一、备份流程
1. 准备工作
- 切换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使配置生效。 - 确认归档模式:以SYSDBA身份登录SQL*Plus(
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;)。
2. 选择备份工具
(1)RMAN(物理备份,推荐)
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; EOFchmod +x /home/oracle/scripts/rman_backup.sh添加执行权限,再通过crontab -e添加定时任务(如每天凌晨2点执行):0 2 * * * /home/oracle/scripts/rman_backup.sh > > /backup/oracle/backup.log 2> & 1
(2)expdp/impdp(逻辑备份,适用于跨平台迁移)
expdp(数据泵导出)和impdp(数据泵导入)是Oracle提供的逻辑备份工具,适用于需要迁移数据到其他环境或进行选择性恢复的场景。
- 创建逻辑备份目录:以SYSDBA身份登录SQL*Plus,执行以下命令创建逻辑目录(对应Ubuntu物理路径)并授权:
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目录下。
二、恢复流程
1. 准备工作
- 确认备份可用性:检查物理备份文件(如RMAN备份的
/backup/oracle/full_*.bkp)或逻辑备份目录(如/backup/oracle/logical/hr_full.dmp)是否存在且未损坏。 - 创建恢复目录:若使用RMAN恢复,需创建恢复目录(可选但推荐),用于存储备份元数据:
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; -- 注册目标数据库
2. 选择恢复方式
(1)RMAN恢复(物理恢复)
RMAN恢复适用于数据文件损坏、丢失或数据库崩溃的场景,支持完整恢复、不完全恢复(如恢复到指定时间点)。
- 完整恢复(全备+归档日志):
- 关闭数据库:
SHUTDOWN IMMEDIATE; - 启动到MOUNT状态:
STARTUP MOUNT; - 恢复数据库:
RESTORE DATABASE;(RMAN自动查找备份文件并恢复数据文件) - 恢复归档日志:
RECOVER DATABASE;(应用归档日志和在线重做日志,使数据库达到一致状态) - 打开数据库:
ALTER DATABASE OPEN;
- 关闭数据库:
- 不完全恢复(恢复到指定时间点):
- 关闭数据库:
SHUTDOWN IMMEDIATE; - 启动到NOMOUNT状态:
STARTUP NOMOUNT; - 恢复控制文件(若控制文件损坏):
RESTORE CONTROLFILE FROM '/backup/oracle/controlfile.bkp'; - 启动到MOUNT状态:
ALTER DATABASE MOUNT; - 恢复数据库到指定时间点:
RECOVER DATABASE UNTIL TIME '2025-09-28:18:00:00'; - 打开数据库(需使用RESETLOGS重置日志序列):
ALTER DATABASE OPEN RESETLOGS;
- 关闭数据库:
(2)impdp恢复(逻辑恢复)
impdp恢复适用于逻辑备份的场景,如跨平台迁移、选择性恢复表或用户数据。
- 执行导入命令:通过终端执行
impdp命令,导入逻辑备份文件(如导入hr用户数据):
若需恢复特定表(如impdp hr/hr_password@orcl DIRECTORY=EXPDP_DIR DUMPFILE=hr_full.dmp LOGFILE=hr_import.log FULL=Yemployees表),可添加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(逻辑)验证备份完整性。 - 权限管理:确保Oracle用户对备份目录有读写权限(如
chown -R oracle:oinstall /backup/oracle)。 - 日志监控:备份和恢复过程中,实时监控日志文件(如
/backup/oracle/backup.log、hr_import.log),及时排查错误。 - 测试恢复:定期在测试环境执行恢复流程,确保备份文件有效且恢复步骤正确。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Oracle数据库的备份恢复流程是怎样的
本文地址: https://pptw.com/jishu/720535.html
