在数据库管理中,备份与恢复扮演着至关重要的角色,因为没有人能保证在处理数据时永远不会出现错误
⭐备份的方法有逻辑备份、物理备份(冷备份、热备份)等多种方式;恢复的方法也有完全恢复、不完全恢复和RMAN恢复等。
数据备份
备份策略
为了确保数据安全,制定合理的备份策略是关键。我们需要定期备份数据库,以防止数据丢失或损坏。
- 全备份:定期对整个数据库进行全量备份,确保在灾难性故障时可以完全恢复数据库
- 增量备份:仅备份自上次备份以来发生变化的数据文件;减少备份时间和存储空间
- 归档日志备份:备份所有归档日志以支持时间点恢复。
逻辑备份
概念
逻辑备份涉及将数据库中的用户对象导出到一个二进制文件中,这些记录的导出与其物理位置无关。
逻辑备份工具
Oracle提供了两种主要的逻辑备份工具:EXP/IMP 和 EXPDP/IMPDP。EXPDP和IMPDP是基于数据泵技术的新一代工具,具有更高的性能和更丰富的功能。
⭐逻辑备份工具可以直接在命令行中通过同名命令调用,无需登录数据库。
导出工具 EXPDP
- 表方式:导出指定表。
EXPDP 数据库用户名/密码@IP地址/实例名 file="文件名.dmp" log=日志文件名.log tables=表名1,表名2,…,表名n
例如,导出scott用户的emp和dept表:
EXPDP scott/tiger@127.0.0.1/orcl file="D:\bk.dmp" log=d:/back/logfile.log tables=emp,dept
# 这样就可以将本机中 scott 用户的 emp 表和 dept 表中的数据保存在D:\bk.dmp 文件中,并且将日志内容保存在同目录中的 logfile.log 文件里
- 用户方式:导出指定用户的所有对象和数据
EXPDP 数据库用户名/密码@IP地址/实例名 file=文件名.dmp log=日志文件名.log schemas=用户名
- 全库方式:导出数据库中的所有对象和数据,需要DBA角色执行
EXPDP 数据库用户名/密码@IP地址/实例名 file=文件名.dmp log=日志文件名.log full=y
导入工具 IMPDP
IMPDP是Oracle数据库中用于逻辑恢复的工具,它可以从文件中导入数据到数据库中。
- 表方式:导入指定的表
IMPDP 数据库用户名/密码@IP地址/实例名 file=文件名.dmp log=日志文件名.log tables=表名1,表名2,…,表名n remap_schema=源用户名:目标用户名
- 用户方式:导入指定用户的所有对象和数据
IMPDP 据库用户名/密码@IP地址/实例名 file=文件名.dmp log=日志文件名.log schemas=用户名 remap_schema=源用户名:目标用户名
- 全库方式:导入数据库中的所有对象和数据,需要DBA角色执行
IMPDP 数据库用户名/密码@IP地址/实例名 file=文件名.dmp log=日志文件名.log full=y remap_schema=源用户名:目标用户名
在这些命令中,remap_schema
参数用于在导入时将源数据库的用户对象映射到目标数据库的用户空间中,这在进行跨数据库迁移时非常有用。
热备份与冷备份
物理备份可以分为冷备份和热备份。
- 冷备份:又称脱机备份;在数据库关闭后进行的备份,提供最完整的备份,但速度较慢。
- 热备份:也称为联机备份;在数据库运行的同时进行备份,不如冷备份完整,因为数据库在备份过程中仍在发生更改。
// 热备份存在着难以维护等风险。为了确保备份的可靠性,大多采用冷备份
冷备份实质上是数据库相关文件的复制。 在数据库关闭后,将所有关键性文件(数据文件、控制文件、联机日志文件等)复制到另外的位置。
⭐冷备份最重要的一点是要知道这些文件的存放位置,这些位置可以通过超级管理员SYS账户进行查询
冷备份的具体步骤如下:
- 使用SYS用户以SYSDBA身份登录数据库:
SQLPLUS sys/change_on_install AS SYSDBA
- 查询所有控制文件的位置:
SELECT * FROM v$controlfile;
- 查询所有日志文件的位置:
SELECT * FROM v$logfile;
- 查询所有数据文件的位置:
SELECT * FROM v$datafile;
- 查询服务器参数文件(spfile)的位置(如果使用):
SHOW PARAMETER spfile;
- 记录以上所有文件的位置,之后关闭数据库实例
SHUTDOWN immediate;
- 根据记录的位置,将以上所有文件复制到备份目录中
- 重新启动数据库实例
STARTUP;
⭐冷备份完成以后,如果要进行恢复操作,只需要先关闭数据库实例,然后将之前备份的文件再复制回原目录中,最后重启数据库实例。
备份工具
RMAN (Recovery Manager)
Oracle提供的用于备份和恢复数据库的工具。提供全库备份、增量备份、归档日志备份等功能
- 全库备份命令:
RMAN> backup database;
- 增量备份命令:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
- 备份验证:
RMAN> validate backup;用于验证备份的完整性和一致性
Export/Import备份
通过将数据导出到文件中,然后从文件中导入数据来工作。常用于数据迁移或备份
备份操作
创建备份:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
备份表空间文件
- 设置备份模式:
ALTER TABLESPACE tablespace_name BEGIN BACKUP;
- 拷贝表空间文件:
!CP /path/tablespace_name /file/path;
# /path/tablespace_name 为实际的表空间文件路径,/file/path 为备份文件的目标路径
⭐注意:!CP 是在RMAN命令行中使用的 shell 命令
- 关闭备份模式:
ALTER TABLESPACE tablespace_name END BACKUP;
备份控制文件
- 备份控制文件命令:
ALTER DATABASE backup controlfile to 'controlfile_backup_name' REUSE;
⭐注意:controlfile_backup_name
需要替换为实际的控制文件备份路径和文件名。
数据恢复
在数据丢失或损坏的情况下,需要及时进行数据恢复。Oracle提供了多种恢复策略,以确保数据的完整性和可用性。
时间点恢复 (PITR)
时间点恢复(PITR)是一种恢复技术,它允许数据库管理员将数据库恢复到过去的特定时间点。这在需要撤销意外更改或恢复到数据丢失前的状态时非常有用。
- PITR命令
RMAN> RECOVER DATABASE UNTIL TIME '指定时间';
⭐指定时间 需要替换为希望恢复到的具体时间点。时间格式通常为'YYYY-MM-DD HH24:MI:SS'
。
完全恢复
完全恢复是指从备份中恢复整个数据库的过程。这通常在数据库发生严重损坏或数据文件丢失时使用。
- 恢复数据库文件:
RMAN> RESTORE DATABASE;
此命令用于从备份中恢复数据库文件
2. 应用归档日志以完成恢复:
RMAN> RECOVER DATABASE;
此命令用于应用归档日志,以确保数据库恢复到最新状态
虚拟回收站 (Recycle Bin)
Oracle的虚拟回收站是一个自动功能,它保存了被删除的对象,使它们可以被恢复。
- 误删除恢复:误删除的对象会被放入虚拟回收站,可以恢复。
- 查看回收站:
SELECT * FROM dba_recyclebin;
虚拟回收站是一个用户友好的功能,它减少了因误操作导致的数据丢失风险。
备份与恢复的最佳实践
- 定期备份:根据业务需求制定备份计划。
- 测试恢复:定期测试备份和恢复流程。
- 备份存储安全:确保备份文件的安全性和可访问性。