Oracle Databaseのアップグレード後に必要な作業

アップグレードの完了後、現在の環境に対して指定されたこれらの必要な作業を確認して完了します。

Oracle Databaseをアップグレードした後で、次のアップグレード後タスクを実行する必要があります。これらのタスクは手動でアップグレードを実行した場合も、Database Upgrade Assistant (DBUA)を使用してアップグレードした場合でも実行する必要があります。

手動アップグレード後のLinuxおよびUnixシステム上での環境変数の設定

Oracle Databaseの手動アップグレードを実行した場合、必要とされるオペレーティング・システムの環境変数が、新しいOracle Databaseリリースのディレクトリを指していることを確認する必要があります。

次の環境変数が新しいOracleホームのディレクトリを指していることを確認します。

  • ORACLE_HOME

  • PATH

注意:

DBUAでは、自動的にOracle環境変数に対して必要な変更が行われます。

すべての無効なオブジェクトの再コンパイル

データベースのインストール、パッチ適用またはアップグレード後に、catconユーティリティを使用してutlrp.sqlを実行し、CDBおよびPDB上の無効なオブジェクトを識別して再コンパイルします。

catcon.plユーティリティを使用して、使用しているコンテナ・データベース(CDB)のすべてのコンテナでutlrp.sqlを実行することをお薦めします。utlrp.sqlスクリプトは、すべての無効なオブジェクトを再コンパイルします。インストールの直後にスクリプトを実行して、ユーザーが無効なオブジェクトにアクセスしないようにしてください。
  1. ディレクトリをOracle_home/rdbms/adminに変更します。次に例を示します
    $ cd $ORACLE_HOME/rdbms/admin
  2. Oracleホームのcatcon.plスクリプトを使用して、utlrp.sqlを実行します。例:
    $ORACLE_HOME/perl/bin/perl catcon.pl --n 1 --e --b utlrp --d '''.''' utlrp.sql

    この使用例では次の点に注意してください。

    • --nパラメータ: 1に設定されているため、各PDBの再コンパイルは順番に実行されます。

    • --eパラメータ: エコーをオンにします。
    • --bパラメータ: ログ・ファイルのベース名を設定します。utlrpに設定されています。

PDBのシリアル再コンパイルが完了するまでの時間の遅延を予期してください。アップグレードするPDBの数によっては、再コンパイルは、アップグレード・スクリプトの完了に要する時間を大幅に超えて延長される可能性があります。

utlrp.sqlスクリプトは、無効なオブジェクトの数と使用可能なCPUの数の両方に基づいて、シリアル再コンパイルまたはパラレル再コンパイルで無効なオブジェクトを自動的に再コンパイルします。CPUは、CPUの数(cpu_count)にCPUごとのスレッドの数(parallel_threads_per_cpu)を乗じて計算されます。Oracle Real Application Clusters (Oracle RAC)では、すべてのOracle RACノード全体でこの数が追加されます。

catconユーティリティの構文およびオプションの詳細は、Oracle Multitenant管理者ガイドを参照してください。

無効なオブジェクトの再コンパイルの進行状況の追跡

これらのSQL問合せを使用して、utlrp.sqlスクリプトによる無効なオブジェクトの再コンパイルの進行状況を追跡します。

アップグレード後にutlrp.sqlスクリプトを実行して無効なオブジェクトを再コンパイルすることをお薦めします。SQL問合せを実行してスクリプトを監視できます。

例6-4 残っている無効なオブジェクトの数

次の問合せを入力すると、残っている無効なオブジェクトの数が返されます。この数は、utlrp.sqlスクリプトの実行につれて時間とともに減少します。

SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6); 

例6-5 再コンパイルされたオブジェクトの数

次の問合せを入力すると、utlrp.sqlによってコンパイルされたオブジェクトの数が返されます。この数は、スクリプトの実行につれて時間とともに増加します。

SELECT COUNT(*) FROM UTL_RECOMP_COMPILED; 

例6-6 エラー付きで再コンパイルされたオブジェクトの数

