在归档模式下进行数据库全恢复时数据库所经过的状态
!利用备份修复损坏或丢失的数据文件,即将备份的操作系统文件复制回数据库中原来的位置(成功之后,数据文件已经回到了过去)
!将从备份到系统崩溃这段时间内的所有提交数据由归档日志文件和联机重做日志文件中还原成数据文件所需的数据块(恢复),这也叫前滚。
!此时数据库中包含了所有的提交数据,也可能包含没有提交的数据
!系统使用还原数据块回滚未提交的数据,这样叫回滚或事物恢复
!最后,数据库到达了已恢复的状态。
归档模式下的数据库全恢复的优缺点
优点:!在恢复时不必关闭数据库
!所有的提交数据都可以恢复,这对证劵交易等金融系统是必须的
!仅需要修复损失的或丢失的数据文件
!恢复的全部时间=将损坏的或丢失的数据文件的备份复制回数据库的时间+使用归档日志文件或重做日志文件恢复提交的数据所用的时间
缺点:!数据库必须运行在归档模式下,这会增大系统的内存和CPU的开销,也会消耗一些硬盘空间
!必须保证所有的归档日志文件完好无损
!对DBA知识和技能的要求提高
Recover命令的具体用法
!recover 【automatic】database:该命令只能在数据库加载状态时使用
!recover 【automatic】tablespace ‘表空间号’|‘表空间名’:该命令只能在数据库打开状态下使用
!recover【automatic】datafile‘数据文件名’|‘数据文件号’
获取与恢复相关的信息所使用的数据字典
Dba_data_files,dba_tablespaces,v$datafile,v$recover_file,v$recovery_log
在数据库最初处于打开的状态下,进行开启数据库的恢复
!使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间及他们的相关信息
!使用数据字典dba_tablespaces获取要恢复的表空间的状态,也可以用使用数据字典v$datafile确认要恢复的数据文件的状态
!将表空间或数据文件设置成脱机状态
!使用操作系统复制命令将备份的数据文件复制回数据库中原来的位置
!使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。
!当恢复后将表空间或是数据文件设置成联机状态
!确认是否处于联机状态
在数据库最初处于关闭的状态下,进行开启数据库的恢复
!加载数据库
!使用v$datafile确认要修复的数据文件的文件名
!将出问题的数据文件脱机
!打开数据库,因为出问题的数据文件已经脱机,所有其他的数据文件都是同步的
!使用操作系统复制命令将备份的数据文件复制回数据库中原来的位置
!使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件
!当恢复完成后使用alter tablespace或alter database命令将表空间或数据文件重新设置成联机状态
!确认是否处在联机状态
恢复没有备份的数据文件
!如果数据库在打开状态,使用dba_data_files获取要恢复的数据文件与所对应的表空间及他们的状态信息
!如果数据库在打开状态,可用dba_tablespaces获取要恢复的表空间的状态,或使用v$datafile获取要恢复的数据文件的状态
!将表空间或数据文件设置成脱机
!使用v$recover_file查看数据文件的恢复状态
!使用alter database create datafile命令重建数据文件的结构
!使用v$recover_file查看数据文件的恢复状态
!使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件
!当恢复完成后使用alter tablespace或alter database命令将表空间或数据文件重新设置成联机状态
在关闭的状态下进行数据库的恢复
!如果数据库是在打开状态,使用dba_data_files获取要恢复的数据文件与所对应的表空间及他们的相关信息
!如果数据库是在打开状态,使用shutdown命令关闭数据库,可能要使用abort选项
!已加载方式启动数据库
!使用操作系统复制命令将备份的数据文件复制回数据库中原来的位置
!使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件:recover database
!使用alter database open打开数据库
怎样恢复由于磁盘损坏造成的数据库崩溃
将相应的备份的数据文件复制到新的磁盘上,使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件,然后alter database rename 修改数据文件名
当数据库崩溃时,数据库管理员的首要任务
以最快速度让数据库开启对外提供服务,而不是发现问题和修复数据库