Oracle还原恢复启动时数据库报ORA-00704、 ORA-00604,、ORA-00904的问题解决

Oracle数据库还原恢复后,执行alter database open resetlogs时遇到下面错误。如下所示:

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-00904: "I"."UNUSABLEBEGINNING#": invalid identifier
Process ID: 19288
Session ID: 2 Serial number: 4441

刚开始有点懵的,第一次遇到这种情形。不过搜索了一下metalink相关资料后,大致了解到是因为环境变量设置有误导致这些错误出现的。这里先介绍一下这个案例的复杂背景:

当前机器为一个测试服务器(UAT环境),操作系统版本为HP-UX,数据库版本Oracle 19c,然后因为Support人员要查找历史数据,需要还原一个2020年时间点的数据库备份。但是生产环境(PROD)在2020年是Oracle 11g,然后在2021年升级为了Oracle 19c,现在测试服务器(UAT环境)的数据库版本也是Oracle 19c,于是从其它测试服务器拷贝了一个Oracle 11g版本的挂载带点/opt/oracle11g到当前测试服务器(为了方便省事,如果重新安装搭建Oracle 11g环境还麻烦一些),然后设置了一下/etc/oratab,如下所示:(xxx表示ORACLE_SID)

#xxx:/opt/oracle19c/product/19.3.0/db_1:N
xxx:/opt/oracle11g/product/11.2:N

退出当前SecureCRT窗口,重新登陆,提示修改成功,如下所示

ORACLE_SID = [xxx] ? xxx

Oracle SID  = xxx
Oracle BASE = /opt/oracle11g
Oracle HOME = /opt/oracle11g/product/11.2
SQL*Net TNS = /etc
ORA_NLS10   = /opt/oracle11g/product/11.2/nls/data

由于忙着检查/修改pfile文件中的参数,当时没有仔细检查环境变量,匆匆忙忙就开始了数据库实例的还原恢复,但是当前的和ORACLE_HOME环境变量确实还是Oracle 19c的环境变量

>echo $ORACLE_BASE
/opt/oracle19c
>echo $ORACLE_HOME
/opt/oracle19c/product/19.3.0/db_1

修改环境变量~/.profile后,执行. ~/.profile设置生效。然后重新登陆SecureCRT后,重新还原数据库就不会遇到这个问题。另外,如果不重新还原,关闭数据库后,重新OPEN数据库亦可以,测试没有什么问题。

官方文档Database Startup Failure After RMAN Restore with ORA-00704, ORA-00604, ORA-00904 (Doc ID 2540757.1)的具体内容如下:

APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.2.0.4 and later
Information in this document applies to any platform.

SYMPTOMS
 
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 2
ORA-00904: "I"."UNUSABLEBEGINNING#": invalid identifier
Process ID: 23346
Session ID: 680 Serial number: 51933

CHANGES

 After restoring the database to another server by RMAN, it is failed to startup.
After upgrade or post upgrade

CAUSE

 >>>>>ORA-00904: "I"."UNUSABLEBEGINNING#": invalid identifier
This error appears due to using the incorrect sqlplus environment. For example., By default SQLPLUS will connect to the default ORACLE_HOME, say 12C Home but if you are duplicating the 11g database on same host the it must be Oracle 11g Environment in order to complete the process.
1 - This issue happens when we have installed multiple Oracle Homes in a single system.
2 - We need to make sure that we are in the right environment when we are restoring it.

SOLUTION

You need to set all the required Environment Variables first as per your need like ORACLE_SID, ORACLE_BASE, ORACLE_HOME, TNS_ADMIN, PATH with proper values
(OR)
Simply work by going to the bin directory of your required ORACLE_HOME
SET ORACLE_HOME=Your_Oracle_Home
CD ORACLE_HOME\bin
Even if you set all the environment parameter properly, then need to investigate further to verify the rman backup set which used to restore or verify the upgrade logs, component, dba_registry etc.
Provide the details requested in below Notes based on the post restore or post upgrade
Note 1905616.1  SRDC - Startup Issues: Checklist of Evidence to Supply (Doc ID 1905616.1)
Note 1906468.1  SRDC - Startup Shutdown - Oracle Binary and OS Resources: Checklist of Evidence to Supply (Doc ID 1906468.1)
Note:1672387.1  SRDC - Data Collection for Upgrade Issues
Note 753041.1 How to Diagnose Components with NON VALID Status in DBA_REGISTRY after an Upgrade (Doc ID 753041.1)
Note 1965956.1  SRDC - Data Collection for Datapatch issues (Doc ID 1965956.1)
Note 1671416.1  SRDC - Required diagnostic data collection for RMAN Restore and Recover Using TFA Collector (Recommended) or Manual Steps (Doc ID 1671416.1)

