专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 数据库恢复:数据库恢复一例(2) »正文

数据库恢复:数据库恢复一例(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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: