Oracle数据库异常恢复检查脚本(Oracle Database Recovery Check)
Oracle Database Recovery Check 介绍
根据多年来的数据库恢复经验,提炼出来数据库恢复关键点信息收集脚本(Oracle Database Recovery Check),该脚本主要是在数据库mount状态情况下查询数据库的一些基础表信息等信息,不对数据库进行任何写 *** 作(只做读和dump *** 作),不会在坏的数据库基础之上带来任何破坏,不影响任何数据库后续的恢复工作。通过该脚本收集信息能够快速定位数据库异常原因,并初步判断数据库恢复疑难程度,减少数据库异常恢复诊断时间,提供恢复效率和准确性。
具体参考:网页链接
Oracle错误:ORA-01033
错误编码:ORA-01033:
ORACLE
initialization
or
shutdown
in
progress
故障描述:因为移动了数据库文件([NAME]DMP)/日志文件等文件,导致数据库连接出现ORA-01033错误。
故障分析:网上有一种常见的说法是该类故障通常是由于移动文件而影响了数据库日志文件出现损坏而导致的无法正常进行IO *** 作而引起的错误。ORACLE将识别为数据库未装载完成而导致出现如上错误。
故障特征:使用命令行sqlplus或PL/SQL
Developer均无法打开数据库。但是可以使用sys用户以sysdba的身份登录系统
处理步骤:
1
在
‘开始’-->‘运行’执行cmds
2
输入:sqlplus
"/
as
sysdba"
应提示类似于如下信息:
SQLPlus:
Release
92010
-
Production
on
星期三
5月
20
22:07:45
2009
Copyright
(c)
1982,
2002,
Oracle
Corporation
All
rights
reserved
连接到:
Oracle9i
Enterprise
Edition
Release
92010
-
Production
With
the
Partitioning,
OLAP
and
Oracle
Data
Mining
options
JServer
Release
92010
-
Production
3
输入:shutdown
immediate
应提示类似于如下信息:
ORA-01109:
数据库未打开
已经卸载数据库。
4
输入:startup
应提示类似于如下信息:
ORA-01157:
无法标识/锁定数据文件
15
-
请参阅
DBWR
跟踪文件
ORA-01110:
数据文件
15:
'D:\TEST\MY_INDEX1_1DBF'
5
根据第4步信息输入:alter
database
datafile
'D:\TEST\MY_INDEX1_1DBF'
offline
drop
应提示类似于如下信息:
数据库已更改。
6
重复第3、4、5步骤,直到第4步不再出现ORA-01157、ORA-01110错误信息,即告OK
我觉得原因有两个,一个是没归档当前的日志,另外一个是rman根本就没有执行恢复。
第一个原因:当向表中插入数据后,虽然commit了,但是一些文件依然有可能没有写入到数据文件,而存在了redo中,而redo没有归档的情况下,也是恢复不了的。
第二个原因:你的表空间(假定为users),根本就没有损坏,当你restore时,就不会执行恢复。
下面是我做的测试:
SQL> insert into test values(2);
已创建 1 行。
SQL> insert into test values(1);
已创建 1 行。
SQL> insert into test values(3);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select from test;
PID
----------
3
1
2
SQL> alter database switch logfile;
系统已更改。
SQL> alter database switch logfile;
系统已更改。
RMAN> run{
2> allocate channel d1 type disk;
3> backup tag 'tsuser' format 'd:\backup\qqqqqq_%U'
4> tablespace users;
5> release channel d1;
6> }
分配的通道: d1
通道 d1: sid=15 devtype=DISK
启动 backup 于 29-5月 -08
通道 d1: 正在启动 full 数据文件备份集
通道 d1: 正在指定备份集中的数据文件
输入数据文件 fno=00009 name=D:\ORACLE\ORADATA\ORCL\USERS01DBF
通道 d1: 正在启动段 1 于 29-5月 -08
通道 d1: 已完成段 1 于 29-5月 -08
段 handle=D:\BACKUP\QQQQQQ_0IJHJDV0_1_1 comment=NONE
通道 d1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 29-5月 -08
启动 Control File and SPFILE Autobackup 于 29-5月 -08
段 handle=D:\ORACLE\ORA92\DATABASE\C-1182576868-20080529-05 comment=NONE
完成 Control File and SPFILE Autobackup 于 29-5月 -08
释放的通道: d1
RMAN>
然后再在表中插入记录
SQL> insert into test values(4);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select from test;
PID
----------
3
1
2
4
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
然后关闭数据库模拟文件丢失
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del D:\oracle\oradata\orcl\users01dbf
启动数据库,会报错
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 9: 'D:\ORACLE\ORADATA\ORCL\USERS01DBF'
这时把datafile 9 脱机,然后打开数据库
SQL> alter database datafile 9 offline;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL>
恢复表空间
RMAN> run{
2> allocate channel d1 type disk;
3> restore datafile 9;
4> recover datafile 9;
5> sql 'alter database datafile 9 online';
6> release channel d1 ;
7> }
分配的通道: d1
通道 d1: sid=15 devtype=DISK
启动 restore 于 29-5月 -08
通道 d1: 正在开始恢复数据文件备份集
通道 d1: 正在指定从备份集恢复的数据文件
正将数据文件00009恢复到D:\ORACLE\ORADATA\ORCL\USERS01DBF
通道 d1: 已恢复备份段 1
段 handle=D:\BACKUP\QQQQQQ_0IJHJDV0_1_1 tag=TSUSER params=NULL
通道 d1: 恢复完成
完成 restore 于 29-5月 -08
启动 recover 于 29-5月 -08
正在开始介质的恢复
完成介质的恢复
完成 recover 于 29-5月 -08
sql 语句: alter database datafile 9 online
释放的通道: d1
RMAN>
然后检查数据完整性
SQL> select from test;
PID
----------
3
1
2
4
SQL>
以上就是关于oracle数据库报错ora-01033怎么恢复全部的内容,包括:oracle数据库报错ora-01033怎么恢复、如何解决ORA-01033问题、根据一些经典资料用rman的restore恢复oracle数据库,数据没有任何变化!求救等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)