Oracle Databaseのダウングレードのトラブルシューティング
このトラブルシューティング情報を使用して、Oracle Databaseのダウングレード時に発生する可能性のある問題に対処します。
この項には、ダウングレード時に発生する可能性のある既知のエラーと、それらのエラーに対処するための回避策が含まれます。
- catdwgrd.sqlスクリプトを使用したOracle Databaseコンポーネントのダウングレード中のエラー
この項を使用して、ダウングレード中にcatdwgrd.sql
スクリプトを実行するときに発生するエラー(ORA-20001
: ダウングレードを続行できませんなど)のトラブルシューティングを行います。 - アップグレードの成功または失敗後のOracle Grid Infrastructure (Oracle Restart)のダウングレード
Oracle Restartをダウングレードするには、Oracle Grid Infrastructureを構成解除してから再インストールする必要があります。その後、データベースおよびサービスを戻すことができます。 - Oracle Messaging Gatewayを使用したデータベースのダウングレード・エラー
Oracle Messaging Gatewayを使用して構成されたデータベースをダウングレードすると、ORA-02303
エラーが発生することがあります。
catdwgrd.sqlスクリプトを使用したOracle Databaseコンポーネントのダウングレード中のエラー
この項を使用して、ダウングレード中にcatdwgrd.sql
スクリプトを実行するときに発生するエラー(ORA-20001
: ダウングレードを続行できませんなど)のトラブルシューティングを行います。
catdwgrd.sql
スクリプトはOracle Databaseのデータベース内のすべてのコンポーネントを、アップグレード前の当初のメジャー・リリースにダウングレードします。このスクリプトはデータ・ディクショナリをダウングレードする前に実行する必要があります。スクリプトの実行時に何か問題が発生した場合は、問題の原因を修正してからスクリプトを再実行します。
表示されるエラーには、ORA-39709
およびORA-06512
が含まれます。これらのエラーが発生した場合、ダウングレードを続行できません。
-
原因: データ・ディクショナリのダウングレード前にダウングレードする必要のある1つ以上のコンポーネントがダウングレードされていません。
-
処置: ログ・ファイルを確認して、
catdwgrd.sql
スクリプトが停止し、ダウングレードが中断する前に、どのようなエラーが発生したかを判断します。
これらの例を確認して、この問題の修正方法を理解します。
エラーには一般に、ダウングレードの完了を妨げている問題を修正するために何をする必要があるかが説明されています。エラー・メッセージの説明に従ってください。エラーの原因を修正した後に、catdwgrd.sql
スクリプトを再実行します。
たとえば、チェックによりCDB$ROOTのダウングレード中にCDBのダウングレードが失敗した場合は、エラー・メッセージの説明に従って、条件エラーを修正します。エラーを修正した後に、catcon.pl
を指定してcatdwgrd.sql
を再実行します。-c
オプションを使用して、包含リスト'CDB$ROOT PDB1'
でコマンドを実行します。-r
オプションを使用して、コマンドを最初にPDBで、次にCDB$ROOTで実行します。たとえば:
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -d $ORACLE_HOME/rdbms/admin -e -b catdwgrd -l /scratch/rac/downgradeLogs -c 'CDB$ROOT, PDB1, PDB2' -r catdwgrd.sql
例10-3 ORA-06512によるORA-20001エラー
ダウングレードが中止されました。ログ・ファイルを確認したところ、catdwgrd.sql
がこのエラーで終了したことがわかりました。
DECLARE * ERROR at line 1: ORA-20001: Downgrade cannot proceed -
Unified Audit Trail data exists. Please clean up the data first
using DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL. ORA-06512: at line 65
ORA-06512: at line 42
CDB$ROOT
およびすべてのPDBで統合監査証跡を削除する必要があります。
-
統合監査証跡の存在を確認します。
SQL> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL; COUNT(*) ---------- 4538
-
CDB上で監査証跡を削除します。
たとえば、この場合監査証跡タイプは
DBMS_AUDIT.MGMT.AUDIT
になります。EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL DBMS_AUDIT_MGMT.AUDIT
-
CDB$ROOT
でcatdwngrd.sql
を実行します。PDBに依然として統合監査データが存在する場合、スクリプトはORA20001で失敗します。62 execute immediate 63 'select count(*) from audsys.'||'"'||tab_name||'"' into no_rows; 64 65 -- If audit trail has some data, raise the application error 66 IF no_rows > 0 THEN 67 RAISE_APPLICATION_ERROR(-20001, ErrMsg); 68 END IF; 69 END IF; 70 END IF; 71 EXCEPTION 72 WHEN NO_DATA_FOUND THEN 73 NULL; 74 WHEN OTHERS THEN 75 RAISE; 76 END; 77 / DECLARE * ERROR at line 1: ORA-20001: Downgrade cannot proceed - Unified Audit Trail data exists.Please clean up the data first using DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL. ORA-06512: at line 75
-
個々のPDBに接続し、統合監査証跡があるかどうかを確認します。すべてのPDBの統合監査証跡をクリアします。たとえば、PDB1という名前のPDBに統合監査証跡がある場合、次のようになります。
ALTER SESSION SET container = PDB1; SQL> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL; COUNT(*) ---------- 1330
-
統合監査証跡を特定します。
SQL> CREATE TABLE UA_DATA AS (SELECT * FROM UNIFIED_AUDIT_TRAIL);
-
監査証跡を削除します。
この例では、監査証跡タイプは
DBMS_AUDIT_MGMT.AAUDIT_TRAIL_UNIFIED
であり、USE_LAST_ARCH_TIMESTAMP
値はFALSE
に設定されているため、最終アーカイブ・タイムスタンプを考慮せずにすべての監査レコードが削除され、CONTAINER
値がDBMS_AUDIT_MGMT.CONTAINER_ALL
に設定されているため、すべてのPDB上の監査レコードが削除されます。BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, USE_LAST_ARCH_TIMESTAMP => FALSE, CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_ALL END; /
-
PDBおよびCDBレベルで
catdwngrd.sql
を再実行します。たとえば:$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -c 'CDB$ROOT,PDB1' -d $ORACLE_HOME/rdbms/admin -e -b catdwgrd -l /u01/oracle/product/19.0.0/downgrade_logs -r catdwgrd.sql
-
CDBおよびPDBでスクリプトが正常に完了して
ORA-20001
エラーがログに表示されなくなるまで、監査証跡を検索して削除するプロセスを繰り返し、catdwgrd.sql
を実行します
アップグレードの成功または失敗後のOracle Grid Infrastructure (Oracle Restart)のダウングレード
Oracle Restartをダウングレードするには、Oracle Grid Infrastructureを構成解除してから再インストールする必要があります。その後、データベースおよびサービスを戻すことができます。
Oracle Messaging Gatewayを使用したデータベースのダウングレード・エラー
Oracle Messaging Gatewayを使用して構成されたデータベースをダウングレードすると、ORA-02303
エラーが発生することがあります。
Oracle Messaging Gatewayオブジェクトを含むOracle Databaseをダウングレードすると、次のエラーが発生することがあります。
ORA-02303: cannot drop or replace a type with type or table dependents
- 原因
catrelod.sql
スクリプトで、以前のOracle Databaseリリースとは異なるタイプのOracle Messaging Gatewayオブジェクトを再ロードしようとしています。 - 処置 処置は必要ありません。このエラーは無視できます。