報錯:ORA-00603、ORA-01092、ORA-00704, ORA-00604, ORA-00904

老牛的田發表於2024-11-16

基本情況

在做備份還原的時候,可能是第三方備份軟體的配置的原因,使得我在測試伺服器做恢復測試時,使用的備份集不是我的預期的備份集。
我想恢復的是19c的資料庫,而我實際恢復的是一個11g的資料庫。
我在恢復控制檔案、資料檔案和歸檔日誌檔案的時候都很順利,recover database也成功,但是在最後一步alter database open resetlogs;時報錯。見標題。

解決

官網給出的解釋是重新設定ORACLE_HOME
這樣也對,同一臺伺服器不通版本的oracle的軟體和資料庫沒有對應上,一般的情況大機率是環境變數的問題。只要重新指向就可以了。

錯誤的做法

網上還有一個方法:

  1. 用upgrade方法開庫:
    alter database open upgrade;
    這樣資料庫的狀態是OPEN MIGRATE狀態。
  2. 若目標庫版本在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