基本情况
在做备份还原的时候,可能是第三方备份软件的配置的原因,使得我在测试服务器做恢复测试时,使用的备份集不是我的预期的备份集。
我想恢复的是19c的数据库,而我实际恢复的是一个11g的数据库。
我在恢复控制文件、数据文件和归档日志文件的时候都很顺利,recover database也成功,但是在最后一步alter database open resetlogs;
时报错。见标题。
解决
官网给出的解释是重新设置ORACLE_HOME
这样也对,同一台服务器不通版本的oracle的软件和数据库没有对应上,一般的情况大概率是环境变量的问题。只要重新指向就可以了。
错误的做法
网上还有一个方法:
- 用upgrade方法开库:
alter database open upgrade;
这样数据库的状态是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;
网上说这样就能开库了,但是我测试后发现不行,源是11g,目标是19c。
并且重启之后虽然可以将数据库置于open状态,但是组件的版本依然是upgrade状态,很多表的无法查询。总之这不是一个正确的做法。
我们的目的也不是为了升级这个数据库。
如果想了解升级应该用Oracle的升级程序autoupgrade.jar。