次の問合せを入力すると、utlrp.sqlによってエラー付きでコンパイルされたオブジェクトの数が返されます。

select COUNT(DISTINCT(obj#)) "OBJECTS WITH ERRORS" from utl_recomp_errors; 

この数が予想より多い場合、各オブジェクトでレポートされたエラー・メッセージを確認してください。エラーの原因がシステムの間違った構成やリソース制約にある場合、それらのエラーの原因を修正してutlrp.sqlを再度実行します。

Oracle RACクラスタ・メンバーのアップグレードでのリスナー・ファイルの場所の更新

共有Oracleベース・ホームを使用せず、Oracle Real Application Clustersメンバー・ノードであるOracle Databaseインスタンスでアップグレードを実行する場合は、リスナー・パスを更新する必要があります。

共有Oracleベース・ホームを使用せず、Oracle Real Application Clustersクラスタ・メンバー・ノードであるOracle Databaseインスタンスでアップグレードを実行する場合に、Database Configuration Assistant (DBCA)を使用しないと、すべてのリモートtnsnames.oraファイルを手動で更新する必要があります。ファイルが更新されていない場合、次のエラーが発生します。

TNS-03505: Failed to resolve name

Oracle Database 20c以降、デフォルトのネットワーク管理ディレクトリは、ローカルのOracleホームの以前のデフォルトであるOracle_home/network (/u01/app/oracle/product/19.1.0/dbhome_1/networkなど)から新しい場所に変更されます。新しいデフォルトの場所は、パスORACLE_BASE/homes/HOME_NAME/network/adminの共有Oracleベース・ホームです。たとえば、/u01/app/oracle/homes/OraDB20Home1/network/adminは特定のOracle Real Application Clusters (Oracle RAC)インスタンスのOracleホームで、読取り専用Oracleホームのデフォルト・パスにあります。そのファイル・パスは、ローカルのtnsnames.oraおよびsqlnet.oraファイルのデフォルトの場所です。

アップグレード中に、Net Configuration Assistant (NetCAまたはnetca)によって、ローカル・ホスト上のネットワーク・リスナー・ファイルtnsnames.oraおよびsqlnet.oraの場所が更新されます。ただし、NetCAは、すべてのクラスタ・メンバー・ノードのインスタンスのネットワーク・リスナー・ファイルの場所を更新するわけではありません。すべてのクラスタ・メンバー・ノードで、アップグレードされたクラスタ・メンバー・ノード・インスタンスに対するサービス・リクエストを解決できるようにするには、次のいずれかを実行する必要があります。

  • 各クラスタ・メンバー・ノードで、tnsnames.oraファイルとsqlnet.oraファイルを既存の場所からORACLE_BASE/homes/HOME_NAME/network/admin/に手動でコピーします。
  • アップグレードされたクラスタ・メンバー・ノードの環境変数を、既存のネットワーク管理ファイルの場所を指すように設定します。

p

回避策を確認するには: -----------tnsnames.oraおよびsqlnet.oraを$ORACLE_BASE/homes/OraDB20Home1/network/admin/sqlnet.oraにコピーまたはTNS_ADMIN=$ORACLE_HOME/network/adminをエクスポート

例6-7 TNSNAMES.ORAおよびSQLNET.ORAを新しいデフォルト・ネットワーク管理ディレクトリにコピー

この例では、既存のtnsnames.oraおよびsqlnet.oraファイルを、各クラスタ・メンバー・ノード上の新しいデフォルトのネットワークの場所にコピーします。

  1. Oracleインストール所有者としてログインし、以前のリリースのネットワーク管理ディレクトリにディレクトリを変更します。次に例を示します。

    /home/oracle > $ cd $ORACLE_HOME/network
  2. セキュア・コピー(scp)を使用して、リスナー・ファイルを別のクラスタ・メンバー・ノード上のデフォルトのネットワーク・ディレクトリの場所にコピーします。たとえば、racnode2は、リスナー・ファイルをコピーするクラスタ・メンバー・ノードです。
    
    /u01/app/oracle/product/19.1.0/dbhome_1/network oracle> $ scp tnsnames.ora sqlnet.ora \
    oracle@racnode2:/u01/app/oracle/homes/OraDB20Home1/network/admin/

例6-8 TNS_ADMIN環境変数の設定

アップグレードされたノードで、Oracleユーザーとしてログインし、既存のリスナー・ファイルの場所を指すようにTNS_ADMINの環境変数を設定します。次に例を示します。

/home/oracle oracle> $ export TNS_ADMIN=$ORACLE_HOME/network/admin

Oracle Databaseのアップグレード後のOPatchコマンドの実行

Oracle Databaseをアップグレードした後で、新しいOracleホームからOPatchコマンドを実行する必要があります。

OPatchは、Oracle Universal Installerを使用してインストールするJavaベースのユーティリティです。Opatchはプラットフォームに依存します。サポートされているすべてのオペレーティング・システム上で実行されます。スタンドアロンOPatchと呼ばれる別のバージョンのOPatchも使用できます。これは、Oracle Universal Installerを使用せずにOracleホームで実行されます。

パッチとは、既存のインストールにコピーされる小型のファイル・コレクションです。パッチはOracle製品の特定のバージョンに関連付けられています。インストール済の対応バージョンの製品にパッチを適用すると、製品のバージョンがアップグレードされます。

Oracle Databaseインベントリを確認するためのOPatchの実行

Oracleインストレーション所有者としてログインし、新しいOracleホームからlsinventoryコマンドを実行します。このコマンドは、使用しているシステムにインストールされているOracleソフトウェアの正確かつ完全なインベントリを生成します。

opatch lsinventory –patch

My Oracle Supportのノート756671.1を参照して、リリース更新(Update)およびリリース更新リビジョン(Revision)に関する最新の推奨事項を定期的に入手してください。

Oracle Databaseのアップグレード後にoratabおよびスクリプトが新しいOracleの場所を指すようにするための設定

新しいOracleホームの場所を指すようにスクリプトを設定する必要があります。

Oracle Databaseを新しいリリースにアップグレードした後に、oratabファイルおよびORACLE_HOME値を設定するすべてのクライアント・スクリプトが、新しいOracle Databaseリリース用に作成された新しいOracleホームを指していることを確認する必要があります。DBUAでは、oratabファイルは自動的に新しいOracleホームを指します。ただし、クライアント・スクリプトは、アップグレードに使用する方法にかかわらず確認する必要があります。

データベースを手動でアップグレードする場合、新しいOracle DatabaseリリースのOracleインストール所有者としてログインし、oratabファイルを手動で更新する必要があります。oratabファイルの場所は、使用しているオペレーティング・システムによって異なります。

参照:

オペレーティング・システムの環境変数の設定の詳細は、『Oracle Database管理者ガイド』を参照してください

My Oracle Support: oratabファイルの検索または作成(ドキュメントID 394251.1)

https://support.oracle.com/rs?type=doc&id=394251.1

PL/SQLパッケージおよび依存プロシージャの確認

以前のリリースのOracle Databaseにインストールしたパッケージは新しいリリースでは使用できない可能性がありますが、これはアプリケーションに影響する場合があります。

アップグレード後に、独自のスクリプトで使用していたパッケージまたは独自のスクリプトからコールしていたパッケージがすべて新しいリリースで使用できることを確認してください。パッケージに依存するプロシージャのテストは、アップグレード計画に含まれる必要があります。

データベース・アプリケーションのコードは、接続先データベースのオブジェクトを参照できます。たとえば、Oracle Call Interface(OCI)およびプリコンパイラ・アプリケーションは無名PL/SQLブロックを発行できます。Oracle Formsアプリケーションのトリガーは、スキーマ・オブジェクトを参照できます。これらのアプリケーションは、参照しているスキーマ・オブジェクトに依存しています。依存性管理の方法は開発環境によって異なります。Oracle Databaseでは、アプリケーションの依存性が自動的に追跡されることはありません。

Oracle管理タイプに依存する表のアップグレード

Oracle Database 12cリリース2 (12.2)以降では、Oracle管理タイプに依存するユーザー表を手動でアップグレードする必要があります。

注意:

AutoUpgradeユーティリティを使用してアップグレードした場合、AutoUpgradeがアップグレード中に自動的にこのタスクを処理します。このタスクを実行する必要はありません。

Oracle管理タイプに依存するユーザー表(AQキュー表など)がデータベースに含まれる場合、アップグレード後にutluptabdata.sqlコマンドを実行して、Oracle管理タイプの変更の影響を受けるすべてのユーザー表に対してALTER TABLE UPGRADEを実行します。この動作変更によって、ユーザー表は、アップグレード中にREAD ONLY状態のままになります。ユーザーは、SYSDBA権限(AS SYSDBA)を使用してアプリケーションにログインし、Oracle管理タイプに依存するアプリケーション表を変更できなくなります。

データベース・アップグレードの完了後にアップグレードする必要がある表を特定するには、データベースにAS SYSDBAで接続し、次の問合せを実行します。

COLUMN owner FORMAT A30
COLUMN table_name FORMAT A30
SELECT DISTINCT owner, table_name
FROM dba_tab_cols
WHERE data_upgraded = 'NO'
ORDER BY 1,2;

この問合せによって、UPGRADEDとしてリストされないすべての表が示されます。ただし、utluptabdata.sqlスクリプトは、Oracle管理タイプに依存する表のみをアップグレードします。問合せによって表がリストされた場合、utluptabdata.sqlスクリプトを実行して依存ユーザー表にALTER TABLE UPGRADEコマンドを実行し、これらのOracle管理タイプをそのタイプの最新バージョンにアップグレードします。

utluptabdata.sqlスクリプトは、Oracle管理タイプに依存するすべての表に対するALTER権限を持つユーザー・アカウントか、またはAS SYSDBAでログインしているSYSDBAシステム権限を付与されたユーザーを使用して実行する必要があります。

パラメータSERVEROUTPUTONに設定されている場合、utluptabdata.sqlスクリプトによって、アップグレードされたすべての表の名前が表示され、表のアップグレード中に発生したエラーがリストされます。サーバー出力をONに設定するには、次のコマンドを実行します。

SET SERVEROUTPUT ON
@utluptabdata.sql

新しい拡張データ型機能の有効化

システムで新しい拡張データ型を利用できるようにするには、特定のアップグレード操作が必要です。

Oracle Database 12cでは、SQLのVARCHAR2NVARCHAR2およびRAWデータ型の最大サイズを制御するMAX_STRING_SIZEが導入されました。MAX_STRING_SIZE = EXTENDEDを設定することで、Oracle Database 12cで導入された32767バイト制限が有効になります。

MAX_STRING_SIZE = EXTENDEDを設定するには、COMPATIBLE初期化パラメータを12.0.0.0以上に設定する必要があります

また、データベースがアップグレード・モードで開いているときにutl32k.sqlスクリプトを実行することによって、データ型サイズの変更の影響を受けるオブジェクトを無効にして再コンパイルする必要があります。次に例を示します。

CONNNECT SYS / AS SYSDBA
SHUTDOWN IMMEDIATE;
STARTUP UPGRADE;
ALTER SYSTEM SET max_string_size=extended;
START $ORACLE_HOME/rdbms/admin/utl32k.sql
SHUTDOWN IMMEDIATE;
STARTUP;

注意:

MAX_STRING_SIZEの値はSTANDARDからEXTENDEDに変更できます。ただし、MAX_STRING_SIZEの値をEXTENDEDからSTANDARDには変更できません。MAX_STRING_SIZE = EXTENDEDを設定することは、データベースでアプリケーションの非互換性が発生する可能性がある設定を明示的に指定することになります。

参照:

MAX_STRING_SIZEの推奨事項および手順などの詳細は、Oracle Databaseリファレンスを参照してください

パラレル実行サーバーの最大値および最小値の調整

環境に応じて、PARALLEL_MIN_SERVERSパラメータのデフォルト設定を減らすことができます。

Oracle Database 12cでは、PARALLEL_MIN_SERVERSのデフォルトは、0からハードウェア・プラットフォームに基づいて提供された値に変更されました。パラレル実行に十分な最低限のサポートを提供するために、この変更が行われました。新しいデフォルト設定が高すぎる場合は、要件に応じて設定を調整します。PARALLEL_MAX_SERVERSのデフォルトは変更されていません。以前の環境のデフォルトのまま変更されていない場合、追加の操作を実行する必要はありません。

参照:

PARALLEL_MIN_SERVERSの詳細は、Oracle Databaseリファレンスを参照してください

Oracle Databaseのアップグレード後のリカバリ・カタログ・アップグレードの概要

RMANクライアントで要求されるバージョンより古いリカバリ・カタログ・スキーマを使用している場合、そのカタログをアップグレードする必要があります。

参照:

Oracle Databaseのアップグレード後のタイムゾーン・ファイルのバージョンのアップグレード

データベースのアップグレードを完了した後、アップグレード前情報ツールによってタイムゾーン・ファイルをアップグレードするよう指示された場合は、DBMS_DST PL/SQLパッケージを使用してタイムゾーン・ファイルをアップグレードします。

Oracle Databaseでは、複数のバージョンのタイムゾーン・ファイルを提供しています。各タイムゾーン・ファイルに関連付けられた2つのタイプのファイルがあり、1つはデータベースに定義されたすべてのタイムゾーンを含む大きいファイルで、1つは最も一般的に使用されるタイムゾーンのみを含む小さいファイルです。大きいバージョンは、timezlrg_version_number.datという名前です。小さいバージョンは、timezone_version_number.datという名前です。ファイルは、Oracle Databaseホーム・ディレクトリ下のoracore/zoneinfoサブディレクトリにあります。

Oracle Databaseのアップグレード後のDBMS_STATSパッケージで作成された統計表のアップグレード

DBMS_STATS.CREATE_STAT_TABLEプロシージャを使用して統計表を作成した場合、DBMS_STATS.UPGRADE_STAT_TABLEを実行してそれらの表をアップグレードします。

次の例で、greenは統計表の所有者で、STAT_TABLEは統計表の名前です。

EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('green', 'stat_table'); 

各統計表にこのプロシージャを実行します。

参照:

DBMS_STATSパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

Oracle XML DBに対するFTPとHTTPのポートおよびHTTP認証の構成

Oracle Database Configuration Assistant (DBCA)は、Oracle Database 12c以降のリリースでOracle XML DB用のポートを構成しません。アップグレードではダイジェスト認証が使用されます。

ポートを構成する場合、改善されたセキュリティ機能を利用するために、Oracle XML DB Repositoryへのアクセス用にHTTPの認証も構成することをお薦めします。

Oracle Database 12c以降では、ダイジェスト認証のサポートを提供することによって、データベースのセキュリティが向上しました。ダイジェスト認証は、HTTPプロトコルで一般に使用され、ほとんどのHTTPクライアントでサポートされている業界標準のプロトコルです。ほとんどのHTTPクライアントではこれがサポートされています。ダイジェスト認証により、暗号化(HTTPS)接続が使用されない場合でも、パスワードが常にセキュアな方法で送信されます。ダイジェスト認証をサポートすることによって、組織では、パスワードの漏えいを心配することなくOracle XML DB HTTPを使用するアプリケーションをデプロイできます。Oracle XML DBでのダイジェスト認証のサポートでは、Oracle XML DB HTTPサーバーとMicrosoft Web Folders WebDAVクライアントとの互換性も引き続き維持されます。

新しいリリースのインストールまたはアップグレード後に、次のようにOracle XML DBのFTPおよびHTTPポートを手動で構成する必要があります。

  1. DBMS_XDB_CONFIG.setHTTPPort(HTTP_port_number)を使用して、Oracle XML DBのHTTPポートを設定します。

    SQL> exec DBMS_XDB_CONFIG.setHTTPPort(port_number);
    
  2. Use DBMS_XDB_CONFIG.setFTPPort(FTP_port_number)を使用して、Oracle XML DBのFTPポートを設定します。

    SQL> exec DBMS_XDB_CONFIG.setFTPPort(FTP_port_number);
    

    注意:

    手順内のFTPおよびHTTPで使用するポート番号は、DBMS_XDB_CONFIG.getFTPPortおよびDBMS_XDB_CONFIG.getHTTPPortをそれぞれ使用することによって問い合せることができます。

  3. 使用されているすべてのポート番号を確認するには、DBMS_XDB_CONFIG.usedportを問い合せます。

Oracle Databaseのアップグレード後のOracle Textが提供するナレッジ・ベースのインストール

Oracle Textナレッジ・ベースに対してユーザーが拡張した項目は、Oracle Databaseアップグレード後に再生成する必要があります。

ユーザー拡張を再生成すると、指定したOracleホームにインストールされているすべてのデータベースに影響を与えます。

Oracle Textが提供するナレッジ・ベースは新しいOracle Databaseの付属製品の一部ですが、アップグレード後すぐに使用することはできません。アップグレード前には使用可能であったナレッジ・ベースに依存するOracle Textの機能は、アップグレード後には機能しなくなります。これらの機能を再度使用可能にするには、Oracle Textナレッジ・ベースを新しいOracle Databaseリリースのインストール・メディアからインストールする必要があります。

参照:

Oracle Application Expressの以前のリリースの削除

無効なオブジェクトを回避するには、Oracle Application Express (APEX) 19.1より前のApplication Expressのリリースを削除します。

パッケージDBMS_OBFUSCATION_TOOLKITはOracle Database 11gリリース2 (11.2)で非推奨になりました。Oracle Database 20c以降、DBMS_OBFUSCATION_TOOLKITはサポート対象外になり、DBMS_CRYPTに置き換えられました。Oracle Database 20cより前のリリースでは、Oracle Application Express (APEX)はDBMS_OBFUSCATION_TOOLKITに継続して依存していました。APEXリリース19.2を含むOracle Database 20cでは、この依存性が削除されました。

Oracle Databaseのアップグレード中、APEXはOracle Databaseリリースに付属のリリースに自動的にアップグレードされません。アップグレード前に、アップグレード前情報ツールにより、以前のリリースがDBMS_OBFUSCATION_TOOLKITに依存しているため、APEX 19.1.0.00.15より前のAPEXリリースをアップグレードする必要があることが示されます。

INVALIDオブジェクトを回避するには、Oracle Databaseをアップグレードする前または後のいずれかで、APEXを少なくともOracle Database 20cに付属するバージョンにアップグレードしてから、APEXの以前のリリースを削除する必要があります。

  1. 新しいOracle DatabaseのOracleホームにログインします
  2. Oracle Application Expressを、Oracleホーム(APEX 19.2)に同梱されているOracle Application Express 19.2以上、またはそれ以降のバージョンが使用可能な場合は、それを使用してOracle Application Expressをアップグレードします
  3. 以前のリリースのAPEXユーザーを削除します。

    次に例を示します。

    drop user APEX_050000 cascade;
    drop user APEX_040200 cascade;
    drop user APEX_030100 cascade;
  4. 以前のリリースのAPEX SYSが所有するオブジェクトを削除します。

    次に例を示します。

    drop package SYS.WWV_DBMS_SQL;

注意:

Oracle Application Express 18c (18.1)以降では、SYS.WWV_DBMS_SQLオブジェクトにはOracle Application Expressリリース・スキーマが追加されています。

次に例を示します。

SYS.WWV_DBMS_SQL_APEX_180100 

読取り専用OracleホームでのDEMOディレクトリの置換

読取り専用Oracleホームをアップグレードした後、以前のリリースのOracle Databaseのdemoディレクトリをコピーし、読取り専用Oracleホームのdemoディレクトリを新しいリリースのdemoディレクトリに置き換えます。

Oracle Database 18c以上のリリースでは、ファイル・パスOracle_home/rdbms/demoに製品デモンストレーション・ディレクトリが含まれています。これらのディレクトリには、各Oracle Databaseリリースのオプションと機能に固有の例と製品デモンストレーションが含まれています。これらの一部は、Oracle Database Examplesをインストールすると、アップグレード後に追加できます。以前のリリースでは、以前のリリースのデモンストレーション・ファイルを使用してダウンロードして作業した場合、2つの問題があります。新しいリリースでレビューおよびテストするために以前のリリースの作業を保存する必要があること、および新しいリリースに固有のデモンストレーションのリフレッシュを取得する必要があることです。

Oracleホームをアップグレードした後、新しいデモンストレーション・ファイルで実行する他の作業をダウンロードして実行したら、古いデモンストレーション・ファイルをリフレッシュできます。

例6-9 以前のリリースのDemoディレクトリのコピーおよび読取り専用Oracleホームでのデモンストレーションのリフレッシュ

アップグレード後に、この手順を使用して、以前のdemoディレクトリの作業を読取り専用Oracleホームに保存し、以前のリリースのdemoディレクトリを新しいリリースのdemoディレクトリで置き換えます。

  1. Oracleソフトウェア所有者ユーザー(oracle)としてログインします。

  2. rdbms/demoディレクトリが読取り専用Oracleホームにコピーされているかどうかを確認します。

    この例では、環境変数ORACLE_BASE_HOMEが読取り専用Oracleホームのパスとして定義されています。

    LinuxおよびUNIXプラットフォーム:

    $ ls -l -d $ORACLE_BASE_HOME/rdbms/demo
    /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/demo

    Microsoft Windowsプラットフォーム

    ls -l -d %ORACLE_BASE_HOME%\rdbms\demo 
    %ORACLE_BASE_HOME%\rdbms\demo
  3. ディレクトリを読取り専用Oracleホームに変更し、コピーを作成します。ここで、demo.old_release18は以前のリリースのデモンストレーション・ファイルに指定する名前です。

    cd $ORACLE_BASE_HOME/rdbms
    mv demo demo.old_release18
  4. 新しいdemoディレクトリをアップグレードされたOracleホームから読取り専用Oracleホームにコピーします。

    この例では、環境変数ORACLE_HOMEが新しいリリースのOracleホームとして定義されています。

    LinuxおよびUNIX:

    cp -r $ORACLE_HOME/rdbms/demo demo

    Microsoft Windows

    xcopy c:\%ORACLE_HOME%\rdbms\demo c:%ORACLE_BASE_HOME%\rdbms\demo /E

外部ネットワーク・サービスへのアクセス制御リスト(ACL)の構成

Oracle Database 12c以降のリリースには、UTL_TCPUTL_SMTPUTL_MAILUTL_HTTPまたはUTL_INADDRパッケージに対するファイングレイン・アクセス制御が含まれています。

これらのパッケージを使用するアプリケーションがある場合、Oracle Databaseのアップグレード後に、データベースのネットワーク・アクセス制御リスト(ACL)を構成してから、影響を受けるパッケージを前のリリースと同様に動作させる必要があります。ACLがない場合、エラー「ORA-24247: アクセス制御リスト(ACL)によりネットワーク・アクセスが拒否されました」でアプリケーションが失敗する可能性があります。

参照:

一部のユーザーはホストAに接続し、別のユーザーはホストBに接続するなど、より複雑な状況については、Oracle Databaseセキュリティ・ガイドを参照してください

Oracle Databaseのアップグレード後のOracle Database Vaultの有効化

ターゲットのデータベース・リリースによっては、Oracle Database Vaultを無効にしないとOracle Databaseのアップグレードを完了できない場合があります。

Oracle Database Vaultの無効化なしでのOracle Databaseのアップグレード

ターゲットのOracle Databaseリリースが12.2以上である場合は、Oracle Database Vaultを無効にせずにアップグレードできます。

ソースのOracle DatabaseリリースでOracle Database Vaultを有効にしていた場合は、Oracle Database Vaultを事前に無効にしなくても、Oracle DatabaseをOracle Database 18c以上のリリースにアップグレードできます。ソースのOracle DatabaseリリースがOracle Database 12cリリース1 (12.1)以上である場合は、アップグレード後に、アップグレード前に用意したものと同じ強化設定を使用してOracle Database Vaultが有効になります。たとえば、ソース・データベースがOracle Databaseリリース12.1であり、そのリリースでOracle Database Vaultを無効にしていた場合は、アップグレード後も無効になります。アップグレード前にソースのOracle Databaseリリース12.1データベースでOracle Database Vaultを有効にしていた場合は、アップグレード後もOracle Database Vaultは有効になります。

アップグレード前に手動でOracle Database Vaultを無効にした場合は、アップグレード後に手動でOracle Database Vaultを有効にする必要があります。

アップグレード前にOracle Database Vaultを有効にしていなかった場合は、アップグレード後に手動で有効にできます。

プロシージャdvsys.dbms_macadm.enable_dv()を使用して、アップグレードしたデータベースでOracle Database Vaultを有効にします。このプロシージャは、DV_OWNERを付与されたユーザー・アカウントを使用して実行します。プロシージャを実行したら、そのプロシージャを有効にするためにデータベース・インスタンスを再起動します。

Oracle Database Vaultが関連する一般的なアップグレード・シナリオ

アップグレード後にOracle Database Vaultを有効にする必要があるかどうかは、ソースのOracle Databaseリリースによって異なります。

  • Oracle Database 11gリリース2 (11.2)以下からのアップグレード: アップグレード後、Oracle Database Vaultはデフォルトで無効になります。

  • Oracle Database 12cリリース1 (12.1)以上からのアップグレード: アップグレード後、Oracle Database Vaultはアップグレード前に用意したものと同じ強化ステータスになります。

表6-1 Oracle Database Vaultの一般的なアップグレード・シナリオおよびアップグレード準備作業

ソース・データベース・リリース ターゲット・データベース・リリース アップグレード前にDatabase Vaultを無効にする必要があるかどうか アップグレード後のDatabase Vaultのステータス
11.2以下 12.1 無効。アップグレード後にDatabase Vaultを手動で有効にする必要があります。
11.2以下 12.2、18.1以上 いいえ 無効。アップグレード後にDatabase Vaultを手動で有効にする必要があります。
12.1、12.2、18.1以上 12.2、18.1以上 いいえ Database Vaultはアップグレード前に用意したものと同じ強化ステータスになります。

SQLNET.ALLOWED_LOGON_VERSIONパラメータの動作の確認

10gより前のリリースのクライアントからのOracle Databaseに対する接続は、ORA-28040: 「一致する認証プロトコルがありません」というエラーによって失敗します。

Oracle Database 18c以上では、SQLNET.ALLOWED_LOGON_VERSIONパラメータのデフォルト値がOracle Database 12c (12.2)の11からOracle Database 18c以上のリリースの12に変更されています。このパラメータの使用は非推奨になりました。

SQLNET.ALLOWED_LOGON_VERSIONは、現在、SQLNET.ALLOWED_LOGON_VERSION_SERVERおよびSQLNET.ALLOWED_LOGON_VERSION_CLIENTパラメータに置き換えられています。アップグレードしたデータベースでSQLNET.ALLOWED_LOGON_VERSION_SERVERパラメータを明示的に設定していない場合、リリース10gより前のリリースのクライアントからの接続は、ORA-28040: 「一致する認証プロトコルがありません」というエラーによって失敗します。セキュリティ強化のため、データベース・ユーザーのパスワード検証機能を確認し、SQLNET.ALLOWED_LOGON_VERSION_SERVERおよびSQLNET.ALLOWED_LOGON_VERSION_CLIENTパラメータを設定して正しいパスワード検証機能を使用するようにデータベースを構成します。

既存のデータベースにパスワードで保護されたロール(セキュア・ロール)があり、デフォルトのSQLNET.ALLOWED_LOGON_VERSION_SERVER設定である12を使用してOracle Database 18c以上のリリースにアップグレードする場合、そのセキュア・ロールに含まれるのはリリース10gの検証機能のみであるため、アップグレード後もセキュア・ロールが使用可能な状態になるように、管理者は各セキュア・ロールのパスワードをリセットする必要があります。

参照: