数据库恢复一例物业
2021-09-06 来源:开平租房网
最近通过做实验总结出一种数据库恢复方法,对今后的工作很有帮助:
数据库为非归档状态,只有一周前的数据文件的备份,无redolog,归档日志和controlfile的备份,此种情况一但数据库出故障只能做不完全恢复,会丢失一周前做备份时到出故障那一时候的所有数据,具体恢复方法如下:
操作系统为solaris8,内存2G,2颗CPU.
实验步骤:
小成的到来激起了死者家属的愤怒 $sqlplus /nolog
SQLconnect / as sysdba
SQL archive log list
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/arch/ORCL
Oldest online log sequence 895
Current log sequence 897
SQL select * from v$logfile;
GROUP# STATUS
---------- -------
MEMBER
--------------------------------------------------------------------------------
3
/opt/oracle/db04/oradata/ORCL/g
2
/opt/oracle/db03/oradata/ORCL/g
1
/opt/oracle/db02/oradata/ORCL/g
SQL select * from v$controlfile;
STATUS
-------
NAME
--------------------------------------------------------------------------------
/opt/oracle/db02/oradata/ORCL/l
/opt/oracle/db03/oradata/ORCL/l
/opt/oracle/db04/oradata/ORCL/l
SQLalter 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/g
$rm /opt/oracle/db03/oradata/ORCL/l
$rm /opt/oracle/db04/oradata/ORCL/g
$rm /opt/oracle/db04/oradata/ORCL/l
把一周前备份的数据文件copy回来,目录结构和以前一样,但这时因为没有redolog和controlfile文件,数据库只能启动到nomount状态:
udump目录下生成的orcl_ora_c文件,把里面的创建controlfile的那部分内容粘贴下来放在SQL里执行:
(这里要注意一定要用resetlogs方式重建控制文件,resetlogs之后会生成新的redolog,并且把当前redofile的sequence置为1,否则创建控制文件会失败):
SQLSTARTUP 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/g\' SIZE 50000K,
9 GROUP 2 \'/opt/oracle/db03/oradata/ORCL/g\' SIZE 50000K,
10 GROUP 3 \'/opt/oracle/db04/oradata/ORCL/g\' SIZE 50000K
11 DATAFILE
12 \'/opt/oracle/db02/oradata/ORCL/f\',
13 \'/opt/oracle/db02/oradata/ORCL/f\',
14 \'/opt/oracle/db02/oradata/ORCL/f\',
15 \'/opt/oracle/db02/oradata/ORCL/f\',
16 \'/opt/oracle/db02/oradata/ORCL/f\',
17 \'/opt/oracle/db02/oradata/ORCL/f\',
18 \'/opt/oracle/db02/oradata/ORCL/f\',
19 \'/opt/oracle/db02/oradata/ORCL/f\',
20 \'/opt/oracle/db02/oradata/ORCL/f\',
21 \'/opt/oracle/db02/oradata/ORCL/f\',
22 \'/opt/oracle/db02/oradata/ORCL/f\',
23 \'/opt/oracle/db02/oradata/ORCL/f\',
24 \'/opt/oracle/db02/oradata/ORCL/f\',
25 \'/opt/oracle/db02/oradata/ORCL/f\',
26 \'/opt/oracle/db02/oradata/ORCL/f\',
27 \'/opt/oracle/db02/oradata/ORCL/f\'
28 CHARACTER SET WE8ISO8859P1;
Control file created.
SQL alter database open resetlogs;(以resetlogs方式打开数据库)
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/g
2
/opt/oracle/db03/oradata/ORCL/g
1
/opt/oracle/db02/oradata/ORCL/g
SQL select * from v$controlfile; (检查控制文件的状态)
STATUS
-------
NAME
--------------------------------------------------------------------------------
/opt/oracle/db02/oradata/ORCL/l
/opt/oracle/db03/oradata/ORCL/l
/opt/oracle/db04/oradata/ORCL/l
送老师草珊瑚含片肠瘘
太原治疗子宫内膜炎费用
-
- 上一篇
- 数据库恢复一例
-
- 下一篇
- 数据库所有表被插入恶意代码计划