更新失敗のトラブルシューティング
更新操作は様々な理由で失敗する可能性があります。 通常、データベース・ノードが停止しているか、ファイル・システムに十分な領域がないか、データベース・ホストがオブジェクト・ストアにアクセスできないため、操作は失敗します。
この記事には、失敗の原因の特定と問題の修正に役立つ情報が含まれています。 情報は、エラー条件に基づいて複数の項で編成されます。
すでに原因がわかっている場合は、推奨される解決策が記載されたトピックにスキップできます。 それ以外の場合は、「失敗の原因の特定」トピックを使用して開始します。
この記事では、次のトピックについて説明します:
ヒント:
シリアル・コンソール接続を作成して、シングル・ユーザー・モードでシステムのトラブルシューティングを行うこともできます。 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プラットフォームを介してエージェント・フレームワークを使用して管理できます。
内容は、次のとおりです。
停止したエージェントによって発生した更新失敗の解決
更新失敗を解決するためにステータスがstop/waitingの場合、dcsagentプログラムの再起動が必要になることがあります。
データベース・サービス・エージェントの再起動
-
コマンド・プロンプトから、エージェントのステータスを確認します:
initctl status initdcsagent -
エージェントがstop/waiting状態の場合は、エージェントの再起動を試行します:
initctl start initdcsagent -
エージェントのステータスを再度確認して、ステータスがstart/runningであることを確認します:
initctl status initdcsagent
更新が必要なエージェントによって発生した更新失敗の解決
エージェントを更新する必要がある場合も、更新操作が失敗することがあります。 このエラーに対して、次のエラー・メッセージが表示されます:
Current DcsAgent version is less than or equal to minimum required version.この問題を解決するには、次のセクションのステップを実行します。
Oracle Supportに連絡して、OCI Database Service Agentを更新
-
次のコマンドを使用して、エージェント(dcsagent)およびDCS管理プログラム(dcsadmin)が実行されていることを確認します:
initctl status initdcsagentinitctl status initdcsadmin -
これらのプログラムが実行されていない場合は、次のコマンドを使用して再起動します:
initctl start initdcsagentinitctl start initdcsadmin - 「追加ヘルプの表示」の手順に従って、DCSエージェント・ログ・ファイルを収集します。
- エージェントの更新については、Oracle Supportに連絡してください。
オブジェクト・ストアの接続の問題
DBシステムおよびデータベースの更新はOCI Object Storageに格納されます。 そのため、正常な更新操作には、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コンソールを使用して、各ノードのステータスがAVAILABLEであることを確認し、必要に応じてノードを起動します。
ファイル・システムの空き容量がない
更新操作では、ホスト・ファイル・システムの/u01ディレクトリに15 GB以上の空き領域が必要です。 ホストでdf -hコマンドを使用して、使用可能な領域を確認します。 ファイル・システムの領域が不十分な場合、古いログまたはトレース・ファイルを削除して領域を解放できます。
Oracle Clusterware問題
内容は、次のとおりです。
Oracle Clusterwareが実行されていない
Oracle Clusterwareを使用すると、サーバーは相互に通信できるため、集合ユニットとして機能します。 更新操作を完了するには、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 sysdbaalter database open;datapatchタスクの実行
datapatchコマンドを実行する前に、すべてのプラガブル・データベース(PDB)がオープンしていることを確認します。 PDBをオープンするには、SQL*Plusを使用して、PDBに対してALTER PLUGGABLE DATABASE <pdb_name> OPEN READ WRITE;を実行します。
$ORACLE_HOME/OPatch/datapatchdatapatchコマンドは、各データベース・ホームで実行する必要があります。
追加ヘルプの表示
この記事の情報を使用して問題を解決できなかった場合は、次の手順に従って、関連するデータベースおよび診断情報を収集します。 この情報を収集したら、Oracle Supportに連絡してください。
失敗したジョブに関する診断情報の収集
-
rootユーザーとしてホストにログオンし、
/opt/oracle/dcs/bin/ディレクトリに移動します。 -
次の2つのコマンドを実行して、失敗したジョブに関する情報を生成します:
dbcli list-jobs | grep -i <dbname>dbcli describe-job -i <job_ID> -j2番目のコマンドの<job_ID>は、最初のコマンドでレポートされた最新の失敗したジョブのIDである必要があります。
-
診断コレクタ・スクリプトを実行して、Oracle Support Servicesの診断情報を含む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/