更新の失敗のトラブルシューティング
更新操作は、様々な理由で失敗することがあります。通常、データベース・ノードが停止している、ファイル・システムの領域が不足している、またはデータベース・ホストがオブジェクト・ストアにアクセスできないといった理由から、操作は失敗します。
この記事には、失敗の原因の特定と問題の修正に役立つ情報が含まれています。情報は、エラー状態に基づいて複数の項に編成されています。
すでに原因がわかっている場合は、推奨される解決策が記載されたトピックにスキップできます。それ以外の場合は、失敗の原因の特定のトピックを使用して開始します。
この記事では、次のトピックについて説明します:
ヒント :
シリアル・コンソール接続を作成して、シングルユーザー・モードでシステムのトラブルシューティングを行うこともできます。OCIコンソールでのシリアル・コンソール接続の作成の詳細は、DB Systemへのシリアル・コンソール接続の管理を参照してください。失敗の原因の特定
OCIコンソールでは、DBシステムまたは個々のデータベースの更新履歴を表示して、失敗した更新操作を識別できます。正常に適用されなかった更新には失敗ステータスが表示され、失敗を引き起こしたエラーの簡単な説明が示されます。エラー・メッセージに解決策を示す十分な情報が含まれていない場合は、データベースCLIおよびログ・ファイルを使用して、さらに多くのデータを収集できます。その後、解決策についてこの記事の該当する項を参照してください。
次のトピックについて説明します:
更新操作の失敗の根本原因の特定
-
ホストにrootユーザーとしてログインし、
/opt/oracle/dcs/bin/
に移動します。 -
データベースで実行された操作の順序を確認します。
dbcli list-jobs
成功以外のステータスでリストされた最後のジョブIDを書き留めます。
-
前のステップで書き留めたジョブIDを使用して、次のコマンドを実行し、そのジョブの詳細を確認します:
dbcli describe-job -i <job_ID> -j
通常、このコマンドを実行するだけで、失敗の根本原因を明らかにできます。
-
さらに情報が必要な場合は、
/opt/oracle/dcs/log/dcs-agent.log
ファイルを確認してください。このファイル内のジョブIDは、ステップ2でジョブ・レポートで返されたタイムスタンプを使用して検索できます。
- 更新の失敗が2ノードのRACデータベースの場合、両方のノード上でステップ3および4を実行します。
データベース・サービス・エージェントの問題
データベースは、Oracle Cloudプラットフォームを通じて管理できるように、エージェント・フレームワークを使用します。
次のトピックについて説明します:
停止したエージェントによって発生した更新失敗の解決
ステータスが停止/待機中の場合、状況によっては更新の失敗を解決するためにdcsagent
プログラムを再起動する必要があります。
データベース・サービス・エージェントの再起動
-
コマンド・プロンプトで、エージェントのステータスを確認します:
initctl status initdcsagent
-
エージェントの状態が停止/待機中の場合、エージェントの再起動を試みます:
initctl start initdcsagent
-
エージェントのステータスを再度確認して、エージェントが開始/実行中ステータスであることを確認します:
initctl status initdcsagent
更新が必要なエージェントによって発生した更新失敗の解決
エージェントを更新する必要がある場合も、更新操作は失敗することがあります。この失敗について、次のエラー・メッセージが表示されます:
Current DcsAgent version is less than or equal to minimum required version.
この問題を解決するには、次の項のステップを実行します。
Oracleサポートに連絡してOCI Databaseサービス・エージェントを更新
-
次のコマンドを使用して、エージェント(dcsagent)およびDCS管理プログラム(dcsadmin)が実行されていることを確認します:
initctl status initdcsagent
initctl status initdcsadmin
-
これらのプログラムが実行されていない場合は、次のコマンドを使用して再起動します:
initctl start initdcsagent
initctl start initdcsadmin
- その他の支援の手順に従って、DCSエージェントのログ・ファイルを収集します。
- エージェントの更新については、Oracleサポートに連絡してください。
オブジェクト・ストア接続の問題
DBシステムおよびデータベースの更新はOCIオブジェクト・ストレージに格納されます。そのため、正常な更新操作には、DBシステム・ホストと、更新のダウンロード元のオブジェクト・ストレージの場所との間の接続が必要です。
次のトピックについて説明します:
データベース・ホストがOCIオブジェクト・ストレージに接続できることの確認
-
次のコマンドを使用して、ホストがOCIオブジェクト・ストレージにアクセスできることを確認します:
dbcli describe-latestpatch
成功を示す出力例:
componentType availableVersion -------------- -------------- gi 12.2.0.1.180417 gi 12.1.0.2.180417 db 11.2.0.4.180417 db 12.2.0.1.180417 db 12.1.0.2.180417 oak 12.1.2.11.3 oak 12.2.1.1.0
失敗を示す出力例:
DCS-10032:Resource patch metadata is not found.Failed to download patchmetadata from objectstore
-
オブジェクト・ストアに接続できない場合、オブジェクト・ストアの接続性の構成方法について、コンソールを使用したデータベースのバックアップを参照してください。
ホストの問題
データベース・ホストでの次の条件の1つ以上が原因で、更新操作に失敗することがあります:
次のトピックについて説明します:
更新操作で実行されていないデータベース・ノード
DBシステムとデータベース・ホームのどちらを更新する場合も、更新操作の進行中に、データベースのすべてのノードがアクティブで実行中である必要があります。OCIコンソールを使用して、各ノードのステータスが「使用可能」であることを確認し、必要に応じてノードを起動します。
ファイル・システムの空き容量がない
更新操作では、ホスト・ファイル・システムの/u01
ディレクトリに15GB以上の空き領域が必要です。使用可能な領域を確認するには、ホストでdf -h
コマンドを使用します。ファイル・システムの領域が不十分な場合、古いログまたはトレース・ファイルを削除して領域を解放できます。
Oracle Clusterwareの問題
次のトピックについて説明します:
Oracle Clusterwareが実行されていない
Oracle Clusterwareを使用すると、複数のサーバーが相互に通信することにより、1つの集合単位として機能することができます。更新操作を完了するには、DBシステムでクラスタ・ソフトウェア・プログラムが稼働している必要があります。更新の失敗を解決するために、Oracle Clusterwareを再起動する必要がある場合があります。
Oracle Clusterwareの再起動
-
コマンド・プロンプトからOracle Clusterwareのステータスを確認します:
crsctl check crs
出力:
CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online
より詳細なステータス情報を得るために、
crsctl stat res -t
を実行できます。 -
Oracle Clusterwareがオンラインでない場合は、プログラムの再起動を試行します:
crsctl start crs
-
Oracle Clusterwareのステータスをチェックして、オンラインであることを確認します:
crsctl check crs
Oracle Grid Infrastructure (GI)が更新されていない
この問題は、データベースのDBシステムを更新する前にデータベースを更新しようとすると発生します。エラーに、Oracle Grid Infrastructureを最初に更新する必要があることが示されます。この問題を解決するには、DBシステムを最新バージョンに更新します。DBシステムを更新した後で、データベースの更新操作を再試行できます。
DBシステムの現在および最新の使用可能なGIバージョンを取得するには、次のコマンドを使用します:
dbcli describe-component
データベースの問題
データベースの状態が適切ではない場合、更新に失敗することがあります。
次のトピックについて説明します:
更新操作で実行されていないデータベース
すべての更新タスクが完了するには、データベースがアクティブで実行中である必要があります。そうでない場合は、datapatchタスクを手動で実行する必要があります。
データベースがアクティブで実行中であることの確認
次のコマンドを使用してデータベースの状態をチェックし、データベースが不適切な状態になる可能性のある問題が解決されていることを確認します:
srvctl status database -d <db_unique_name> -verbose
データベースのインスタンス・ステータスを含むメッセージが返されます。更新操作が成功するためには、インスタンス・ステータスがオープンである必要があります。
データベースが実行されていない場合は、次のコマンドを使用して起動します:
srvctl start database -d <db_unique_name> -o open
データベースはマウントされているが、ステータスがオープンでない場合は、次のコマンドを使用してSQL*Plusコマンド・プロンプトにアクセスし、ステータスをオープンに設定します:
sqlplus / as sysdba
alter database open;
datapatch
タスクの実行
datapatch
コマンドを実行する前に、すべてのプラガブル・データベース(PDB)がオープンしていることを確認します。PDBをオープンするには、SQL*Plusを使用して、PDBに対してALTER PLUGGABLE DATABASE <pdb_name> OPEN READ WRITE;
を実行します。
$ORACLE_HOME/OPatch/datapatch
datapatch
コマンドは各データベース・ホームで実行する必要があります。
その他の支援
この記事の情報を使用して問題を解決できなかった場合は、次の手順に従って、関連するデータベースおよび診断情報を収集します。この情報を収集したら、Oracleサポートに連絡してください。
次のトピックについて説明します:
失敗したジョブに関する診断情報の収集
-
ホストにrootユーザーとしてログインし、
/opt/oracle/dcs/bin/
に移動します。 -
次の2つのコマンドを実行して、失敗したジョブに関する情報を生成します:
dbcli list-jobs | grep -i <dbname>
dbcli describe-job -i <job_ID> -j
2番目のコマンドの<job_ID>は、最初のコマンドでレポートされた最新の失敗ジョブのIDである必要があります。
-
診断コレクタ・スクリプトを実行して、Oracleサポート・サービスに向けた診断情報を含むzipファイルを作成します。
diagcollector.py
このコマンドにより、
/tmp
ディレクトリにdiagLogs -<timestamp>.zip
という名前のファイルが作成されます。
DCSエージェント・ログ・ファイルの収集
DCSエージェント・ログ・ファイルを収集するには、次の手順を実行します:
- opcユーザーとしてログインします。
-
次のコマンドを実行します:
sudo /opt/oracle/dcs/bin/diagcollector.py
-
指定されたディレクトリのzipファイルでエージェント・ログが使用可能であることを示すメッセージが返されます。たとえば次のようにします。
Log files collected to :/tmp/dcsdiag/diagLogs-1234567890.zip Logs are being collected to: /tmp/dcsdiag/diagLogs-1234567890.zip
Oracle Grid Infrastructureおよびデータベース・ログ・ファイルの収集
Oracle Grid InfrastructureまたはOracle Databaseの更新に失敗した場合、これらの失敗のログ・ファイルは次の場所にあります:
Oracle Grid Infrastructure
$GI_HOME/cfgtoollogs/
Oracle Database
$ORACLE_HOME/cfgtoollogs/