Oracle Databaseのアップグレード後に必要な作業
アップグレードの完了後、現在の環境に対して指定されたこれらの必要な作業を確認して完了します。
Oracle Databaseをアップグレードした後で、次のアップグレード後タスクを実行する必要があります。
ノート:
この必須タスクのリストは、AutoUpgradeを使用してアップグレードを実行したという前提に基づいています。AutoUpgradeでは、手動で実行する必要があるタスク以外の多数のタスクを自動的に完了します。- 手動アップグレード後のLinuxおよびUnixシステム上での環境変数の設定
必要なオペレーティング・システムの環境変数が、新しいOracle Databaseリリースのディレクトリを指していることを確認します。 - データベース内の無効なオブジェクトの再コンパイル
データベースをインストール、パッチ適用またはアップグレードした後、再コンパイル・ドライバ・スクリプトを使用して、CDBおよびPDB上の無効なオブジェクトを再コンパイルします。 - 無効なオブジェクトの再コンパイルの進行状況の追跡
これらのSQL問合せを使用して、utlrp.sql
スクリプトによる無効なオブジェクトの再コンパイルの進行状況を追跡します。 - Oracle RACクラスタ・メンバーのアップグレードでのリスナー・ファイルの場所の更新
共有Oracleベース・ホームを使用せず、Oracle Real Application Clustersメンバー・ノードであるOracle Databaseインスタンスでアップグレードを実行する場合は、リスナー・パスを更新する必要があります。 - Oracle Databaseのアップグレード後のOPatchコマンドの実行
Oracle Databaseをアップグレードした後で、新しいOracleホームからOPatchコマンドを実行する必要があります。 - Oracle Databaseのアップグレード後にoratabおよびスクリプトが新しいOracleの場所を指すようにするための設定
新しいOracleホームの場所を指すようにスクリプトを設定する必要があります。 - PL/SQLパッケージおよび依存プロシージャの確認
以前のリリースのOracle Databaseにインストールしたパッケージは新しいリリースでは使用できない可能性がありますが、これはアプリケーションに影響する場合があります。 - Oracle管理タイプに依存する表のアップグレード
Oracle Database 12cリリース2 (12.2)以降では、Oracle管理タイプに依存するユーザー表を手動でアップグレードする必要があります。 - 新しい拡張データ型機能の有効化
システムで新しい拡張データ型を利用できるようにするには、特定のアップグレード操作が必要です。 - パラレル実行サーバーの最大値および最小値の調整
環境に応じて、PARALLEL_MIN_SERVERSパラメータのデフォルト設定を減らすことができます。 - Oracle Databaseのアップグレード後のリカバリ・カタログ・アップグレードについて
RMANクライアントで要求されるバージョンより古いリカバリ・カタログ・スキーマを使用している場合、それをアップグレードする必要があります。 - Oracle Databaseのアップグレード後のタイムゾーン・ファイルのバージョンのアップグレード
データベースのアップグレードを完了した後にAutoUpgradeアップグレード前レポートによってタイムゾーン・ファイルのアップグレードを指示され、このタスクを完了するようにAutoUpgradeを設定しない場合は、サポートされている方法のいずれかを使用してタイムゾーン・ファイルをアップグレードします。 - Oracle Databaseのアップグレード後のDBMS_STATSパッケージで作成された統計表のアップグレード
DBMS_STATS.CREATE_STAT_TABLE
プロシージャを使用して統計表を作成した場合、DBMS_STATS.UPGRADE_STAT_TABLE
を実行してそれらの表をアップグレードします。 - Oracle XML DBに対するFTPとHTTPのポートおよびHTTP認証の構成
Oracle Database Configuration Assistant (DBCA)では、Oracle Database 12c以降のリリースのOracle XML DBのポートは構成されません。アップグレードではダイジェスト認証が使用されます。 - Oracle Databaseのアップグレード後のOracle Textが提供するナレッジ・ベースのインストール
Oracle Textナレッジ・ベースに対してユーザーが拡張した項目は、Oracle Databaseアップグレード後に再生成する必要があります。 - 以前のリリースのOracle APEXの削除
無効なオブジェクトを回避するには、Application Express (APEX) 19.1より前のOracle APEXリリースを削除します。 - 読取り専用OracleホームでのDEMOディレクトリの置換
読取り専用Oracleホームをアップグレードした後、以前のリリースのOracle Databaseのdemo
ディレクトリをコピーし、読取り専用Oracleホームのdemo
ディレクトリを新しいリリースのdemo
ディレクトリに置き換えます。 - 外部ネットワーク・サービスへのアクセス制御リスト(ACL)の構成
Oracle Database 12c以降のリリースには、UTL_TCP
、UTL_SMTP
、UTL_MAIL
、UTL_HTTP
またはUTL_INADDR
パッケージに対するファイングレイン・アクセス制御が含まれています。 - Oracle Databaseのアップグレード後のOracle Database Vaultの有効化
ターゲットのデータベース・リリースによっては、Oracle Database Vaultを無効にしないとOracle Databaseのアップグレードを完了できない場合があります。 - SQLNET.ALLOWED_LOGON_VERSIONパラメータの動作の確認
10gより前のリリースのクライアントからのOracle Databaseに対する接続は、ORA-28040: 「一致する認証プロトコルがありません」
というエラーによって失敗します。
親トピック: Oracle Databaseのアップグレード後の作業
手動アップグレード後のLinuxおよびUnixシステム上での環境変数の設定
必要なオペレーティング・システムの環境変数が、新しいOracle Databaseリリースのディレクトリを指していることを確認します。
通常、オペレーティング・システムの環境変数は、プロファイルおよびシェル・スクリプトで設定します。次のOracleユーザー環境変数が新しいOracleホームのディレクトリを指していることを確認します。
-
ORACLE_HOME
-
PATH
以前のリリースのOracleホームを参照する他の環境変数(LD_LIBRARY_PATH
など)を探します。通常、環境変数内のすべての古いOracleホームを新しいOracleホーム・パスに置き換える必要があります。
データベース内の無効なオブジェクトの再コンパイル
データベースをインストール、パッチ適用またはアップグレードした後、再コンパイル・ドライバ・スクリプトを使用して、CDBおよびPDB上の無効なオブジェクトを再コンパイルします。
Oracleには、再コンパイル・スクリプトutlrp.sql
、utlprp.sql
およびutlprpom.sql
が用意されています。これらのスクリプトは、Oracle_home/rdbms/admin
ディレクトリにあります。
ノート:
AutoUpgrade 23.1以降、AutoUpgradeユーティリティを実行すると、AutoUpgradeによってutlprpom.sql
スクリプトが実行され、utlrp.sql
は実行されません。Oracle Database 12cリリース2 (12.2.0.1)以降のリリースへのアップグレードにAutoUpgradeを使用すると、AutoUpgradeはOracle管理スキーマが所有する無効なオブジェクトのみを再コンパイルします。データベースのアップグレードではユーザー・オブジェクトにアクセスする必要がないため、AutoUpgradeは無効なオブジェクトを再コンパイルするときにこのポリシーを維持します。
データベースのインストール後、次の手順ですべての無効なオブジェクトを再コンパイルします。
-
ディレクトリを
Oracle_home/rdbms/admin
に変更します。たとえば$ cd $ORACLE_HOME/rdbms/admin
-
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ノード全体でこの数が追加されます。 -
データベースにパッチを適用またはアップグレードした後、無効なOracle所有オブジェクトおよびユーザー所有オブジェクトを再コンパイルするには複数のアプローチがあります。
utlrp.sql
またはutlprp.sql
を使用して、すべての無効なオブジェクト(Oracleとユーザー・スキーマの両方で無効なオブジェクト)を再コンパイルします。
時間的な要因があり、無効なオブジェクトのタイプが主にアプリケーション所有のものである場合、Oracle所有の無効なオブジェクトを最初に再コンパイルし、アプリケーション所有の無効なオブジェクトの再コンパイルを後回しにできます。Oracleスキーマで無効なオブジェクトを再コンパイルするには、utlprpom.sql
を使用します。残りの無効なオブジェクトを再コンパイルするには、utlrp.sql
またはutlprp.sql
を使用します。
ノート:
utlprp.sql
またはutlprpom.sql
を使用する場合、どちらのスクリプトでも、スクリプトで使用する並列度を定義するか、使用するパラレル再コンパイル・ジョブの数を決定する必要があることに注意してください。
このスクリプトでは次の構文を使用します。base
はログ・ファイルに指定するベース名、N
は再コンパイル・ジョブをパラレルで実行するPDBの数(並列度)、script.sql
は使用するよう選択したOracle再コンパイル・スクリプト、P
はパラレルで実行するPDBの数です。
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -b base -d $ORACLE_HOME/rdbms/admin
-n N -l /tmp script.sql '--pP'
ログ・ファイルのベース名recomp
を使用してCDBで再コンパイルを実行し、並列度の設定はPDBコンテナごとに3件のジョブとし、使用するよう選択するスクリプトはutlprp.sql
で、一度に最大10個のPDBにわたって再コンパイルするとします。この場合、再コンパイル操作の実行に使用する構文は次のようになります。
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -b recomp -d $ORACLE_HOME/rdbms/admin -n 10 -l /tmp utlprp.sql '--p3'
関連項目
無効なオブジェクトの再コンパイルの進行状況の追跡
これらのSQL問合せを使用して、utlrp.sql
スクリプトによる無効なオブジェクトの再コンパイルの進行状況を追跡します。
ノート:
AutoUpgradeユーティリティを使用してアップグレードした場合、AutoUpgradeがアップグレード中に自動的にこのタスクを処理します。このタスクを実行する必要はありません。
アップグレード後にutlrp.sql
スクリプトを実行して無効なオブジェクトを再コンパイルすることをお薦めします。SQL問合せを実行してスクリプトを監視できます。
例6-4 残っている無効なオブジェクトの数
次の問合せを入力すると、残っている無効なオブジェクトの数が返されます。この数は、utlrp.sql
スクリプトの実行につれて時間とともに減少します。
select COUNT(*) "OBJECTS WITH ERRORS" from obj$ where status in (3,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 21c以降、デフォルトのネットワーク管理ディレクトリは、ローカルの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
ファイルを、各クラスタ・メンバー・ノード上の新しいデフォルトのネットワークの場所にコピーします。
-
Oracleインストール所有者としてログインし、以前のリリースのネットワーク管理ディレクトリにディレクトリを変更します。たとえば:
cd $ORACLE_HOME/network
- セキュア・コピー(
scp
)を使用して、リスナー・ファイルを別のクラスタ・メンバー・ノード上のデフォルトのネットワーク・ディレクトリの場所にコピーします。たとえば、racnode2
は、リスナー・ファイルをコピーするクラスタ・メンバー・ノードです。cd $OLD_ORACLE_HOME/network 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を新しいリリースにアップグレードした後に、データベースのアップグレードにAutoUpgradeを使用しない場合は、oratab
ファイルおよびORACLE_HOME
値を設定するすべてのクライアント・スクリプトが、新しいOracle Databaseリリース用に作成された新しいOracleホームを指していることを確認する必要があります。AutoUpgradeまたはDBUAを使用してアップグレードを実行する場合、これらのユーティリティは自動的にoratab
を新しいOracleホームを指します。ただし、アップグレードに使用する方法にかかわらず、クライアント・スクリプトを確認する必要があります。
データベースを手動でアップグレードする場合、新しいOracle DatabaseリリースのOracleインストール所有者としてログインし、oratab
ファイルを手動で更新する必要があります。oratab
ファイルの場所は、使用しているオペレーティング・システムによって異なります。
PL/SQLパッケージおよび依存プロシージャの確認
以前のリリースのOracle Databaseにインストールしたパッケージは新しいリリースでは使用できない可能性がありますが、これはアプリケーションに影響する場合があります。
アップグレード後、AutoUpgradeを使用する場合は、無効なオブジェクトに関するAutoUpgradeレポートを確認します。リプレイ・アップグレードを使用する場合は、独自のスクリプトで使用していたパッケージまたは独自のスクリプトからコールしていたパッケージがすべて新しいリリースで使用できることを確認してください。パッケージに依存するプロシージャのテストは、アップグレード計画に含まれる必要があります。
データベース・アプリケーションのコードは、接続先データベースのオブジェクトを参照できます。たとえば、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システム権限を付与されたユーザーを使用して実行する必要があります。
パラメータSERVEROUTPUTがON
に設定されている場合、utluptabdata.sql
スクリプトによって、アップグレードされたすべての表の名前が表示され、表のアップグレード中に発生したエラーがリストされます。サーバー出力をON
に設定するには、次のコマンドを実行します。
SET SERVEROUTPUT ON
@utluptabdata.sql
新しい拡張データ型機能の有効化
システムで新しい拡張データ型を利用できるようにするには、特定のアップグレード操作が必要です。
Oracle Database 12cでは、SQLのVARCHAR2
、NVARCHAR2
および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のアップグレード後のタイムゾーン・ファイルのバージョンのアップグレード
データベースのアップグレードを完了した後にAutoUpgradeアップグレード前レポートによってタイムゾーン・ファイルのアップグレードを指示され、このタスクを完了するようにAutoUpgradeを設定しない場合は、サポートされている方法のいずれかを使用してタイムゾーン・ファイルをアップグレードします。
デフォルトでは、AutoUpgradeはデータベースのタイム・ゾーンを最新の使用可能なレベルに変更します。タイム・ゾーンをアップグレードしない場合は、AutoUpgrade構成ファイル内のローカル・パラメータtimezone_upg
を明示的にno
に設定する必要があります。たとえば:
upg1.timezone_upg=no
ノート:
AutoUpgrade構成ファイルでタイムゾーン・ファイルのアップグレードを明示的に無効にする場合は、このタスクをアップグレード計画の一環として実行するか、後で実行することをお薦めします。
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ポートを手動で構成する必要があります。
-
DBMS_XDB_CONFIG.setHTTPPort(HTTP_port_number)
を使用して、Oracle XML DBのHTTPポートを設定します。SQL> exec DBMS_XDB_CONFIG.setHTTPPort(port_number);
-
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
をそれぞれ使用することによって問い合せることができます。 -
使用されているすべてのポート番号を確認するには、
DBMS_XDB_CONFIG.usedport
を問い合せます。
Oracle Databaseのアップグレード後のOracle Textが提供するナレッジ・ベースのインストール
Oracle Textナレッジ・ベースに対してユーザーが拡張した項目は、Oracle Databaseアップグレード後に再生成する必要があります。
ユーザー拡張を再生成すると、指定したOracleホームにインストールされているすべてのデータベースに影響を与えます。
Oracle Textが提供するナレッジ・ベースは新しいOracle Databaseの付属製品の一部ですが、アップグレード後すぐに使用することはできません。アップグレード前には使用可能であったナレッジ・ベースに依存するOracle Textの機能は、アップグレード後には機能しなくなります。これらの機能を再度使用可能にするには、Oracle Textナレッジ・ベースを新しいOracle Databaseリリースのインストール・メディアからインストールする必要があります。
参照:
-
Oracle Textナレッジ・ベースの詳細は、Oracle Textアプリケーション開発者ガイドを参照してください
-
付属製品については、Oracle Databaseインストレーション・ガイドを参照してください
以前のリリースのOracle APEXの削除
無効なオブジェクトを回避するには、Application Express (APEX) 19.1より前のOracle APEXリリースを削除します。
パッケージDBMS_OBFUSCATION_TOOLKIT
はOracle Database 11gリリース2 (11.2)で非推奨になりました。Oracle Database 21c以降、DBMS_OBFUSCATION_TOOLKIT
はサポート対象外になり、DBMS_CRYPT
に置き換えられました。Oracle Database 21cより前のリリースでは、Oracle APEXは継続してDBMS_OBFUSCATION_TOOLKIT
に依存していました。APEXリリース19.2を含むOracle Database 21cでは、この依存性が削除されました。
Oracle Databaseのアップグレード中、APEXはOracle Databaseリリースに付属のリリースに自動的にアップグレードされません。アップグレード前に、preupgrade
パラメータを使用してAutoUpgradeを実行すると、出力upgrade.xml
ファイルに、APEX 19.1.0.00.15より前のAPEXリリースをアップグレードする必要があることが示されます。これは、以前のリリースがDBMS_OBFUSCATION_TOOLKIT
に依存しているためです。
INVALID
オブジェクトを回避するには、Oracle Databaseをアップグレードする前または後のいずれかで、APEXを少なくともOracle Database 21cに付属するバージョンにアップグレードしてから、APEXの以前のリリースを削除する必要があります。
- 新しいOracle DatabaseのOracleホームにログインします
- Oracle APEXを、Oracleホーム(APEX 19.2)に同梱されているOracle Application Express 19.2以上、またはそれ以降のバージョンが使用可能な場合は、それを使用してOracle Application Expressをアップグレードします
- 以前のリリースのAPEXユーザーを削除します。
たとえば:
drop user APEX_050000 cascade; drop user APEX_040200 cascade; drop user APEX_030100 cascade;
- 以前のリリースのAPEX SYSが所有するオブジェクトを削除します。
たとえば:
drop package SYS.WWV_DBMS_SQL;
ノート:
Oracle APEX 18c (18.1)以降では、SYS.WWV_DBMS_SQL
オブジェクトにはOracle APEXリリース・スキーマが追加されています。
たとえば:
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
ディレクトリで置き換えます。
-
Oracleソフトウェア所有者ユーザー(
oracle
)としてログインします。 -
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
-
ディレクトリを読取り専用Oracleホームに変更し、コピーを作成します。ここで、
demo.old_release18
は以前のリリースのデモンストレーション・ファイルに指定する名前です。cd $ORACLE_BASE_HOME/rdbms mv demo demo.old_release18
-
新しい
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_TCP
、UTL_SMTP
、UTL_MAIL
、UTL_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 12cリリース2 (12.2.0.1)以降のリリースにアップグレードするには、ルート・コンテナでDV_PATCH_ADMIN
ロールをSYS
に共通に付与してアップグレード後に取り消すか、アップグレード後にOracle Database Vaultを無効にして再度有効にします。 - Oracle Database Vaultが関連する一般的なアップグレード・シナリオ
アップグレード後にOracle Database Vaultを有効にする必要があるかどうかは、ソースのOracle Databaseリリースによって異なります。
Oracle Database Vaultの無効化なしでのOracle Databaseのアップグレード
Oracle Database 12cリリース2 (12.2.0.1)以降のリリースにアップグレードするには、ルート・コンテナでDV_PATCH_ADMIN
ロールをSYS
に共通に付与してアップグレード後に取り消すか、アップグレード後にOracle Database Vaultを無効にして再度有効にします。
Oracle Database Vaultが有効になっており、CDB全体をアップグレードする場合は、次のいずれかの方法を使用します。
- CDBアップグレード方法1:
DV_OWNER
ロールを持つ共通ユーザーとしてルート・コンテナにログインしてから、GRANT DV_PATCH_ADMIN TO SYS CONTAINER=ALL
文を発行することで、DV_PATCH_ADMIN
をユーザーSYS
に一時的に付与します。Oracle Database Vaultの制御は、アップグレード前と同じ状態になります。アップグレードが完了した後は、DV_OWNER
ユーザーとしてルート・コンテナにログインし、REVOKE DV_PATCH_ADMIN FROM SYS CONTAINER=ALL
文を発行してSYS
からDV_PATCH_ADMIN
ロールを取り消します。 - CDBアップグレード方法2:
DV_OWNER
ロールを持つユーザーとして各コンテナにログインしてから、DBMS_MACADM.DISABLE_DV
プロシージャを実行します。最初にPDBでOracle Database Vaultを無効にしてから、最後にルート・コンテナでOracle Database Vaultを無効にする必要があります。PDBを1つのみアップグレードしている場合は、そのPDBでのみOracle Database Vaultを無効にできます。アップグレードが完了した後は、DV_OWNER
ユーザーとして各コンテナにログインしてからDVSYS.DBMS_MACADM.ENABLE_DV
プロシージャを実行することで、Oracle Database Vaultを有効にできます。Oracle Database Vaultを有効にする順序は、最初にルート・コンテナで、その後にPDBで有効にする必要があります。PDBは任意の順序で有効にできますが、最初にルート・コンテナを有効にする必要があります。
アップグレード前に手動でOracle Database Vaultを無効にした場合は、アップグレード後に手動でOracle Database Vaultを有効にする必要があります。
アップグレード前にOracle Database Vaultを有効にしていなかった場合は、アップグレード後に手動で有効にできます。
ノート:
この手順は、非CDBアップグレードにも適用されます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の検証機能のみであるため、アップグレード後もセキュア・ロールが使用可能な状態になるように、管理者は各セキュア・ロールのパスワードをリセットする必要があります。
参照:
-
パスワードのセキュリティの脅威から守る方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください
-
ユーザーのパスワード・バージョンの設定の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください