数据库恢复:数据库恢复一例(2)来源: 发布时间:星期四, 2009年2月12日 浏览:120次 评论:0
最近通过做实验整理总结出种数据库恢复思路方法对今后工作很有帮助: 数据库为非归档状态只有周前数据文件备份无redolog归档日志和controlfile备份此种情况但数据库出故障只能做不完全恢复会丢失周前做备份时到出故障那时候所有数据具体恢复思路方法如下: 操作系统为solaris8,内存2G2颗CPU. 实验步骤: $sqlplus /nolog SQL>connect / as sysdba SQL> archive log list Database log mode No Archive Mode Automatic archival Enabled Archive destination /opt/oracle/arch/ORCL Oldest _disibledevent=>SQL> select * from v$logfile; GROUP# STATUS ---------- ------- MEMBER -------------------------------------------------------------------------------- 3 /opt/oracle/db04/oradata/ORCL/redo03.log 2 /opt/oracle/db03/oradata/ORCL/redo02.log 1 /opt/oracle/db02/oradata/ORCL/redo01.log SQL> select * from v$controlfile; STATUS ------- NAME -------------------------------------------------------------------------------- /opt/oracle/db02/oradata/ORCL/control01.ctl /opt/oracle/db03/oradata/ORCL/control02.ctl /opt/oracle/db04/oradata/ORCL/control03.ctl SQL>alter database backup controlfile to trace; (备份控制文件,此时会在$ORACLE_BASE/admin/ORCL/udump目录里生成trace文件) SQL> shutdown immediate (关闭当前数据库) Database closed. Database dismounted. ORACLE instance shut down. SQL> quit Disconnected 模拟数据丢失: 删除当前所有数据文件,控制文件和redolog文件: $rm -rf ?/opt/oracle/db02/oradata/ORCL/* $rm /opt/oracle/db03/oradata/ORCL/redo02.log $rm /opt/oracle/db03/oradata/ORCL/control02.ctl $rm /opt/oracle/db04/oradata/ORCL/redo03.log $rm /opt/oracle/db04/oradata/ORCL/control03.ctl 把周前备份数据文件copy回来目录结构和以前样但这时没有redolog和controlfile文件数据库只能启动到nomount状态: 编辑udump目录下生成orcl_ora_7140.trc文件把里面创建controlfile那部分内容粘贴下来放在SQL里执行: (这里要注意定要用relogs方式重建控制文件relogs的后会生成新redolog,并且把当前redofilesequence置为1,否则创建控制文件会失败): SQL>STARTUP NOMOUNT SQL> CREATE CONTROLFILE REUSE DATABASE \"ORCL\" RESETLOGS NOARCHIVELOG 2 MAXLOGFILES 32 3 MAXLOGMEMBERS 2 4 MAXDATAFILES 254 5 MAXINSTANCES 8 6 MAXLOGHISTORY 907 7 LOGFILE 8 GROUP 1 \'/opt/oracle/db02/oradata/ORCL/redo01.log\' SIZE 50000K, 9 GROUP 2 \'/opt/oracle/db03/oradata/ORCL/redo02.log\' SIZE 50000K, 10 GROUP 3 \'/opt/oracle/db04/oradata/ORCL/redo03.log\' SIZE 50000K 11 DATAFILE 12 \'/opt/oracle/db02/oradata/ORCL/system01.dbf\', 13 \'/opt/oracle/db02/oradata/ORCL/tools01.dbf\', 14 \'/opt/oracle/db02/oradata/ORCL/rbs01.dbf\', 15 \'/opt/oracle/db02/oradata/ORCL/temp01.dbf\', 16 \'/opt/oracle/db02/oradata/ORCL/users01.dbf\', 17 \'/opt/oracle/db02/oradata/ORCL/indx01.dbf\', 18 \'/opt/oracle/db02/oradata/ORCL/drsys01.dbf\', 19 \'/opt/oracle/db02/oradata/ORCL/wacos.dbf\', 20 \'/opt/oracle/db02/oradata/ORCL/wacos01.dbf\', 21 \'/opt/oracle/db02/oradata/ORCL/wacos02.dbf\', 22 \'/opt/oracle/db02/oradata/ORCL/wacos03.dbf\', 23 \'/opt/oracle/db02/oradata/ORCL/wacos04.dbf\', 24 \'/opt/oracle/db02/oradata/ORCL/wacos05.dbf\', 25 \'/opt/oracle/db02/oradata/ORCL/wacos06.dbf\', 26 \'/opt/oracle/db02/oradata/ORCL/nms.dbf\', 27 \'/opt/oracle/db02/oradata/ORCL/test.dbf\' 28 CHARACTER SET WE8ISO8859P1; Control file created. SQL> alter database open relogs;(以relogs方式打开数据库) Database altered. SQL> select status from v$instance; (检查数据库状态) STATUS ------- OPEN SQL> select * from v$logfile; (检查logfile状态) GROUP# STATUS ---------- ------- MEMBER -------------------------------------------------------------------------------- 3 /opt/oracle/db04/oradata/ORCL/redo03.log 2 /opt/oracle/db03/oradata/ORCL/redo02.log 1 /opt/oracle/db02/oradata/ORCL/redo01.log SQL> select * from v$controlfile; (检查控制文件状态) STATUS ------- NAME -------------------------------------------------------------------------------- /opt/oracle/db02/oradata/ORCL/control01.ctl /opt/oracle/db03/oradata/ORCL/control02.ctl /opt/oracle/db04/oradata/ORCL/control03.ctl 0
相关文章
读者评论发表评论 |