ORA-03113: 通信通道的文件结尾以及用备份的数据文件恢复原数据库的解决方案

在win 2003 + oracle 10g环境下,数据库服务器出现问题报ORA-01034和ORA-27101错误。开发人员误操作后,通过备份数据文件尝试恢复。经过启动实例、装载、打开数据库步骤,遇到'ORA-03113: 通信通道的文件结尾'错误。通过介质恢复至特定时间点并重置日志,最终成功恢复数据库并正常运行。

环境:win 2003 + oracle 10g


情景: 2013年4月7号晚上20点30分左右,数据库服务器莫名down了,开发人员尝试启动instance,报错ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist. 开发人员在不通知DBA的情况下把oracle卸载掉重装成原来一样的环境,启动还是报一样的错。问题无法解决,于是求助数据库管理人员。

 

解决步骤:

冷静分析,之前开发人员已经重装了oracle,但是数据文件都事先备份(不幸中的万幸),于是尝试用旧的数据文件代替新安装好的生成的数据文件来启动数据库(这一步的前提是实例名和数据库安装路径、数据文件名、表空间名、计算机名、IP都一致的情况下)。先启动instance,然后再mount,再open,发现数据库爆出“ORA-03113: 通信通道的文件结尾”的错误。

分析可能由于数据库立即关闭(当时服务器突然崩溃无法启动),文件状态可能不一致,因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致,于是进行下面的恢复。

 

SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  835104768 bytes
Fixed Size                  2217952 byte

Couldn't get row from result set ORA-01002: fetch out of sequence at org.pentaho.di.core.database.Database.getRow(Database.java:2764) at org.pentaho.di.core.database.Database.getRow(Database.java:2734) at org.pentaho.di.trans.steps.tableinput.TableInput.processRow(TableInput.java:148) at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLException: ORA-01002: fetch out of sequence at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509) at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:461) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1104) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:550) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:268) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:655) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:229) at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:1037) at oracle.jdbc.driver.OracleStatement.fetchMoreRows(OracleStatement.java:3456) at oracle.jdbc.driver.InsensitiveScrollableResultSet.fetchMoreRows(InsensitiveScrollableResultSet.java:742) at oracle.jdbc.driver.InsensitiveScrollableResultSet.absoluteInternal(InsensitiveScrollableResultSet.java:698) at oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:412) at org.pentaho.di.core.database.Database.getRow(Database.java:2752) ... 4 more Caused by: Error : 1002, Position : 0,, Sql = INSERT into ODS_DIS_DAILY_NEED_NETVAL (finprod_id , portfolio_val_type , confirm_date , val_date , check_result , whether_zero_share , whether_sync_send , create_user , create_dept , create_time , update_user , update_time ) select a.finprod_id , a.portfolio_val_type , a.confirm_date , a.val_date , a.check_result , a.whether_zero_share , a.whether_sync_send , a.create_user , a.create_dept , a.create_time , a.update_user , a.update_time from sylcsys.zcgl_mir_DAILY_NEED_NETVAL a where not exists (select 1 from ODS_DIS_DAILY_NEED_NETVAL b where a.finprod_id=b.finprod_id and a.val_date=b.val_date ), OriginalSql = INSERT into ODS_DIS_DAILY_NEED_NETVAL (finprod_id , portfolio_val_type , confirm_date , val_date , check_result , whether_zero_share , whether_sync_send , create_user , create_dept , create_time , update_user , update_time ) select a.finprod_id , a.portfolio_val_type , a.confirm_date , a.val_date , a.check_result , a.whether_zero_share , a.whether_sync_send , a.create_user , a.create_dept , a.create_time , a.update_user , a.update_time from sylcsys.zcgl_mir_DAILY_NEED_NETVAL a where not exists (select 1 from ODS_DIS_DAILY_NEED_NETVAL b where a.finprod_id=b.finprod_id and a.val_date=b.val_date ), Error Msg = ORA-01002: fetch out of sequence at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:513) ... 16 more
最新发布
11-05
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值