温馨提示×

centos中sqlplus备份恢复策略

小樊
48
2025-10-02 19:15:05
栏目: 云计算

CentOS环境下SQL*Plus与RMAN结合的Oracle备份恢复策略

一、备份策略

1. 冷备份(脱机备份,适用于允许停机的小型数据库)

适用场景:数据库可正常关闭的小型环境(如测试库),确保数据一致性。
操作步骤

  • 以SYSDBA身份登录SQL*Plus:sqlplus sys/your_password@orcl as sysdba
  • 关闭数据库:SHUTDOWN IMMEDIATE;
  • 复制关键物理文件到备份目录(如/backup/oracle/cold_backup):
    • 数据文件:HOST cp $ORACLE_HOME/oradata/orcl/*.dbf /backup/oracle/cold_backup/
    • 控制文件:HOST cp $ORACLE_HOME/oradata/orcl/*.ctl /backup/oracle/cold_backup/
    • 归档日志(若开启归档模式):HOST cp $ORACLE_BASE/fast_recovery_area/orcl/archivelog/* /backup/oracle/cold_backup/
  • 启动数据库:STARTUP;

2. 热备份(联机备份,适用于7×24运行环境)

前提条件:数据库必须处于ARCHIVELOG模式(执行SELECT log_mode FROM v$database;确认,若为NOARCHIVELOG,需执行SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;开启)。
操作步骤

  • 标识需备份的表空间:SELECT tablespace_name, file_name FROM dba_data_files;
  • 将表空间置于备份模式:ALTER TABLESPACE users BEGIN BACKUP;
  • 复制表空间数据文件到备份目录:HOST cp /u01/app/oracle/oradata/orcl/users01.dbf /backup/oracle/hot_backup/
  • 结束表空间备份模式:ALTER TABLESPACE users END BACKUP;
  • 备份控制文件(确保一致性):ALTER DATABASE BACKUP CONTROLFILE TO '/backup/oracle/hot_backup/controlfile.bak';
  • 归档当前在线重做日志:ALTER SYSTEM ARCHIVE LOG CURRENT;

3. 逻辑备份(数据泵,适用于跨数据库迁移或选择性恢复)

适用场景:需要导出特定用户、表或schema的数据(如用户scott的所有对象)。
操作步骤

  • 登录SQL*Plus并以SYSDBA身份创建目录对象:CREATE DIRECTORY backup_dir AS '/backup/oracle/expdp';
  • 授权目录访问权限:GRANT READ, WRITE ON DIRECTORY backup_dir TO scott;
  • 执行全库导出:expdp system/your_password@orcl DIRECTORY=backup_dir DUMPFILE=full_backup.dmp LOGFILE=full_export.log FULL=y;
  • 执行用户级导出:expdp scott/tiger@orcl DIRECTORY=backup_dir DUMPFILE=scott_backup.dmp LOGFILE=scott_export.log SCHEMAS=scott;

二、恢复策略

1. 冷备份恢复(全量恢复)

适用场景:数据库完全损坏(如磁盘故障),需恢复到最近一次冷备份点。
操作步骤

  • 关闭数据库:SHUTDOWN IMMEDIATE;
  • 删除原数据库文件(谨慎操作,确保备份可用);
  • 复制备份文件到原位置:HOST cp /backup/oracle/cold_backup/*.dbf $ORACLE_HOME/oradata/orcl/HOST cp /backup/oracle/cold_backup/*.ctl $ORACLE_HOME/oradata/orcl/
  • 启动数据库:STARTUP;

2. 热备份恢复(部分恢复,如数据文件损坏)

适用场景:单个数据文件或表空间损坏(如users01.dbf丢失)。
操作步骤

  • 将受损数据文件离线:ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf' OFFLINE;
  • 复制备份的数据文件到原位置:HOST cp /backup/oracle/hot_backup/users01.dbf /u01/app/oracle/oradata/orcl/
  • 将数据文件在线:ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf' ONLINE;
  • 若归档日志有更新,需执行介质恢复:RECOVER DATABASE;(自动应用未应用的归档日志)。

3. 逻辑备份恢复(数据泵导入)

适用场景:选择性恢复特定用户或表的数据(如scott用户的employees表丢失)。
操作步骤

  • 登录SQL*Plus并以SYSDBA身份创建目录对象:CREATE DIRECTORY restore_dir AS '/backup/oracle/expdp';
  • 执行导入:impdp scott/tiger@orcl DIRECTORY=restore_dir DUMPFILE=scott_backup.dmp LOGFILE=scott_import.log SCHEMAS=scott TABLES=employees;
  • 若表已存在,可添加TABLE_EXISTS_ACTION=REPLACE参数覆盖。

4. 不完全恢复(介质故障或用户错误,如误删除数据)

适用场景:需要恢复到特定时间点(如2025-09-30 18:00:00)或SCN(如1234567)。
操作步骤

  • 关闭数据库:SHUTDOWN IMMEDIATE;
  • 启动到挂载状态:STARTUP MOUNT;
  • 执行不完全恢复(以时间为例):RECOVER DATABASE UNTIL TIME '2025-09-30:18:00:00';(若使用SCN,替换为UNTIL SCN 1234567);
  • 打开数据库(需重置日志):ALTER DATABASE OPEN RESETLOGS;

5. 闪回数据库(快速恢复到过去状态,适用于逻辑错误)

前提条件:已启用快速恢复区域(DB_RECOVERY_FILE_DEST)和闪回日志(ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON;)。
操作步骤

  • 查询闪回窗口:SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;
  • 启动到挂载状态:STARTUP MOUNT;
  • 执行闪回(以时间为例):FLASHBACK DATABASE TO TIMESTAMP '2025-09-30 18:00:00';
  • 打开数据库:ALTER DATABASE OPEN RESETLOGS;

三、注意事项

  • 备份验证:定期测试备份文件的可用性(如尝试用impdp导入逻辑备份),避免“备份无效”问题;
  • 权限管理:确保备份/恢复操作由具有SYSDBA或相应权限的用户执行(如system);
  • 日志监控:备份/恢复过程中监控日志文件(如expdp.logRECOVER的输出),及时排查错误;
  • 存储安全:备份文件存储在独立物理设备(如外接磁盘、NAS),避免与数据库文件同存储,防止磁盘故障导致备份与数据同时丢失;
  • 自动化任务:使用Cron作业定时执行备份脚本(如每天凌晨2点执行热备份),减少人工干预。

0