码迷,mamicode.com
首页 > 数据库 > 详细

ORA-01157,记一次Oracle故障恢复过程

时间:2015-03-12 22:09:23      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

生产环境中有两台部署PowerCenter的ETL业务机,近期发现无法通过客户端连接到ETL服务。

初步怀疑是PowerCenter挂掉了,或者资料库出现了故障。

登陆设备后发现PowerCenter进程存在,但是资料库(Oracle)却挂掉了。

切换oracle账户进入,手动startup资料库,结果启动时报错:ORA-01157,ORA-01110。看报文说明是无法锁定或识别数据文件。

退出sqlplus,发现数据文件存在,猜测可能是故障造成的数据文件损坏,因为是NOARCHIVELOG(非归档)模式,无法通过日志进行恢复。

想起之前有用expdp导出过一次备份,为了尽快恢复ETL生产,只能drop掉数据文件重新建立了。

大致过程如下:

lsnrctl stop

sqlplus / as sysdba
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog; SQL
>alter database datafile /oradata/xxx.dbf offline drop; SQL>alter database open; SQL>drop tablespace xxx including contents and datafiles; SQL>create tablespace xxx ... datafile /oradata/xxx.dbf ...; SQL>exit; impdp \sys / as sysdba\‘ tablespaces=xxx directory=DATA_PUMP_DIR dumpfile=xxx.dump logfile=impdp-xxx.log content=metadata_only impdp \/ as sysdba\‘ schemas=etl_user directory=DATA_PUMP_DIR dumpfile=etl_user.dump logfile=impdp-etl_user.log content=data_only lsnrctl start

导入表空间元数据和用户数据后,基本上数据就恢复到了之前的备份点。

下面再针对PowerCenter访问的细节表做下调整就可以了,稍后重新启动下PowerCenter查看运行情况。

如果PowerCenter事前做好了存储服务的资料备份,则再利用备份做下配置的恢复那么基本上就没什么问题。

不过上述操作稍显粗犷(有朋友指出危险性极大),所以诸君操作前请三思而后行,否则造成面积更广的数据损失就得不偿失了。

结论:千好万好,备份最好。

 

参考文档:

http://www.itpub.net/thread-27492-1-1.html

 

ORA-01157,记一次Oracle故障恢复过程

标签:

原文地址:http://www.cnblogs.com/lichmama/p/4333498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!