会话后台运行引起并行进程释放问题
有一套rac数据库,一个业务报表逻辑非常复杂,sql语句达到了600多行,表关联有20多个,采取了并行查询的方式去优化,而这个并行查询虽然速度上得到了解决,但是经常出现几个月之前的进程都不释放的状态,而且这些遗留的并行进程拖慢了系统的运行,最后经常不
有一套rac数据库,一个业务报表逻辑非常复杂,sql语句达到了600多行,表关联有20多个,采取了并行查询的方式去优化,而这个并行查询虽然速度上得到了解决,但是经常出现几个月之前的进程都不释放的状态,而且这些遗留的并行进程拖慢了系统的运行,最后经常不得不采取手动kill掉这些并行进程来释放压力。
查看了很多的文档并没有发现一个合适的说法,而这些并行进程都是在进行PX Deq:Execution Msg或者PX Deq Credit: send blkd等待,做hanganalyze也找不到问题的原因,mos上也没发现疑似的bug。
看见mos这篇文章
PX Deq Credit: Send Blkd Waits Seen after CTRL-C on a Session and Parallel Query Slaves Not Released (文档 ID 1545069.1)
Cause:
This is not a bug per Bug 1837760: PARALLEL QUERY SLAVE DOES NOT GET RELEASED AFTER CTRL-C TO CANCEL THE QUERY, which was closed as an enhancement request. Slaves will be considered "busy" until a SQL statement completes and releases the cursor. If a session is CTRL-C'd, the cursor will remain open until either (1) another SQL statement is issued in the session, or (2) the session is exited. This behavior continues through 11g and higher
Solution:
If you CTRL-C a session running in parallel, either issue another SQL statement to release the slaves, or exit the session.
这篇文章大概说的就是一个并行查询如果被终止了,这些并行进程依然还会存在,并进行一些PX Deq的等待,而解决办法是需要在当前这个session中执行另一个查询或者exited退出这个会话。
根据上面的文章小鱼手动做了这个复杂模块的查询,然后又叉掉了这个模块,过了很长的时间这个对应的并行进程并不释放,而查询这些并行进程发现对应的sql语句正是这个复杂的sql语句。
这个600多行的sql语句不采用并行执行是相当的慢,调优由于网络等因素都不方便,所以建议做的是并行,但是由于是客户操作某个模块触发的这个复杂的sql,而且有时候如果半天不响应就直接叉掉了那个模块重来,而叉掉这个模块的动作并不会清除当前这个会话,正是这个会话后台运行导致了oracle的pmon进程不会去释放一个运行的好好的进程,从而引起了太多的看似没有释放的并行进程,其实在oracle看来这些并行进程还在正常运行,根本就不需要释放,其实也就是会话后台运行引起的并行进程不释放,而为什么叉掉这个模块后,会话依然还在后台运行,这个可能跟中间件等相关,而这个中间件用的weblogic。
原文地址:会话后台运行引起并行进程释放问题, 感谢原作者分享。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Discuz のバックグラウンド ログイン問題の解決策が明らかになりました。特定のコード サンプルが必要です。インターネットの急速な発展に伴い、Web サイトの構築がますます一般的になってきました。Discuz は、一般的に使用されるフォーラム Web サイト構築システムとして、次のユーザーに好まれています。多くのウェブマスター。しかし、その強力な機能ゆえに、Discuz を使用する際にバックグラウンドでのログインの問題などの問題が発生することがあります。本日は、Discuz のバックグラウンド ログインの問題の解決策を明らかにし、具体的なコード例を提供します。

Linuxシステムで.shファイルを実行するにはどうすればよいですか? Linux システムでは、.sh ファイルはシェル スクリプトと呼ばれるファイルであり、一連のコマンドを実行するために使用されます。 .sh ファイルの実行は非常に一般的な操作です。この記事では、Linux システムで .sh ファイルを実行する方法と具体的なコード例を紹介します。方法 1: 絶対パスを使用して .sh ファイルを実行する Linux システムで .sh ファイルを実行するには、絶対パスを使用してファイルの場所を指定できます。具体的な手順は次のとおりです。 ターミナルを開きます。

PyCharm は非常に人気のある Python 統合開発環境 (IDE) であり、Python 開発をより効率的かつ便利にするための豊富な機能とツールを提供します。この記事では、PyCharm の基本的な操作方法を紹介し、読者がすぐに使い始めてツールの操作に習熟できるように、具体的なコード例を示します。 1. PyCharm をダウンロードしてインストールします。 まず、PyCharm 公式 Web サイト (https://www.jetbrains.com/pyc) にアクセスする必要があります。

matlab で m ファイルを実行する方法を知っていますか? 以下に、エディターが matlab で m ファイルを実行する方法に関するチュートリアルを示します。お役に立てば幸いです。エディターで学習しましょう! 1. まず matlab を開きます。ソフトウェアを起動し、下の図に示すように、左上隅の「開く」を選択します。 2. 次に、以下の図に示すように、実行する m ファイルを選択して開きます。 3. 次の図に示すように、ウィンドウで F5 キーを押してプログラムを実行します。 4. 以下の図に示すように、コマンド ライン ウィンドウとワークスペースで実行結果を確認できます。 5. 次の図に示すように、[実行] を直接クリックしてファイルを実行することもできます。 6. 最後に、次の図に示すように、コマンド ライン ウィンドウとワークスペースで m ファイルの実行結果を表示できます。上記は編集者が提供した matlab メソッドです

Linuxのプロセスの優先度調整方法を詳しく解説 Linuxシステムでは、プロセスの優先度によってプロセスの実行順序やシステム内のリソースの割り当てが決まります。プロセスの優先順位を合理的に調整すると、システムのパフォーマンスと効率が向上します。この記事では、Linuxでプロセスの優先度を調整する方法と具体的なコード例を詳しく紹介します。 1. プロセス優先度の概要 Linux システムでは、各プロセスには優先度が関連付けられています。優先順位の範囲は通常 -20 ~ 19 で、-20 は最高の優先順位を表し、19 は最高の優先順位を表します。

WordPress バックエンドのコードの文字化けが心配ですか?これらの解決策を試してください。具体的なコード例が必要です。Web サイト構築で WordPress が広く使用されるようになったことで、多くのユーザーが WordPress バックエンドでコードが文字化けする問題に遭遇する可能性があります。このような問題が発生すると、バックグラウンドの管理インターフェースが文字化けして表示され、ユーザーに多大な迷惑をかけてしまいます。この記事では、WordPress バックエンドでの文字化けのトラブルを解決するための一般的な解決策をいくつか紹介します。 wp-config.php ファイルを変更し、wp-config を開きます。

[ファイル名を指定して実行] ダイアログを開くには、Win + R ショートカットを使用する方法、検索機能を使用する方法、またはスタート画面に直接「ファイル名を指定して実行」と入力する方法の 3 つがあります。

Linux のプロセスがスリープするのはなぜですか? Linux オペレーティング システムでは、さまざまな理由や条件によりプロセスが休止状態になることがあります。プロセスが休止状態にあるときは、プロセスが一時的に中断され、特定の条件が満たされるまで実行を続行できないことを意味し、その後起動して実行を継続できます。次に、Linux でプロセスが休止状態に入るときの一般的な状況をいくつか詳しく紹介し、具体的なコード例で説明します。 I/O の完了を待機中: プロセスが I/O 操作 (読み取りなど) を開始したとき
