Oracle では、「alter system set "_optimizer_connect_by_cost_based" = falsescope=both;」ステートメントを使用して、ソケットからさらにデータを読み取ることができないという例外を解決できます。このステートメントは、「」の値を変更します。 _optimizer_connect_by_cost_based" 両方に設定すると、変更は現在有効になり、次回データベースを再起動したときにも有効になります。
このチュートリアルの動作環境: Windows 10 システム、Oracle バージョン 12c、Dell G3 コンピューター。
問題現象:
次のエラーがログに表示されます:
この問題が発生した場合は、Oracle ログを確認して問題の原因を分析できます。
Oracle データベースのログを見つけるときに最も一般的に使用される問題はアラート ログです。Oracle データベースのログ ファイルalert_$ORACLE_SID.log には、REDO ログの変換、データベースの起動と停止、データベース構造の変更、およびロールバック セグメント、変更、デッドロック、内部エラー、その他の情報。
パスは次のとおりです: ORACLE_BASE/admin/ORACLE_SID/bdump/alert_ORACLE_SID.log
新しい Oracle データベースのログ ファイルは、ORACLE_BASE/diag/rdbms の下にあります (例: D:appAdministratordiag dbmsorclorcl)レース
SQL ステートメントを使用して場所を見つけることもできます:
アラート ログ XML ファイルの場所: v$diag_info から値を選択します (name ='Diag Alert';
Alert)ログ テキスト ファイルの場所: v$diag_info から値を選択します。ここで name ='Diag Trace';
解決策:
alter system set "_optimizer_connect_by_cost_based" = false scope=both ;
参考詳細
_optimizer_connect_by_cost_based は、コストベースの変換を使用して接続します。デフォルトは true です。スコープは、このパラメータによって変更される SQL のスコープです。両方、メモリ、spfile の合計 3 つの値があります。
1. Scope=memory は変更後に有効になりますが、データベースの再起動は機能しません
2. Scope=spfile は変更後は有効になりません。次に有効になります。データベースの再起動時
3. Scope=both 現在は変更後も機能し、次回データベースが再起動されたときも機能します
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」 「
以上がOracle がソケットからさらにデータを読み取れない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。