Oracle Databaseのアップグレードを開始する前に完了するデータベースの準備作業
Oracle Databaseのアップグレードを開始する前に、これらのデータベースの準備作業を完了していることを確認してください。
- Oracle Databaseをアップグレードする場合のパッチ・セットの更新および要件
アップグレードを開始する前に、新しいリリースのOracle Databaseを最新のOracleバンドル・パッチ、パッチ・セット更新(BPまたはPSU)、リリース更新(Update),またはリリース更新リビジョン(Revision)に更新します。 - 透過的暗号化Oracleウォレットのコピー
透過的暗号化(TDE)でOracleウォレットを使用している場合は、sqlnet.ora
およびウォレット・ファイルを新しいOracleホームにコピーします。 - Oracle Databaseのアップグレード時のOracle Net Servicesに関する推奨事項
アップグレード前にOracle Net Servicesに関するこれらの手順およびパラメータ変更を参照してください。 - パスワードの大/小文字の区別とアップグレードについて
デフォルトで、Oracle Database 12cリリース2 (12.2)以降のリリースは排他モードにアップグレードされます。排他モードは大/小文字を区別しないパスワードを基にした認証をサポートしません。 - 大/小文字を区別しないパスワード・バージョンを使用しているアカウントがあるかどうかの確認
次の手順を使用して、アップグレードするOracle Databaseに大/小文字を区別しないパスワード・パージョンを使用しているアカウントや構成パラメータがないか、確認します。 - 読取り専用表領域を使用したアップグレードの実行
アップグレード中にスキーマベースの表領域をオフラインに設定するには、-T
オプションを指定してパラレル・アップグレード・ユーティリティを使用します。
親トピック: Oracle Databaseのアップグレードの準備
Oracle Databaseをアップグレードする場合のパッチ・セットの更新および要件
アップグレードを開始する前に、新しいリリースのOracle Databaseを最新のOracleバンドル・パッチ、パッチ・セット更新(BPまたはPSU)、リリース更新(Update),またはリリース更新リビジョン(Revision)に更新します。
新しいOracle Databaseリリースのソフトウェアには、リリースの時点で最新のOracle Databaseのすべてのパッチおよび更新を含む完全なリリースが含まれます。
アップグレードまたはダウングレード・プロセスを開始する前に、以前のOracle Databaseリリースと新しいOracle Databaseリリースの両方を更新することをお薦めします。Oracle Database 12c以前のリリースの場合は、最新のOracleバンドル・パッチまたはパッチ・セット更新(BPまたはPSU)に更新します。Oracle Database 12cリリース2 (12.2)、Oracle Database 18cまたはそれ以降のリリースの場合、最新の四半期のリリース更新(Update)またはリリース更新リビジョン(Revision)に更新します。
-
My Oracle Supportノート854428.1には、パッチ・セットと更新に関する情報が記載されています。
-
My Oracle Supportノート730365.1には、使用可能なOracle Databaseのほとんどのリリースのアップグレードの参照リスト(ダウンロード情報、パッチ番号、他のノートへのリンクなど)が記載されています。
-
My Oracle Supportノート2414935.1にはアップグレード用、ダウングレード用、および以前のリリースとの共存用の単発のパッチが含まれています。
-
My Oracle Supportノート1227443.1には、Oracle DatabaseのPSU/BP/Update/Revisionに関する既知の問題のリストが含まれています。このノートでは、Oracle Database、Oracle Grid InfrastructureおよびOracle JavaVMコンポーネント(OJVM)のすべての既知の問題ノートに関する情報を提供します。
-
My Oracle Supportノート2118136.2には、環境に必要な更新、リビジョン、パッチ・セット更新(PSU)、SPU (CPU)、バンドル・パッチ、パッチ・セットおよびベース・リリースを選択する際に役立つダウンロード・アシスタントが含まれています。ここで開始することをお薦めします。
透過的暗号化Oracleウォレットのコピー
透過的データ暗号化(TDE)でOracleウォレットを使用する場合は、sqlnet.ora
およびウォレット・ファイルを新しいOracleホームにコピーします。
アップグレードを開始する前に、sqlnet.ora
およびウォレット・ファイルをコピーする必要があります。
Oracle Databaseのアップグレード時のOracle Net Servicesに関する推奨事項
アップグレード前にOracle Net Servicesに関するこれらの手順およびパラメータ変更を参照してください。
Oracle Database 12cでは、新しい基礎となるネット・サービス・パラメータによってデータ圧縮が可能で、これにより、SQL TCP接続を介して転送されるセッション・データ・ユニットのサイズが縮小されます。
次のsqlnet.ora
ファイルの新しいパラメータで、圧縮、および優先圧縮方式を指定します。
-
SQLNET.COMPRESSION
-
SQLNET.COMPRESSION_LEVELS
-
SQLNET.COMPRESSION_THRESHOLD
Oracle Database 12cで導入されたこれらのパラメータは、以前のリリースではサポートされていません。これらはOracle Database 12c以降のリリースでのみ使用できます。これらのsqlnet.ora
圧縮パラメータの詳細は、Oracle Net Servicesリファレンスを参照してください。
アップグレードするOracle Databaseでリスナーが構成されていない場合、DBUAを実行する前に、Oracle Net Configuration Assistant (NETCA)を実行して、listener.ora
ファイルを含むOracle Databaseの新しいリリースのリスニング・プロトコルのアドレスおよびサービス情報を構成する必要があります。リリース11.2より前のリリースのOracle Databaseには、新しいバージョンのリスナーを作成する必要があります。現在のリスナーには、以前のOracle Databaseとの下位互換性があります。
DBUAを使用してOracle RACデータベースをアップグレードする場合、リスナーが古いOracleホームから新しいOracle Grid Infrastructureホームに自動的に移行されます。Oracle Grid Infrastructureホームでlsnrctl
コマンドを使用してリスナーを管理する必要があります。以前のリリースのOracleホームの場所からlsnrctl
コマンドを使用しないでください。
パスワードの大/小文字の区別とアップグレードについて
デフォルトで、Oracle Database 12cリリース2 (12.2)以降のリリースは排他モードにアップグレードされます。排他モードは大/小文字を区別しないパスワードを基にした認証をサポートしません。
サーバーが排他モードで実行されている場合、10G
パスワード・バージョンだけを持つアカウントにはアクセスできなくなります。
以前のリリースのOracle Databaseでは、SEC_CASE_SENSITIVE_LOGON=FALSE
を設定して、大/小文字を区別しないパスワード・ベースの認証を許可するように認証プロトコルを構成できます。Oracle Database 12cリリース2 (12.2)以降、デフォルトのパスワード・ベースの認証プロトコル構成では、大/小文字を区別しない10G
パスワード・バージョンの使用は除外されます。デフォルトでは、SQLNET.ORA
パラメータSQLNET.ALLOWED_LOGON_VERSION_SERVER
は、排他モードである12
に設定されています。データベースが排他モードで設定されている場合、パスワード・ベースの認証プロトコルでは大/小文字を区別するいずれかのパスワード・バージョン(11G
または12C
)が、認証されるアカウントに存在する必要があります。このモードは、以前のリリースで使用されていた10G
パスワード・バージョンの使用を排除します。Oracle Database 12cリリース2以降のリリースにアップグレードした後は、大/小文字を区別しない10G
パスワード・バージョンだけを持つアカウントにはアクセスできなくなります。このように変更されたのは、サーバーがデフォルトで排他モードで実行されるためです。Oracle Databaseが排他モードで構成されていると、古い10G
パスワード・バージョンを使用してクライアントを認証できません。クライアントを認証するパスワード・バージョンなしで、サーバーはそのまま構成されます。
セキュリティを高めるためには、大/小文字を区別するパスワード・ベースの認証を有効にしておくことをお薦めします。この設定がデフォルトです。ただし、新しいOracle Databaseリリースへのアップグレード中に、大/小文字を区別する認証を一時的に無効にすることはできます。アップグレード後に、パスワード・バージョンを管理するための実装計画の一環として、大/小文字を区別するパスワード・ベースの認証を有効にするかどうかを決定できます。
アップグレード前に、デフォルトのパスワード・ベースの認証プロトコル構成に対するこの変更により影響を受けるかどうかを判定することをお薦めします。次のことを確認してください。
-
10G
の大/小文字を区別しないパスワード認証バージョンだけを持つアカウントがあるかどうかを確認します。 -
重要なパッチ更新
CPUOct2012
またはそれ以降のパッチ更新を適用していないOracle Database 11gリリース2 (11.2.0.3)データベースがあるかどうか、かつ、大/小文字を区別しない10G
パスワード・バージョンを持たないアカウントがあるかどうかを確認します。 -
FALSEに設定した非推奨のパラメータSEC_CASE_SENSITIVE_LOGONがないことを確認します。このパラメータをFALSEに設定すると、大/小文字を区別するパスワード・バージョン(
11G
および12C
パスワード・バージョン)を認証に使用できません。
大/小文字を区別しないバージョンを使用するアカウントのオプション
大/小文字を区別しない10G
パスワード・バージョンのみを持つユーザー・アカウントがある場合は、次の代替方式のいずれかを選択する必要があります。
-
アップグレード前に、
10G
パスワード・バージョンだけを持つそれぞれのアカウントのパスワード・バージョンを更新します。パスワード・バージョンを更新するには、10G
パスワードを使用するユーザー・パスワードを期限切れにして、これらのユーザーにアカウントにログインするよう要求します。ログインが試行されると、サーバーはパスワード・バージョンのリストを自動的に更新しますが、これには大/小文字を区別するパスワード・バージョンが含まれます。 -
SQLNET.ORAパラメータ
SQLNET.ALLOWED_LOGON_VERSION_SERVER
の設定を、排他モード以外の設定に変更します。例:SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
大/小文字を区別しないパスワード・バージョンを使用しているアカウントがあるかどうかの確認
次の手順を使用して、アップグレードするOracle Databaseに大/小文字を区別しないパスワード・パージョンを使用しているアカウントや構成パラメータがないか、確認します。
デフォルトで、Oracle Database 12cリリース2 (12.2)以降のリリースでは、10G
パスワード・バージョンは生成されることも許可されることもありません。
SQLNET.ALLOWED_LOGON_VERSION_SERVER
を、大/小文字を区別しないバージョンを使用できる許容度の高い認証プロトコルに設定しておらず、かつ、大/小文字を区別しないパスワード・バージョンで認証されるユーザー・アカウントがデータベースでロックされないようにする場合は、該当するアカウントを確認して、それらが大/小文字を区別するパスワード・バージョンを使用していることを確認します。
例2-1 大/小文字を区別しない(10G)バージョンを使用するユーザー・アカウントの検索
管理ユーザーとしてSQL*Plusにログインし、次のSQL問合せを入力します。
SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;
次の結果は、アカウントのパスワード・バージョンを示しています。
USERNAME PASSWORD_VERSIONS
------------------------------ -----------------
JONES 10G 11G 12C
ADAMS 10G 11G
CLARK 10G 11G
PRESTON 11G
BLAKE 10G
この例では、各ユーザー・アカウント・パスワードの使用中のバックグラウンド検証バージョンは異なります。
-
JONES
はOracle Database10G
で作成されましたが、JONES
のパスワードは、SQLNET.ALLOWED_LOGON_VERSION_SERVER
パラメータの設定が8
に設定されたときにOracle Database12C
にリセットされました。その結果、このパスワードのリセットによって3つのバージョンがすべて作成されました。11G
および12C
は大/小文字を区別するパスワードを使用します。 -
ADAMS
およびCLARK
は最初に10G
バージョンで作成され、次に、以前のリリースからインポートされた後に11G
バージョンで作成されました。これらのアカウント・パスワードはその後、非推奨のパラメータSEC_CASE_SENSITIVE_LOGONをTRUEに設定した場合、11G
でリセットされました。 -
BLAKE
のパスワードは10G
バージョンで作成され、パスワードはリセットされませんでした。その結果、ユーザーBLAKEは引き続き10G
パスワード・バージョンを使用し、これは大/小文字を区別しないパスワードを使用します。
ユーザーBLAKE
はアップグレード前には10G
パスワード・バージョンだけを持っています。
SQL> SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;
USERNAME PASSWORD_VERSIONS
------------------------------ -----------------
BLAKE 10G
追加の操作を実行せずに新しいOracle Databaseリリースにアップグレードした場合、そのアカウントにはアクセスできなくなります。アップグレード前に、(SQLNET.ORA
パラメータSQLNET.ALLOWED_LOGON_VERSION_SERVER
をより許容度の高い認証モードに設定すして、)システムが排他モードで構成されていないことを確認してください。
例2-2 大/小文字を区別しないパスワードを持つアカウントの修正
次の手順を実行します。
-
次のSQL問合せを使用して、
10G
パスワード・バージョンだけを持つアカウントを検索します。select USERNAME from DBA_USERS where ( PASSWORD_VERSIONS = '10G ' or PASSWORD_VERSIONS = '10G HTTP ') and USERNAME <> 'ANONYMOUS';
-
SQLNET.ORA
パラメータSQLNET.ALLOWED_LOGON_VERSION_SERVER
の設定を、該当するアカウントに適切なレベルに編集することにより、システムが排他モードで実行されるようにシステムを構成します。次に例を示します。SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
この変更を行った後で、アップグレードに進みます。
-
アップグレードが終了したら、次のコマンド構文を使用してステップ1で検出したアカウントを期限切れにします。
username
は、ステップ1の問合せで返されたユーザーの名前です。ALTER USER username PASSWORD EXPIRE;
-
パスワードを期限切れにしたユーザーに、ログインするよう依頼します。
-
これらのユーザーがログインするときに、パスワードをリセットするよう、プロンプトが表示されます。システムは
10G
パスワード・バージョンに加えて、欠落している11G
および12C
パスワード・バージョンを内部的に生成します。システムは許容モードで実行中のため、10G
パスワード・バージョンは引き続き存在します。 -
ユーザーが接続しているクライアント・ソフトウェアに
O5L_NP
機能フラグがあることを確認します。ノート:
Oracle Databaseリリース11.2.0.4以降のすべてのクライアント、およびOracle Databaseリリース12.1以降のすべてのクライアントには
O5L_NP
機能があります。他のクライアントではCPUOct2012
パッチを適用してO5L_NP
機能を取得する必要があります。O5L_NP
機能フラグは、Oracle Database Net ServicesリファレンスのパラメータSQLNET.ALLOWED_LOGON_VERSION_SERVER
の項に記載されています。 -
すべてのクライアントに
O5L_NP
機能が導入されたら、次のプロシージャを使用してセキュリティを元の排他モードに上げます。-
インスタンス初期化ファイルから
SEC_CASE_SENSITIVE_LOGON
設定を削除するか、SEC_CASE_SENSITIVE_LOGON
インスタンス初期化パラメータをTRUE
に設定します。次に例を示します。SEC_CASE_SENSITIVE_LOGON = TRUE
-
SQLNET.ALLOWED_LOGON_VERSION_SERVER
パラメータをサーバーのSQLNET.ORA
ファイルから削除するか、サーバーのSQLNET.ORA
ファイルのSQLNET.ALLOWED_LOGON_VERSION_SERVER
の値を12
に戻して、排他モードに設定し直します。次に例を示します。SQLNET.ALLOWED_LOGON_VERSION_SERVER = 12
-
-
次のSQL問合せを使用して、まだ
10G
パスワード・バージョンを持っているアカウントを検索します。select USERNAME from DBA_USERS where PASSWORD_VERSIONS like '%10G%' and USERNAME <> 'ANONYMOUS';
-
ステップ8の問合せから戻されたアカウントのリストを使用して、まだ
10G
パスワード・バージョンを持っているすべてのアカウントを期限切れにします。次の構文を使用して、アカウントを期限切れにします。username
は問合せで返されたリストにある名前です。ALTER USER username PASSWORD EXPIRE;
-
期限切れにしたアカウントのユーザーに、アカウントにログインするよう依頼します。
ユーザーはログインするときに、パスワードを再設定するようプロンプトが表示されます。システムは、アカウントの
11G
および12C
パスワード・バージョンだけを内部的に生成します。システムは排他モードで実行されているため、10G
パスワード・バージョンはもう生成されません。 -
ステップ1の問合せを実行して、システムがセキュア・モードで実行されていることを確認します。どのユーザーも検出されないことを確認します。この問合せでどのユーザーも検出されない場合、この結果は、
10G
パスワード・バージョンがシステムにもう残っていないことを意味します。
例2-3 SEC_CASE_SENSITIVE_LOGON SetがFALSEになっているものがないことの確認
SQLNET.ALLOWED_LOGON_VERSION_SERVER
パラメータが12
または12a
に設定されている場合、Oracle DatabaseはSEC_CASE_SENSITIVE_LOGON
のFALSE
設定の使用を妨げません。この設定により、アップグレードされたデータベースのすべてのアカウントがアクセス不能になる可能性があります。
SQL> SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon boolean FALSE
SQL> ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE;
System altered.
ノート:
パラメータSQLNET.ALLOWED_LOGON_VERSION_SERVER
の値が12
よりも許容度の高いバージョン(11
など)に変更されないかぎり、SEC_CASE_SENSITIVE_LOGON
パラメータをFALSEに設定しないでください。
読取り専用の表領域を使用したアップグレードの実行
アップグレード中にスキーマベースの表領域をオフラインに設定するには、-T
オプションを指定してパラレル・アップグレード・ユーティリティを使用します。
Oracle Databaseでは以前のリリースで作成されたファイル・ヘッダーを読み取ることができるため、アップグレード時にそれらに対して処理を行う必要はありません。READ ONLY
表領域のファイル・ヘッダーは、それらがREAD WRITE
に変更されたときに更新されます。
アップグレードで致命的なエラーが発生し、その結果アップグレードで表領域をオンラインに戻すことができなくなった場合、アップグレード・ログ・ファイルを参照してください。ログ・ファイルには、表領域を使用可能にするために必要な実際のSQL文が含まれています。表領域をオンラインに戻すには、データベースにログ・ファイルのSQL文を実行するか、PDBごとにログ・ファイルを実行する必要があります。
アップグレード・ログ・ファイルの表領域コマンドの表示
致命的なアップグレードの失敗が発生した場合は、ログ・ディレクトリ(Oracle_base/cfgtoologs/dbua
)に移動し、ログ・ファイルのコマンドを手動で実行して表領域を表示させることができます。表領域コマンドは次のログ・ファイルで表示できます。
-
非CDBのアップグレード:
catupgrd0.log
-
PDBデータベース:
catupgrdpdbname0.log
(pdbname
はアップグレードするPDBの名前です)。
各ログ・ファイルの先頭で、次のようなSQL文が見つかります。これは、表をREAD ONLY
に設定する文です。
SQL> ALTER TABLESPACE ARGROTBLSPA6 READ ONLY;
Tablespace altered.
SQL> ALTER TABLESPACE ARGROTBLSPB6 READ ONLY;
Tablespace altered.
各ログ・ファイルの末尾近くには、表をREAD WRITE
に再設定するSQL文が見つかります。
SQL> ALTER TABLESPACE ARGROTBLSPA6 READ WRITE;
Tablespace altered.
SQL> ALTER TABLESPACE ARGROTBLSPB6 READ WRITE;
Tablespace altered.
参照:
データベース間での表領域の転送の詳細は、Oracle Database管理者ガイドを参照してください。