解决“ORA-00603 ORA-01092 ORA-00704 ORA-00604”报错

背景:用rman异机恢复源库为11g,新库为19c。恢复完数据库,打开时报错。

问题原因:若原数据库的版本是11.2.0.1,但是目标数据库的版本是19.0.0.3 (在12.2版本中,客户在升级数据库字典时必须使用并行升级实用程序catctl.pl来调用catupgrd.sql。不再支持直接从sQL*Plus运行catupgrd.sql。)

SQL> alter database open;
alter database open
* 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: 24442
Session ID: 919 Serial number: 35136

解决方法:通过upgrade的方式打开数据库,如下

[oracle@ekptest001 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on 星期三 12月 24 15:31:16 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

已连接到空闲例程。

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area 6797832192 bytes

Fixed Size 2241264 bytes

Variable Size 3523218704 bytes

Database Buffers 3254779904 bytes

Redo Buffers 17592320 bytes

数据库装载完毕。

SQL> alter database open upgrade;

数据库已更改。

SQL> select status from v$Instance;

STATUS

------------------------------------

OPEN MIGRATE

目标库版本在12以上用该命令:

cd $ORACLE_HOME/rdbms/admin
$ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql

目标库版本在12以下用该命令:

SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql;

其中运行catupgrd.sql脚本花费了1小时45分钟,完成后会自动启动数据库。

原理:当数据库的升级的时候,数据库内部的基表进行了变更,数据字典也需要进行相应的更新,运行catupgrd.sql会进行相应对象更新;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值