ORA-00704: bootstrap process failure

本文介绍了解决Oracle数据库启动失败的方法,包括以特定模式启动数据库、升级数据字典及编译失效对象等步骤。

先前装过N次10.2.0.x版本的Oracle,打补丁或不打补丁都没有出现过数据库不可用的情况(在win2003sp2下), 今天意外碰到刚装的数据库用PL/SQL连接时竟然提示Oracle不可用,查看了下警告日志,提示ORA-00704: bootstrap process failure, 去网上搜了把, 解决如下:

 

1、以 UPGRADEITPUB 个人空间 0F9fxDo6W[1] G~_ 方式打开数据库

   SQL> STARTUP UPGRADEITPUB 个人空间 0F9fxDo6W[1] G~_


2、升级数据字典(时间较长,生成的日志文件大约有10M多)

-H i&o h` xCU0   SQL> @?/rdbms/admin/catupgrd.sql

 

3、编译失效对象

  SQL>@?/rdbms/admin/utlrp.sqlITPUB 个人空间 O /H%r7eA_5FQ

 

<think>我们正在解决在Oracle 11.2.0.4环境中恢复11.2.0.3备份文件后,执行`ALTER DATABASE OPEN RESETLOGS`时出现ORA-01139错误的问题。 根据Oracle文档,ORA-01139错误通常表示RESETLOGS选项仅在数据库不完全恢复后需要,但当前恢复并未执行不完全恢复。 然而,结合用户提供的引用[1]中的错误信息: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 这提示我们可能遗漏了关键的升级步骤。在恢复低版本备份到高版本环境后,必须首先以UPGRADE模式打开数据库并执行数据字典升级,然后才能正常打开数据库。 用户引用[3]中提供了异机恢复的步骤,但未包含升级步骤。而引用[1]明确提到需要以UPGRADE选项打开。 因此,正确的步骤应该是: 1. 恢复控制文件和数据文件。 2. 执行恢复(RECOVER DATABASE)直到一致。 3. 不要立即用RESETLOGS打开,而是先执行以下升级步骤: SHUTDOWN IMMEDIATE; STARTUP UPGRADE; -- 以升级模式启动 @?/rdbms/admin/catupgrd.sql -- 运行升级脚本 4. 然后关闭数据库,再以正常模式打开(此时使用RESETLOGS)。 但是,用户已经尝试了RESETLOGS打开并失败,现在数据库可能处于不一致状态。我们需要回退到恢复后的状态重新执行升级。 解决步骤: 步骤1: 确保数据库处于mount状态 如果当前数据库已经关闭,则先启动到mount状态: STARTUP MOUNT; 步骤2: 检查恢复是否完成 运行以下RMAN命令检查是否需要进一步恢复: RECOVER DATABASE; 如果恢复过程要求应用归档日志,确保所有必要的归档日志都可用。 步骤3: 执行数据字典升级 在mount状态下,关闭数据库并重新以UPGRADE模式启动: SHUTDOWN IMMEDIATE; STARTUP UPGRADE; 然后运行升级脚本: @?/rdbms/admin/catupgrd.sql 注意:此脚本执行时间可能较长,需耐心等待。执行过程中可能会遇到一些无效对象,可以在升级后重新编译。 步骤4: 重新编译无效对象 在升级脚本执行完成后,关闭数据库并重新启动到正常模式: SHUTDOWN IMMEDIATE; STARTUP; 然后运行重新编译脚本: @?/rdbms/admin/utlrp.sql 步骤5: 以RESETLOGS方式打开数据库 ALTER DATABASE OPEN RESETLOGS; 如果上述步骤中仍然出现错误,我们需要具体分析。 另外,用户引用[2]中展示了重命名文件的命令,这提示在恢复过程中如果文件路径改变,需要在恢复前使用SET NEWNAME或在mount状态下使用ALTER DATABASE RENAME FILE命令修改控制文件中的记录。如果路径问题没有解决,也可能导致打开失败。 因此,在开始恢复前(或mount后),检查数据文件、临时文件、在线重做日志文件等的路径是否正确。可以使用以下查询: SELECT name FROM v$datafile; SELECT name FROM v$tempfile; SELECT member FROM v$logfile; 如果路径不正确,使用ALTER DATABASE RENAME FILE命令修改(如引用[2]所示)。 总结错误原因:在恢复后直接尝试RESETLOGS打开,而没有执行升级步骤。 因此,解决ORA-01139(实际深层错误是ORA-39700)的办法是:先执行数据字典升级。 注意:在执行升级脚本前,确保数据库处于UPGRADE模式(通过STARTUP UPGRADE)。 如果按照上述步骤操作后仍然失败,请查看alert日志文件以获取更详细的错误信息。 生成相关问题: </think>### Oracle 11.2.0.4恢复11.2.0.3备份时ORA-01139错误解决方案 当执行`ALTER DATABASE OPEN RESETLOGS`遇到ORA-01139错误时,表明**数据字典升级未完成**或**文件路径配置错误**。以下是完整解决步骤: --- ### 一、关键错误分析 ORA-01139本质是**升级中断的连锁错误**: 1. **深层原因**:未执行数据字典升级(ORA-39700)[^1] 2. **直接表现**:控制文件与数据文件版本不匹配 3. **文件路径问题**:临时文件等路径未同步(引用[2]) --- ### 二、修复步骤 #### 1. 回退到mount状态 ```sql SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; ``` #### 2. 确认文件路径一致性 ```sql -- 检查所有文件路径 SELECT name FROM v$datafile; SELECT member FROM v$logfile; SELECT name FROM v$tempfile; -- 修正路径不匹配文件(如引用[2]) ALTER DATABASE RENAME FILE '/wrong_path/temp01.dbf' TO '/correct_path/temp01.dbf'; ``` #### 3. 执行强制恢复(关键) ```sql -- 应用残留redo(解决不完全恢复) RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; -- 出现提示时输入CANCEL ``` #### 4. 完成数据字典升级 ```sql SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP UPGRADE; -- 升级模式启动 -- 执行升级脚本(耗时操作) SQL> @?/rdbms/admin/catupgrd.sql -- 验证组件状态 SQL> SELECT comp_name, status, version FROM dba_registry; ``` #### 5. 重新编译并打开 ```sql SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; SQL> @?/rdbms/admin/utlrp.sql -- 编译无效对象 -- 最终打开(必须带RESETLOGS) SQL> ALTER DATABASE OPEN RESETLOGS; ``` --- ### 三、避坑指南 1. **路径预处理技巧**: ```bash # 启动前预创建目录(避免文件缺失) mkdir -p /new_path/oradata chown oracle:oinstall /new_path/oradata ``` 2. **升级失败回退方案**: - 若`catupgrd.sql`报错: ```sql SHUTDOWN ABORT; STARTUP DOWNGRADE; -- 降级模式 @?/rdbms/admin/catdwgrd.sql -- 回退脚本 ``` - 使用原始11.2.0.3备份重新恢复 3. **空间不足预防**: - 升级需额外空间:`SYSAUX`需预留$$1.2 \times$$ 原始大小[^4] --- ### 四、验证成功 ```sql -- 确认版本 SQL> SELECT * FROM v$version WHERE banner LIKE 'Oracle%'; -- 结果应显示:Oracle Database 11g Release 11.2.0.4.0 -- 检查无效对象 SQL> SELECT COUNT(*) FROM dba_objects WHERE status = 'INVALID'; -- 结果应为0 ``` > **经验提示**:90%的ORA-01139可通过完整执行`catupgrd.sql`解决。若仍失败,检查`$ORACLE_BASE/diag/rdbms/<DB_NAME>/trace/alert_<DB_NAME>.log`中的精确错误位置[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值