您的位置:首页 > 数据库

删除数据文件 导致 Sqlplus 无法登陆

2010-12-06 16:45 253 查看
服务里OracleServiceORADB显示已启动,但用SQL*Plus无法连接,

显示ORA-01033: ORACLE initialization or shutdown in progress

解决方法:

先让该数据文件脱机,就可以打开数据库

C:/>svrmgrl

svrmgrl>connect internal

svrmgrl>shutdown

svrmgrl>startup mount

--ARCHIVELOG模式命令,文件名要大写

svrmgrl>alter database datafile 'C:/误删数据.ORA' offline;

--NOARCHIVELOG模式命令

svrmgrl>alter database datafile 'C:/误删数据.ORA' offline drop;

svrmgrl>alter database open;

--查询数据文件联、脱机状态

SQL> select file#,name,status from v$datafile;

SQL> drop tablespace test;

表空间已丢弃。

丢失联机日志文件

分两种情况处理

1、丢失的是非活动的日志文件;

2、丢失的是当前激活的日志文件。

如果是第一种情况,而发生故障的日志文件组又具有多个成员,可以先将数据库shutdown,然后用操作系统命令将损坏日志文件组中好的日志成员文件把损坏的成员文件覆盖(在同一个日志成员组中的所有日志文件的各为镜象的),如果其物理位置不可用可将其拷贝到新的驱动器上,使用alter database rename file ‘xxxx’ to ‘xxxx’改变文件位置,之后启动数据库,如果正常马上进行一个冷备份。如果损坏的日志组中只有一个日志成员,先mount上数据库,将其转换为noarchivelog模式,执行alter database add logfile member ‘xxx’ to group ‘x’给相关组增加一个成员,再执行alter database drop logfile member ‘bad_file’将损坏的日志文件删除,由于数据库的结构发生变动需要备份控制文件,之后将数据库改回archivelog模式,做一个冷备份。

如果丢失的是当前激活的日志文件,数据库又没有镜像而且当前日志组中所有成员均变为不可用。首先将数据库shutdown abort,从最近的一次全备份中恢复所有的数据文件,将数据库启动到mount状态。如果原来的日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’改变文件的存放位置。然后,使用recover database until cancel命令来恢复数据库,直到提示最后一个归档日志运用完之后,输入cancel。之后用alter database open resetlogs打开数据库,如果没有问题,立即进行一个冷备份。注意!所有包含在损坏的redo log中的信息将会丢失,也就是说数据库崩溃前已经提交的数据有可能会丢失。这对于某些要求很高的应用将会损失惨重,因此应尽量使每个日志组具有多个日志成员,并且放置在不同的驱动器上防止发生介质故障。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