oracle用户管理的完全恢复
- 格式:pdf
- 大小:9.47 KB
- 文档页数:4
标题:Oracle 10G 用户管理的完全恢复 投稿: wchfei - 最近更新 () 用户管理的完全恢复是指当数据文件出现介质失败,使用OS命令转储数据文件,并使用SQL恢复命令执行重做日志和归档日志,最终将数据文件恢复到失败点。
完全恢复只适合归档模式5.1 完全恢复简介假如数据库只有两个日志组,并且在日志序列100的时候进行了数据库的完全备份,假如在日志序列在150的时候出现数据文件出现介质损坏,因为日志序列100-148的重做记录已经备份到归档日志,149-150的日志序列存放在重做日志中,所以,我们可以利用这些进行数据库的完全恢复。
5.2 诊断数据文件的介质恢复 1、 数据库关闭状态下如果数据库处于关闭状态下,数据文件出现介质损坏,那么在打开数据时,后台进程DBWR会将错误信息写入到跟踪文件中,并在屏幕上显示如下的错误:ORA-01157:无法标示/锁定数据文件 4 – 请阅读DBWR跟踪文件ORA-01110:数据文件4:’D:\demo\user01.dbf’2、 数据库处于OPEN状态下在数据库处于OPEN状态下,如果数据文件出现介质失败,那么系统发出检查点时,oracle会自动脱机该数据文件,当访问到该数据文件时,会出现如下的错误信息:SQL>select * from emp;SELECT * from emp *ERROR位于第1行ORA-00376:此时无法读取数据文件 4 ORA-01110:数据文件4:’D:\demo\user01.dbf’3、 OPEN状态下诊断损坏数据块在数据库处于OPEN状态下,若数据文件某个数据块出现介质损坏,并且SQL操作涉及到该数据块,那么服务器进程会终止该SQL操作,并将数据块的错误信息写入到ALTER文件和用户进程跟踪文件,并在屏幕信息显示:SQL>select * from emp;SELECT * from emp *ERROR位于第1行ORA-01578:ORACLE数据块损坏(文件号 4,块号34) ORA-01110:数据文件4:’D:\demo\user01.dbf’5.3 转储数据文件 当数据文件出现介质损坏时,在执行SQL命令恢复数据库之前,必须执行OS命令转储数据文件。
如果数据文件被误删除,那么只需将备份文件放回原位置即可,如果是数据文件所在磁盘出现损坏,那么需要将数据文件复制到其他磁盘,但这时需要修改控制文件,定位该数据文件。
当数据库处于MOUNT状态,DBA可以改变任何数据文件的位置,如果过数据库处于OPEN状态,DBA可以改变除了SYSTEM表空间之外的所有表空间的数据文件的位置。
1、 在MOUNT状态下改变数据文件的位置尽管在MOUNT状态下可以改变任何数据文件的位置,但只要用在改变SYSTEM表空间的数据文件的位置。
示例:SQL>conn sys/manage@demo as sysdbaSQL>host copy d:\demo\system01.dbf e:\demo\ system01.dbfSQL>alter database rename file ‘d:\demo\ system01.dbf’ to‘e:\deom\system01.dbf’;2、 在OPEN状态下改变数据文件的位置在OPEN状态下,可以使用alter tablespace rename datafile和alter database rename file。
具体的步骤:SQL>conn sys/manage@demo as sysdbaSQL>alter database datafile d:\demo\user01.dbf offline;SQL>host copy d:\demo\ user01.dbf e:\demo\ user01.dbfSQL>alter tablespace user rename datafile d:\demo\ user01.dbf to e:\demo\user01.dbf;{mospagebreak}5.4 完全恢复命令在将数据文件复制到目标位置之后,还需要应用重做日志和归档日志。
方法如下:1、 RECOVER DATABASE该命令用于恢复数据库的多个数据文件,另外该指令只能在mount状态下使用,示例:SQL>conn sys/manage@demo as sysdbaSQL>startup force mount;SQL>recover database;2、 RECOVER TABLESPACE该命令用于恢复一个或多个表空间的所有数据文件,另外该指令只能在OPEN状态下使用,示例:SQL>conn sys/manage@demo as sysdbaSQL>recover tablespace user;3、 RECOVER DATAFILE该命令用于恢复一个或多个数据文件,该指令可以在mount和open状态下运行,同时,可以指定数据文件的名称和数据文件的编号。
示例:SQL>conn sys/manage@demo as sysdbaSQL>RECOVER DATAFILE ‘D:\demo\user01.dbf’;5.5 应用归档日志在恢复oracle数据库时,如果归档日志记载的事物变化还存在重做日志中,那么数据库直接应用重做日志,而不会应用归档日志的变化事务。
当应用归档日志时,DBA即可以按照Oracle的建议应用归档日志位置,也可以指定归档日志名。
1、 使用oracle建议的归档日志位置当执行完全恢复时,如果没有指定归档位置,oracle会提供应用的归档日志位置。
SQL>recover datafile 52、 使用指定归档日志位置SQL>recover from ‘c:\test’ datafile 53、 自动应用归档日志(1) 在提示语法下指定auto(2) 开始恢复之前设置SQL>set autorecover onSQL>recover datafile 5;(3) 在恢复命令中指定SQL>recover automatic datafile 3{mospagebreak}5.6 查看恢复文件1、 列出需要恢复的数据文件SQL>select file#,error,change# from v#recover_file;FILE# ERROR CHANGE#------------ ------------ ------------- 5 FILE NOT FOUNT 0FILE#表示数据文件的编号,ERROR表示错误的原因,CHANGE# 表示数据文件备份的SCN值。
复制了备份文件之后查看需要恢复的文件SQL>select file#,error,change# from v#recover_file;FILE# ERROR CHANGE#------------ ------------ ------------- 5 12121211以上表示数据文件的SCN值为12121211,当恢复数据文件时,从该SCN值开始应用事务。
5.7 在MOUNT状态下恢复数据文件如果在数据库启动的时候意外出现数据文件损坏,为了减少数据库停用时间,可以在open状态下恢复数据库,具体步骤如下:1、 装载数据库SQL>startup force mount;2、 确定需要恢复的数据文件SQL>select file#,error from v¥recover_file;FILE# ERROR--------- ------------------4 FILE NOT FOUND3、 脱机数据文件SQL>alter database datafile 4 offline;4、 打开数据库SQL> alter database open;5、 使用cp或copy复制数据文件SQL>host copy e:\bakeup\user01.db f e:\demo如果数据文件所在磁盘出现物理损坏,那么复制数据文件到其它盘,然后改变控制文件的数据文件的位置,示例如下:SQL>host copy e:\bakeup\ user01.dbf e:\demoSQL> alter database rename file ‘d:\demo\ user01.dbf’ to ‘e:\demo\user01.dbf’;6、 恢复数据文件SQL>recover datafile 1如果是多个数据文件,使用recover database,另外如果恢复需要的归档日志都在指定位置,那么指定auto选项,数据会自动应用归档日志恢复数据库.7、 使数据文件联机SQL>alter database datafile 4 online;{mospagebreak}5.8 在OPEN状态中恢复未备份的数据文件如果数据库变为ARCHIVELOG模式之后,如果增加新的数据文件,但是未备份新的数据文件,那么当数据文件出现介质失败时,可以恢复数据文件,前提是从建立数据文件起到目前为止所有的归档日志都存在,具体的恢复步骤如下:1、 装载数据库SQL>startup force mount;2、 确定需要恢复的数据文件SQL>select file#,error from v¥recover_file;FILE# ERROR--------- ------------------6 FILE NOT FOUND3、 脱机数据文件SQL> alter database datafile 4 offline;4、 重新建立数据文件如果数据文件所在的磁盘没有损坏,那么可以在原来位置进行重建数据文件,方法如下:SQL> alter database create datafile ‘d:\demo\user01.dbf’;如果数据文件所在的磁盘损坏了,那么需要在其他的磁盘位置重建数据文件,方法如下:SQL>alter database create datafile ‘d:\demo\user01.dbf’ as‘e:\demo\user01.dbf’;5、 恢复数据文件SQL>recover datafile 66、 使数据文件联机SQL>alter database datafile 6 online;。