【Oracle】数据备份与恢复

在这里插入图片描述

个人主页:Guiat
归属专栏:Oracle

在这里插入图片描述

正文

1. Oracle备份恢复概述

Oracle数据库的备份与恢复就像给你的数据上了一道保险,万一出现意外情况,你总能有个可靠的退路。无论是硬件故障、人为误操作,还是自然灾害,备份都是你最后的救命稻草。

1.1 为什么备份这么重要?

数据库备份不仅仅是为了防范灾难,更是为了:

  • 保护企业的核心数据资产
  • 满足法律法规和合规性要求
  • 确保业务连续性不中断
  • 提供测试和开发环境的数据源
  • 支持历史数据的归档需求

1.2 Oracle备份策略全景图

Oracle提供了多种备份方式,每种都有自己的特点和适用场景:

Oracle备份策略
物理备份
逻辑备份
冷备份
热备份
RMAN备份
Export/Import
Data Pump
SQL脚本
数据库完全关闭
拷贝所有数据文件
归档模式下
在线备份
Oracle官方工具
增量备份

2. 物理备份详解

2.1 冷备份 - 最简单粗暴的方式

冷备份就是把数据库完全关闭,然后把所有相关文件都拷贝一份。虽然简单,但是对业务影响比较大。

2.1.1 冷备份的步骤

-- 1. 首先查看数据库当前状态
SELECT name, open_mode FROM v$database;

-- 2. 查看数据文件位置
SELECT file_name, tablespace_name FROM dba_data_files
UNION ALL
SELECT file_name, tablespace_name FROM dba_temp_files;

-- 3. 查看控制文件位置
SELECT name FROM v$controlfile;

-- 4. 查看日志文件位置
SELECT member FROM v$logfile;

-- 5. 正常关闭数据库
SHUTDOWN IMMEDIATE;

关闭数据库后,在操作系统层面进行文件拷贝:

#!/bin/bash
# 冷备份脚本示例

# 设置备份目录
BACKUP_DIR="/backup/cold_backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUP_DIR

# 备份数据文件
cp /u01/oradata/ORCL/*.dbf $BACKUP_DIR/
cp /u01/oradata/ORCL/temp01.dbf $BACKUP_DIR/

# 备份控制文件
cp /u01/oradata/ORCL/control*.ctl $BACKUP_DIR/

# 备份日志文件
cp /u01/oradata/ORCL/redo*.log $BACKUP_DIR/

# 备份参数文件
cp $ORACLE_HOME/dbs/spfileORCL.ora $BACKUP_DIR/
cp $ORACLE_HOME/dbs/initORCL.ora $BACKUP_DIR/

# 备份密码文件
cp $ORACLE_HOME/dbs/orapwORCL $BACKUP_DIR/

echo "冷备份完成,备份位置:$BACKUP_DIR"

2.1.2 冷备份恢复过程

#!/bin/bash
# 冷恢复脚本示例

# 停止数据库
sqlplus / as sysdba << EOF
SHUTDOWN ABORT;
EXIT;
EOF

# 恢复所有文件
BACKUP_DIR="/backup/cold_backup_20241201_140000"
cp $BACKUP_DIR/*.dbf /u01/oradata/ORCL/