900 likes | 1.09k Views
数据库的备份与恢复. 概述 Oracle 的恢复结构和进程 故障的种类与原因 数据库的物理备份 数据库的完整恢复 数据库的不完整恢复 数据库的逻辑备份. 备份与恢复的问题. 防止由于各种故障导致的数据库破坏 延长平均故障发生时间 Mean-Time-Between-Failures (MTBF) 减少平均故障恢复时间 Mean-Time-To-Recover (MTTR) 避免数据丢失. 定义备份与恢复策略. 业务需求 技术需求 操作需求 并发管理. 业务需求. 平均故障恢复时间 Mean-Time-To-Recover
E N D
数据库的备份与恢复 • 概述 • Oracle的恢复结构和进程 • 故障的种类与原因 • 数据库的物理备份 • 数据库的完整恢复 • 数据库的不完整恢复 • 数据库的逻辑备份
备份与恢复的问题 • 防止由于各种故障导致的数据库破坏 • 延长平均故障发生时间Mean-Time-Between-Failures (MTBF) • 减少平均故障恢复时间Mean-Time-To-Recover (MTTR) • 避免数据丢失
定义备份与恢复策略 • 业务需求 • 技术需求 • 操作需求 • 并发管理
业务需求 • 平均故障恢复时间Mean-Time-To-Recover • 平均故障发生时间Mean-Time-Between-Failure
操作需求 • 24小时运行 • 用户和系统操作员评定 • 测试和检验备份是否有效
技术需求 • 资源:硬件,软件,人力及时间 • 操作系统文件的物理映象备份 • 数据库中对象的逻辑备份 • 数据库配置 • 事务的多少影响备份的频度
灾难恢复问题 • 主要的灾难事件有: • 地震,火灾,水灾或机器丢失 • 存储硬件或软件的故障 • 关键人员的流失,例如数据库管理员 • 是否有定期测试的计划 • 是否按照计划进行测试
数据库的备份与恢复 • 概述 • Oracle的恢复结构和进程 • 故障的种类与原因 • 数据库的物理备份 • 数据库的完整恢复 • 数据库的不完整恢复 • 数据库的逻辑备份
SMON DBWn PMON CKPT LGWR ARCn Data file 1 Control files Redo logfile 1 Data file 2 Parameterfile Redo logfile 2 Archivedlog files Data file 3 Passwordfile Oracle的恢复有关结构 Instance SGA Shared pool Locks Large pool Shared SQLand PL/SQL Serverprocess Userprocess Data buffercache Redo logbuffer Data dict.cache PGA Database
Serverprocess Userprocess PGA Data file 1 Control files Redo logfile 1 Data file 2 Parameterfile Redo logfile 2 Archivedlog files Data file 3 Passwordfile 数据库高速缓存, DBWn, 和数据文件 Instance SGA Shared pool Locks Large pool Shared SQLand PL/SQL Data buffercache Redo logbuffer Data dict.cache SMON DBW0 PMON CKPT LGWR ARCn DBW1 Database
Data file 1 Control files Redo logfile 1 Data file 2 Parameterfile Redo logfile 2 Archivedlog files Data file 3 Passwordfile 重做日志缓存, LGWR, 和重做日志文件 Instance SGA Shared pool Locks Large pool Shared SQLand PL/SQL Serverprocess Userprocess Data buffercache Redo logbuffer Data dict.cache PGA SMON DBWn PMON CKPT LGWR ARCn Database
Group 1 Group 1 Group 2 Group 3 Log1a.rdo Log1a.rdo Log2a.rdo Log3a.rdo Log1b.rdo Log1b.rdo Log2b.rdo Log3b.rdo 多重的重做日志文件 磁盘1 (成员1) 磁盘2 (成员2)
Instance SGA Shared pool Locks Large pool Shared SQLand PL/SQL Serverprocess Userprocess Data buffercache Redo logbuffer Data dict.cache PGA SMON DBWn PMON CKPT LGWR ARCn Data file 1 Control files Redo logfile 1 Data file 2 Parameterfile Redo logfile 2 Archivedlog files Data file 3 Passwordfile Database CKPT进程
Serverprocess Userprocess PGA Data file 1 Redo logfile 1 Control files Data file 2 Parameterfile Redo logfile 2 Archivedlog files Data file 3 Passwordfile Database 多重的控制文件 Instance SGA Shared pool Locks Large pool Shared SQLand PL/SQL Data buffercache Redo logbuffer Data dict.cache SMON DBWn PMON CKPT LGWR ARCn
ARCn进程和归档日志文件 Instance SGA Shared pool Locks Large pool Shared SQLand PL/SQL Serverprocess Userprocess Data buffercache Redo logbuffer Data dict.cache PGA SMON DBWn PMON CKPT LGWR ARC0 ARC1 Control files Data file 1 Redo logfile 1 Archivedlog files dest2 Data file 2 Parameterfile Redo logfile 2 Archivedlog files dest1 Data file 3 Passwordfile Database
多个进程和归档目标 RFS1 ARC1 Onlinelog files • 多个归档进程 • 多个归档目标: 本地磁盘和/或远程数据库 • 增加归档的吞吐量 • 较少的手工归档 ARC0 Log filesto apply Archivedlog files Primary site Standby site
数据库的备份与恢复 • 概述 • Oracle的恢复结构和进程 • 故障的种类与原因 • 数据库的物理备份 • 数据库的完整恢复 • 数据库的不完整恢复 • 数据库的逻辑备份
故障的种类 • 语句故障 • 用户进程故障 • 用户错误 • 实例故障 • 介质故障
语句故障的原因 • 应用程序中的逻辑错误 • 企图向表里输入坏数据 • 企图执行一个无效权限的操作 • 企图创建一个表,而又超过被分配的限额 • 企图对一个表进行插入或更新操作,该操作引起存储空间的分配,而此时表空间的空闲空间已经不足
语句故障的解决 • 改正程序的逻辑流程 • 修改并重新提交SQL语句 • 提供必要的数据库权限 • 使用ALTER USER命令改变用户使用存储空间的限额 • 扩充表空间
用户进程失败的原因 • 用户在会话当中执行了非正常的断开 • 用户会话非正常结束 • 用户程序引发一个结束会话的例外
用户进程失败的解决 • PMON进程回滚事务,并且释放资源和占据的锁 • PMON进程可以检测非正常结束的用户进程
可能发生的用户错误 SQL> DROP TABLE Employee; SQL> TRUNCATE TABLE Employee; SQL> DELETE FROM Employee; SQL> UPDATE Employee 2 SET SALARY = SALARY * 1.5; SQL> COMMIT;
用户错误的解决 • 对数据库用户进行培训 • 从有效的备份进行恢复 • 从卸出的表进行装入 • 执行时间点的恢复
Instance Serverprocess Userprocess SGA Shared pool PGA Locks Large Pool Shared SQLand PL/SQL 2 7 Data buffer Redo log buffer Data dict.cache 1 Serverprocess Userprocess SMON DBWn PMON CKPT LGWR ARCn PGA 3 5 2 146 144 144 146 145 146 144 145 Data file 1 Control files Redo logfile 1 4 6 145 146 144 145 Data file 2 Parameterfile Redo logfile 2 146 144 145 Data file 3 Passwordfile Database 实例故障的原因
实例故障的恢复 • 不需要数据库管理员采取专门的恢复 • 启动实例 • 等待要打开的数据库的通知 • 通报用户 • 检查警告文件,得到故障发生的原因
2. 前滚 (重做) 3. 文件中提交的和未提交的数据 4. 回滚 (撤消) 5.文件中提交的数据 Serverprocess SQL*Plus SMON DBWn PMON CKPT LGWR PGA 146.1 146.5 146.5 146.5 146.5 Data file 1 Control files Data File 1 Redo logFile 1 Redo logfile 1 146.5 146.2 145 RBS Data file RBS Data File Redo logfile 2 146.5 Data file 3 Database 实例恢复的阶段 1. 数据文件不同步 Instance SGA Shared pool Locks Large pool Shared SQLand PL/SQL Data buffercache Redo log buffer Data dict.cache ARCn 检查点 RBS
介质故障的原因 • 磁盘驱动器的头发生故障 • 读写数据文件时发生物理问题 • 文件误删除
介质故障的解决 • 根据所选择的备份方法及受影响的文件,决定恢复策略 • 如果可能,应用归档日志文件来恢复上次备份以来所提交的数据
数据库同步 • 数据库打开时全部数据文件(脱机或只读除外)必须同步 • 同步是根据当前的检查点进行的 • 应用重做日志来同步文件 • Oracle服务器自动请求重做日志
数据库的备份与恢复 • 概述 • Oracle的恢复结构和进程 • 故障的种类与原因 • 数据库的物理备份 • 数据库的完整恢复 • 数据库的不完整恢复 • 数据库的逻辑备份
备份方法 关闭的或打开的数据库 关闭的数据库 No archive mode Archive mode Physical backup
关闭的数据库备份 Data files Control files Parameter files Passwordfile Redo log files 联机或脱机存储
关闭的数据库备份的优点 • 概念简单 • 易于操作 • 完全不需要系统操作员交互
数据库文件信息 • 数据字典视图 V$DATAFILE V$CONTROLFILE V$LOGFILE DBA_DATA_FILES
执行一个关闭的数据库备份 2 SHUTDOWN IMMEDIATE; 3 HOST cp <files> /backup/ 1 Data files Log files Control files Passwordfile Parameter files 4 STARTUP OPEN;
打开的数据库备份 Control files Data files Parameter files Online redolog files Archived redolog files Password file
打开的数据库备份的优点 • 维护数据库的高可用性 • 可以在表空间级或数据文件级完成 • 支持不停顿的业务需求
LGWR ARC0 052 051 054 053 052 051 051 054 053 052 053 归档日志文件 打开的数据库备份需求 归档方式 联机日志文件
Tablespace USER_DATA Tablespace USER_DATA user01.dbf user02.dbf user01.dbf user02.dbf 打开的数据库备份选项 表空间的 所有数据文件 单个数据文件
备份状态信息 • 数据字典视图: • V$BACKUP • V$DATAFILE_HEADER
控制文件的备份 • 创建一个二进制映象: alter database backup controlfile to control1.bkp`; • 创建一个文本跟踪文件: alter database backup controlfile to trace;
数据库的备份与恢复 • 概述 • Oracle的恢复结构和进程 • 故障的种类与原因 • 数据库的物理备份 • 数据库的完整恢复 • 数据库的不完整恢复 • 数据库的逻辑备份
Instance Serverprocess Userprocess SGA Shared pool PGA Locks Large Pool Shared SQLand PL/SQL Data Buffer Redo Log Buffer Data dict.cache Serverprocess Userprocess SMON DBWn PMON CKPT LGWR ARCn PGA 144 144 144 146 146 146 Data file 1 Control files Data File 1 Control Files Redo logfile 1 Redo logFile 1 144 146 145 145 Data file 2 Data File 2 Redo logfile 2 Parameterfile Redo logFile 2 144 146 Data file 3 Data File 3 Passwordfile Database 介质故障
介质故障和恢复:NOARCHIVELOG 模式的数据库 • 故障:磁盘,数据文件的丢失,或破坏 • 恢复:还原全部Oracle文件: • 数据文件 • 控制文件 • 重做日志文件 • 口令文件(可选) • 参数文件(可选)
恢复:NOARCHIVELOG 模式 • 优点: • 易于执行,错误风险较低 • 恢复时间取决于全部文件的还原时间 • 缺点: • 数据丢失,需要手工重新应用 • 整个数据库被还原到最近的全数据库关闭的备份
144 144 144 Data file 1 Control files Redo logfile 1 144 143 Data file 2 Parameterfile Redo logfile 2 144 Data file 3 Passwordfile Backup 还原最近的备份 146 144 146 144 144 146 Data File 1 Data file 1 Control Files Control files Redo logFile 1 Redo logfile 1 144 146 145 143 Data File 2 Data file 2 Parameterfile ParameterFile Redo logFile 2 Redo logfile 2 144 146 Data File 3 Data file 3 Passwordfile PasswordFile Database Database 恢复: NOARCHIVELOG模式
数据文件还原至不同的位置 • 重新命名文件或目录位置 SQL> connect system/manager as sysdba;Connected. SQL> startup mount pfile=initDB00.ora;Oracle instance started. SQL> alter database rename file 2> ‘disk1/data/user_01.dbf’ 3> to ‘disk2/data/user_01.dbf’;Statement Processed. SQL> alter database open;
介质故障和恢复: ARCHIVELOG模式的数据库 • 故障:磁盘,数据文件的丢失,或破坏 • 恢复: • 还原的数据文件必须脱机 • 仅还原丢失或破坏的数据文件 • 不要还原控制文件,重做日志文件,口令文件或参数文件 • 恢复数据文件
ARCHIVELOG模式的恢复(完整恢复) • 优点: • 仅需要还原丢失的文件 • 恢复所有的数据到出故障的时间点 • 恢复时间包括还原丢失的文件和应用全部归档日志文件的时间 • 缺点: • 必须有从还原的备份以来的全部归档日志文件