Welcome 微信登录

首页 / 数据库 / MySQL / ORA-39700 with UPGRADE option错误的处理

场景:通过rman做一个数据库的异机恢复,进行到最关键的一步,打开数据库的时候报了错误,详细如下SQL> startup mount;Oracle 例程已经启动。Total System Global Area 6797832192 bytesFixed Size 2241264 bytesVariable Size 3523218704 bytesDatabase Buffers 3254779904 bytesRedo Buffers 17592320 bytes数据库装载完毕。SQL> alter database open resetlogs;alter database open resetlogs*第 1 行出现错误:ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00704: bootstrap process failureORA-39700: database must be opened with UPGRADE option进程 ID: 3650会话 ID: 292 序列号: 5
 
问题原因:进行数据库报错的时候才突然想起犯了一个错误原数据库的版本是11.2.0.1,但是目标数据库的版本是11.2.0.3,所以在打开的时候就提示了0RA-39700。解决方法:通过upgrade的方式打开数据库,如下
[oracle@ekptest001 ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.3.0 Production on 星期三 12月 24 15:31:16 2014Copyright (c) 1982, 2011, Oracle. All rights reserved.已连接到空闲例程。SQL> startup mount;ORACLE 例程已经启动。Total System Global Area 6797832192 bytesFixed Size 2241264 bytesVariable Size 3523218704 bytesDatabase Buffers 3254779904 bytesRedo Buffers 17592320 bytes数据库装载完毕。SQL> alter database open upgrade;数据库已更改。SQL> select status from v$Instance;STATUS------------------------------------OPEN MIGRATESQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql;
 
其中运行catupgrd.sql脚本花费了30分钟,完成后会自动关闭数据库,就可以正常打开了。原理:当数据库的升级的时候,数据库内部的基表进行了变更,数据字典也需要进行相应的更新,运行catupgrd.sql会进行相应对象更新;
[oracle@ekptest001 admin]$ cat catupgrd.sqlRemRem $Header: rdbms/admin/catupgrd.sql /st_rdbms_11.2.0/3 2011/05/18 15:07:25 cmlim Exp $RemRem catupgrd.sqlRemRem Copyright (c) 1999, 2011, Oracle and/or its affiliates.Rem All rights reserved.RemRem NAMERem catupgrd.sql - CATalog UPGraDe to the new releaseRemRem DESCRIPTIONRem This script is to be used for upgrading a 9.2, 10.1 or 10.2Rem database to the new release. This script provides a directRem upgrade path from these releases to the new Oracle release.RemRem The upgrade is partitioned into the following 5 stages:Rem STAGE 1: call the "i" script for the oldest supported release:Rem This loads all tables that are necessaryRem to perform basic DDL commands for the new releaseRem STAGE 2: call utlip.sql to invalidate PL/SQL objectsRem STAGE 3: Determine the original release and call theRem c0x0x0x0.sql for the release. This performs allRem necessary dictionary upgrade actions to bring theRem database from the original release to new release.RemRem NOTESRemRem * This script needs to be run in the new release environmentRem (after installing the release to which you want to upgrade).Rem * You must be connected AS SYSDBA to run this script.RemRem MODIFIED (MM/DD/YY)Rem skabraha 05/16/11 - Backport skabraha_bug-11823179 from mainRem cmlim 05/12/11 - Backport cmlim_bug-12337546 from mainRem skabraha 07/29/10 - Backport skabraha_bug-9928461 from mainRem cdilling 03/29/07 - set error logging off - bug 5959958Rem rburns 12/11/06 - eliminate first phaseRem rburns 07/19/06 - fix log miner locationRem rburns 05/22/06 - restructure for parallel upgradeRem rburns 02/15/06 - re-run message with expected errorsRem gviswana 03/09/06 - Add utlrdtRem rburns 02/10/06 - fix re-run logic for 11.1Rem rburns 01/10/06 - release 11.1.0Rem rburns 11/09/05 - version fixesRem rburns 10/21/05 - remove 817 and 901 upgradesRem cdilling 09/28/05 - temporary version until db version updatedRem ssubrama 08/17/05 - bug 4523571 add note before utlipRem sagrawal 06/28/05 - invalidate PL/SQL objects for upgrade to 11Rem rburns 03/14/05 - dbms_registry_sys timestampRem rburns 02/27/05 - record action for historyRem rburns 10/18/04 - remove catpatch.sqlRem rburns 09/02/04 - remove dbms_output compileRem rburns 06/17/04 - use registry log and utlustsRem mvemulap 05/26/04 - grid mcode compatibilityRem jstamos 05/20/04 - utlip workaroundRem rburns 05/17/04 - rburns_single_updown_scriptsRem rburns 01/27/04 - CreatedRemDOC##############################################################################################################################################The first time this script is run, there should be no error messagesgenerated; all normal upgrade error messages are suppressed.If this script is being re-run after correcting some problem, thenexpect the following error which is not automatically suppressed:ORA-00001: unique constraint (<constraint_name>) violatedpossibly in conjunction withORA-06512: at "<procedure/function name>", line NNThese errors will automatically be suppressed by the Database UpgradeAssistant (DBUA) when it re-runs an upgrade.###############################################################################################################################################Rem Initial checks and RDBMS upgrade scripts@@catupstr.sqlRem catalog and catproc run with some multiprocess phases@@catalog.sql --CATFILE -X@@catproc.sql --CATFILE -X--CATCTL -SRem Final RDBMS upgrade scripts@@catupprc.sqlRem Upgrade components with some multiprocess phases@@cmpupgrd.sql --CATFILE -X--CATCTL -SRem Final upgrade scripts@@catupend.sqlRem Set errorlogging offSET ERRORLOGGING OFF;REM END OF CATUPGRD.SQLREM bug 12337546 - Exit current sqlplus session at end of catupgrd.sql.REM This forces user to start a new sqlplus session in orderREM to connect to the upgraded db.exitRem *********************************************************************Rem END catupgrd.sqlRem *********************************************************************总结:经过以上操作,便可以打开数据库了。可能有朋友已经发现其实这个过程也同样适用于数据库升级的操作。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址