最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

ORACLE还原恢复启动时数据库报ORA-00704, ORA-00604, ORA-00904

来源:博客园


(资料图片仅供参考)

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

SQL>alterdatabaseopenresetlogs;alterdatabaseopenresetlogs*ERRORatline1:ORA-00603:ORACLEserversessionterminatedbyfatalerrorORA-01092:ORACLEinstanceterminated.DisconnectionforcedORA-00704:bootstrapprocessfailureORA-00604:erroroccurredatrecursiveSQLlevel1ORA-00904:"I"."UNUSABLEBEGINNING#":invalididentifierProcessID:19288SessionID:2Serialnumber: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:Nxxx:/opt/oracle11g/product/11.2:N

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

ORACLE_SID=[xxx]?xxxOracleSID=xxxOracleBASE=/opt/oracle11gOracleHOME=/opt/oracle11g/product/11.2SQL*NetTNS=/etcORA_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)的具体内容如下:

APPLIESTO:OracleDatabase-EnterpriseEdition-Version11.2.0.4andlaterInformationinthisdocumentappliestoanyplatform.SYMPTOMSSQL>alterdatabaseopen;alterdatabaseopen*ERRORatline1:ORA-01092:ORACLEinstanceterminated.DisconnectionforcedORA-00704:bootstrapprocessfailureORA-00604:erroroccurredatrecursiveSQLlevel2ORA-00904:"I"."UNUSABLEBEGINNING#":invalididentifierProcessID:23346SessionID:680Serialnumber:51933CHANGESAfterrestoringthedatabasetoanotherserverbyRMAN,itisfailedtostartup.AfterupgradeorpostupgradeCAUSE>>>>>ORA-00904:"I"."UNUSABLEBEGINNING#":invalididentifierThiserrorappearsduetousingtheincorrectsqlplusenvironment.Forexample.,BydefaultSQLPLUSwillconnecttothedefaultORACLE_HOME,say12CHomebutifyouareduplicatingthe11gdatabaseonsamehosttheitmustbeOracle11gEnvironmentinordertocompletetheprocess.1-ThisissuehappenswhenwehaveinstalledmultipleOracleHomesinasinglesystem.2-Weneedtomakesurethatweareintherightenvironmentwhenwearerestoringit.SOLUTIONYouneedtosetalltherequiredEnvironmentVariablesfirstasperyourneedlikeORACLE_SID,ORACLE_BASE,ORACLE_HOME,TNS_ADMIN,PATHwithpropervalues(OR)SimplyworkbygoingtothebindirectoryofyourrequiredORACLE_HOMESETORACLE_HOME=Your_Oracle_HomeCDORACLE_HOME\binEvenifyousetalltheenvironmentparameterproperly,thenneedtoinvestigatefurthertoverifythermanbackupsetwhichusedtorestoreorverifytheupgradelogs,component,dba_registryetc.ProvidethedetailsrequestedinbelowNotesbasedonthepostrestoreorpostupgradeNote1905616.1SRDC-StartupIssues:ChecklistofEvidencetoSupply(DocID1905616.1)Note1906468.1SRDC-StartupShutdown-OracleBinaryandOSResources:ChecklistofEvidencetoSupply(DocID1906468.1)Note:1672387.1SRDC-DataCollectionforUpgradeIssuesNote753041.1HowtoDiagnoseComponentswithNONVALIDStatusinDBA_REGISTRYafteranUpgrade(DocID753041.1)Note1965956.1SRDC-DataCollectionforDatapatchissues(DocID1965956.1)Note1671416.1SRDC-RequireddiagnosticdatacollectionforRMANRestoreandRecoverUsingTFACollector(Recommended)orManualSteps(DocID1671416.1)

关键词: