oracle数据库报错ora-01033怎么恢复

oracle数据库报错ora-01033怎么恢复,第1张

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数据库,数据没有任何变化!求救等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9390624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存