Oracle Databaseのダウングレードのトラブルシューティング

このトラブルシューティング情報を使用して、Oracle Databaseのダウングレード時に発生する可能性のある問題に対処します。

この項には、ダウングレード時に発生する可能性のある既知のエラーと、それらのエラーに対処するための回避策が含まれます。

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で統合監査証跡を削除する必要があります。

たとえば:
  1. 統合監査証跡の存在を確認します。

    SQL> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;
    COUNT(*)
    ----------
          4538
  2. CDB上で監査証跡を削除します。

    たとえば、この場合監査証跡タイプはDBMS_AUDIT.MGMT.AUDITになります。

    EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL DBMS_AUDIT_MGMT.AUDIT
  3. CDB$ROOTcatdwngrd.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
  4. 個々のPDBに接続し、統合監査証跡があるかどうかを確認します。すべてのPDBの統合監査証跡をクリアします。たとえば、PDB1という名前のPDBに統合監査証跡がある場合、次のようになります。

    ALTER SESSION SET container = PDB1;
    
    SQL> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;
     COUNT(*)
    ----------
          1330
  5. 統合監査証跡を特定します。

    SQL> CREATE TABLE UA_DATA AS (SELECT * FROM UNIFIED_AUDIT_TRAIL);
  6. 監査証跡を削除します。

    この例では、監査証跡タイプは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;
    /
  7. 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
  8. 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オブジェクトを再ロードしようとしています。
  • 処置 処置は必要ありません。このエラーは無視できます。