到此这篇关于ORACLE还原恢复启动时数据库报ORA-00704、 ORA-00604,、ORA-00904的问题解决的文章就介绍到这了,更多相关oracle还原恢复启动报错内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Oracle ORA-00904:标识符无效解决方法(太坑了!!)

    目录 问题描述 原因分析: 解决方案: 总结 ORA-00904:标识符无效 解决办法(Oracle字段名区分大小写的坑) 问题描述 我在使用jpa或者mybatis集成Oracle进行where查询的时候发现一直出现:java.sql.SQLSyntaxErrorException: ORA-00904: “USER0_”.“PWD”: 标识符无效 下面是问题代码: @Test void test01(){ User user = userDao.findByPwd("ccat");

  • Oracle实例启动时报错:ORA-32004的解决方法

    前言 前段时间,早上刚到公司,打开电脑就发现启动Oracle实例的时候报了下面的错误: SQL> startup nomount; ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated ORA-07286: sksagdi: cannot obt

  • Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    前言 最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了解决方案,现在共享出来给有需要的朋友. 错误描述 [oracle@oracle ~]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 27-MAR-2015 15:37:59 Copyright (c) 1991, 2009, Oracle. All rights r

  • spring boot启动时mybatis报循环依赖的错误(推荐)

    自己在做项目时,想使用热部署减少部署时间,于是添加了springboot-devtools 在maven中添加了依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 然后正常的启动项目时发现控制台一直在不停的输出错误,错误如图 不明所以,然后就准备去调

  • 记一次springboot配置redis项目启动时的一个奇怪的错误

    目录 springboot配置redis项目启动时的错误 总是爆出下面的错误 解决springboot项目启动时redis报错 出现ERRClientsentAUTH,butnopasswordisset的问题 springboot配置redis项目启动时的错误 在刚开始学redis时,我照着网上的教程,把redis和jedis整合到spring boot,整合完毕后,启动项目总是失败 总是爆出下面的错误 Correct the classpath of your application so

  • plsql连接oracle数据库报ora 12154错误解决方法

    plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错"ORA-12154: TNS: 无法解析指定的连接标识符" 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping <tns_name> 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql

  • 简析mysql字符集导致恢复数据库报错问题

    mysql字符集编码错误的导入数据会提示错误了,这个和插入数据一样如果保存的数据与mysql编码不一样那么肯定会出现导入乱码或插入数据丢失的问题,下面我们一起来看一个例子. <script>ec(2);</script> 恢复数据库报错:由于字符集问题,最原始的数据库默认编码是latin1,新备份的数据库的编码是utf8,因此导致恢复错误. [root@hk byrd]# /usr/local/mysql/bin/mysql -uroot -p'admin' t4x < /t

  • springboot 启动时初始化数据库的步骤

    问题描述 在spring-boot启动时,希望能执行相应的sql文件来初始化数据库. 使用配置文件初始化数据库 可以在spring-boot的配置文件application.yml中设置要初始化的sql文件.这是最简单的方法,只需要添加属性就可以实现. 首先设置spring.datasource.initialization-mode=always表示任何类型数据库都进行数据库初始化,默认情况下,spring-boot会自动加载data.sql或data-${platform}.sql文件来初始

  • 启动springboot应用因未配置数据库报错的解决方案

    目录 启动springboot应用因未配置数据库报错 描述 解决方案 springboot 1.5.8.RELEASE 版本启动报错 起因 错误排查 解决方法 启动springboot应用因未配置数据库报错 描述 创建一个全新的springboot项目,第一次启动时报错,具体错误信息如下所示: Error starting ApplicationContext. To display the conditions report re-run your application with 'debu

  • Docker容器启动时初始化Mysql数据库的方法

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案. 第一种方案是在容器启动后手动导入,太low了不行.第二种在Spring Boot客户端连接Mysql容器时初始化数据库,你可以参考使用flyway进行数据库版本控制一文,但是这依赖客户端的能力.能不能做到Mysql容器启动时就自己初始化数据库呢?当然可以!今天就来演示一下.全部代码见文末. 2.

  • 关于使用PLSQL Developer时出现报错ora-12514的问题

    在登陆PLSQL Developer时报ora-12513错误,需要修改本地数据库的监听配置文件,其过程相对简单. 在Oracle安装目录中搜索找到listener.ora文件,并修改成txt格式后打开(在修改之前建议做好备份),需要添加的代码及添加位置如下图所示: (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME =E:\Oracle\product\11.2.0\dbhome_1) (SID_NAME = ORCL) ) 注意:安装的盘符需要更改

  • CentOS 7.4下安装Oracle 11.2.0.4数据库的方法

    在Linux下安装Oracle数据库是一件较为麻烦的事情. 由于Linux的安装过程中可能会选择不同的安装包,会导致Oracle安装过程中缺失或多一些软件包,很难一次性的安装成功.所以,本文详细记录了Oracle在Linux上的安装过程,以供参考. 本环境仅供软件开发和测试环境使用,并不适合用于生产环境. Oracle官方支持的Linux发行版本有RedHat和Oracle Linux,所以,我们在CentOS(7.4)下安装Oracle(11gR2)时,还需要做一些特别的准备工作. 本文的Ce

  • 详解SpringBoot程序启动时执行初始化代码

    因项目集成了Redis缓存部分数据,需要在程序启动时将数据加载到Redis中,即初始化数据到Redis. 在SpringBoot项目下,即在容器初始化完毕后执行我们自己的初始化代码. 第一步:创建实现ApplicationListener接口的类 package com.stone; import com.stone.service.IPermissionService; import org.springframework.context.ApplicationListener; import

随机推荐