centos中sqlplus的备份与恢复策略是什么
导读:一、备份策略 1. 冷备份(脱机备份) 适用场景:数据库可正常关闭时的完整备份(如维护窗口期)。 操作步骤: 以SYSDBA身份登录SQL*Plus:sqlplus sys/密码@数据库名 as sysdba; 关闭数据库:SHUTDOW...
一、备份策略
1. 冷备份(脱机备份)
适用场景:数据库可正常关闭时的完整备份(如维护窗口期)。
操作步骤:
- 以SYSDBA身份登录SQL*Plus:
sqlplus sys/密码@数据库名 as sysdba; - 关闭数据库:
SHUTDOWN IMMEDIATE; - 复制关键文件到备份目录(需提前创建备份目录,如
/u01/backup):HOST cp $ORACLE_BASE/oradata/数据库名/*.dbf /u01/backup/ # 数据文件 HOST cp $ORACLE_BASE/oradata/数据库名/*.ctl /u01/backup/ # 控制文件 HOST cp $ORACLE_BASE/oradata/数据库名/*.log /u01/backup/ # 重做日志文件 - 启动数据库:
STARTUP。
2. 热备份(联机备份,RMAN推荐)
适用场景:数据库需保持运行状态的备份(生产环境常用)。
操作步骤:
- 启动RMAN并连接目标数据库:
rman target /; - 执行全库备份(包含数据文件、控制文件、归档日志):
BACKUP DATABASE PLUS ARCHIVELOG; # 备份所有数据文件及归档日志 BACKUP CURRENT CONTROLFILE; # 备份控制文件(冗余) - 可添加压缩选项减少存储占用:
BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/u01/rman_bak/backup_%U' COMPRESSION ENABLE;。
3. 逻辑备份(Data Pump)
适用场景:需要逻辑级备份(如跨平台迁移、选择性恢复表/用户)。
操作步骤:
- 登录SQL*Plus创建目录对象(需有读写权限):
CREATE DIRECTORY backup_dir AS '/u01/backup'; GRANT READ, WRITE ON DIRECTORY backup_dir TO 用户名; - 执行导出(全库/用户/表级):
expdp 用户名/密码@数据库名 DIRECTORY=backup_dir DUMPFILE=备份名.dmp LOGFILE=导出日志.log FULL=y; # 全库 expdp 用户名/密码@数据库名 DIRECTORY=backup_dir DUMPFILE=用户备份.dmp LOGFILE=用户导出.log SCHEMAS=用户名; # 用户级 expdp 用户名/密码@数据库名 DIRECTORY=backup_dir DUMPFILE=表备份.dmp LOGFILE=表导出.log TABLES=表名; # 表级
4. 闪回数据库(快速回退)
适用场景:误操作(如删除表、数据)或逻辑错误导致的数据异常,需快速恢复到指定时间点。
前提条件:
- 数据库处于归档模式;
- 已开启闪回日志(
ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON;); - 设置快速恢复区(
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/u01/flash_recovery' SCOPE=BOTH;)。
操作步骤: - 关闭数据库:
SHUTDOWN IMMEDIATE; - 启动到mount状态:
STARTUP MOUNT; - 执行闪回(指定时间点或SCN):
FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP('2025-11-09 10:00:00', 'YYYY-MM-DD HH24:MI:SS'); FLASHBACK DATABASE TO SCN 123456789; -- 指定系统改变号 - 打开数据库(需重置日志):
ALTER DATABASE OPEN RESETLOGS;。
二、恢复策略
1. 冷备份恢复
适用场景:数据文件、控制文件等物理文件损坏,且无归档日志或无需恢复到最新状态。
操作步骤:
- 关闭数据库:
SHUTDOWN IMMEDIATE; - 覆盖备份文件:将冷备份目录中的数据文件、控制文件、重做日志文件复制到原位置(如
/u01/app/oracle/oradata/数据库名/); - 启动数据库:
STARTUP。
2. 热备份恢复(RMAN)
适用场景:数据文件损坏、丢失或需要恢复到最新状态(归档模式下)。
操作步骤:
- 启动RMAN并连接目标数据库:
rman target /; - 恢复数据文件:
RESTORE DATABASE;(RMAN自动定位备份文件); - 恢复归档日志:
RECOVER DATABASE;(自动应用归档日志和在线重做日志); - 打开数据库:
ALTER DATABASE OPEN;。
3. 逻辑备份恢复(Data Pump)
适用场景:表、用户或部分数据丢失,需精确恢复逻辑数据。
操作步骤:
- 登录SQL*Plus创建恢复目录(若目录不存在):
CREATE DIRECTORY restore_dir AS '/u01/restore';; - 执行导入(全库/用户/表级):
impdp 用户名/密码@数据库名 DIRECTORY=restore_dir DUMPFILE=备份名.dmp LOGFILE=恢复日志.log FULL=y; # 全库 impdp 用户名/密码@数据库名 DIRECTORY=restore_dir DUMPFILE=用户备份.dmp LOGFILE=用户恢复.log SCHEMAS=用户名; # 用户级 impdp 用户名/密码@数据库名 DIRECTORY=restore_dir DUMPFILE=表备份.dmp LOGFILE=表恢复.log TABLES=表名; # 表级 - 可添加
TABLE_EXISTS_ACTION=APPEND选项追加数据(避免表已存在的错误)。
4. 不完全恢复(介质故障)
适用场景:归档日志丢失、数据文件损坏且无法恢复到最新状态(如误删除归档日志)。
操作步骤:
- 关闭数据库:
SHUTDOWN IMMEDIATE; - 启动到mount状态:
STARTUP MOUNT; - 执行不完全恢复(指定时间点或SCN):
RECOVER DATABASE UNTIL TIME '2025-11-09 09:00:00'; # 恢复到指定时间 RECOVER DATABASE UNTIL SCN 123456789; # 恢复到指定SCN - 打开数据库(需重置日志):
ALTER DATABASE OPEN RESETLOGS;(重置日志后,数据库会生成新的 incarnation,后续恢复需指定该 incarnation)。
5. 控制文件恢复
适用场景:控制文件损坏或丢失(数据库无法启动)。
操作步骤:
- 若有多重控制文件(建议配置),复制完好的控制文件到损坏位置;
- 若无多重控制文件,需从备份恢复:
- 关闭数据库:
SHUTDOWN IMMEDIATE; - 复制备份的控制文件到原位置(如
$ORACLE_BASE/oradata/数据库名/control01.ctl); - 启动数据库:
STARTUP;
- 关闭数据库:
- 若无备份,可使用
ALTER DATABASE BACKUP CONTROLFILE TO TRACE生成创建脚本,手动创建控制文件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos中sqlplus的备份与恢复策略是什么
本文地址: https://pptw.com/jishu/746286.html
