基本情況
在做備份還原的時候,可能是第三方備份軟體的配置的原因,使得我在測試伺服器做恢復測試時,使用的備份集不是我的預期的備份集。
我想恢復的是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。