Oracleは、迅速かつ徹底的にセッションを殺すために

今日では、フィードバックの開発がハングが住んでいたプログラム更新の実装は、単にデータの3000本のラインの上に、小さなテーブルが何であるかを見ました。最初の反応は、この例のすべてのセッション殺すために、ロックされ、ライブアップデートを行ったり素早く後者の条件下で行っ選択し、別々にハングアップします。だから私は、クエリを実行し、2ノード・ロックにあるはずだと思います。

ID1 = 383105 GVの$ロックから選択*;

ID1は= 383105 GVの$ロックから*を選択SQL>。

INST_ID ADDR KADDR SID TYPE ID1 ID2 LMODE要求CTIME BLOCK


2 0000000110AF61B0 0000000110AF6210 1333 TM 383105 0 3 0 6819 2

案の定、2がロックを保持しているノード上のセッションがあります。

図2は、クエリを実行し、ノードに接続されています。

SQL>を選択しsidの、シリアル番号、SID = 1333のV $セッションからOSUSER。

SID SERIAL#のOSUSER


 1333          22559 6005821                       

システムを変更するセッション「1333,22559」を殺します。

セッションを殺した後、その後、チェックして、1333セッションがあることがわかりました。

SQL>を選択しsidの、シリアル番号、SID = 1333のV $セッションからOSUSER。

SID SERIAL#のOSUSER


 1333          22559 6005821 

だから私は、システム・レベルのキルからだと思いますが、以下のSQLを介していないクエリのspid 1333

五$プロセスp、五$セッションS s.paddr = p.addrとs.sid = 1333からp.pid、p.spid、s.sid、s.serial#を選択します。

問い合わせ後、Oracleはキルセッションの後、Oracleは単純に同じ仮想アドレスにセッションPADDRポイントに関連したときにことがわかった。この場合の五$プロセスと停止との関連性、プロセスを失う五$セッションでは。その後、セッションをクリアするには、Oracle PMONのを待つ。これは、通常の待機は、セッションの殺し出口にマークされている長い時間がかかります。この時間は、プロセスを強制終了している場合、再試行するタスク、その後すぐにプロセスを受けるのヒントを中断、プロセスの終了と、Oracle PMONは、セッションをクリアするには、すぐに開始します。これは、時間例外割り込みハンドラです。

PADDRの前に次のSQLを見つけます:

五$プロセスp PID <> 1からp.addrを選択し
、マイナス
五$セッションsからs.paddrを選択します。

07000107C8C050F8
07000107DCC19D88

ADDRに従ってSPID五$プロセスを探します:

( '07000107C8C050F8'、 '07000107DCC19D88')内のaddrここで、v $プロセスから選択*;

そして、システムのプロセスIDを見つけ、十分に殺します。プロセスの一環としてのみ、SQLを記録するために、実行結果のご予約の下ではありません。

オラクル@のCQ2:] PS -ef | grepを8847870
オラクル8847870 1 8月3日06から734:23 ora_pz99_CQRPT2
オラクル10420652の13107576 0 11時11分01秒PTS / 1 0時00グレップ8847870
[オラクル@のCQ2:] PS -ef | grepを14221746の
オラクル12583324 13107576の0 11時11分22秒PTS / 1夜12時00分のgrep 14221746
オラクル14221746 1 0 8時16分07秒- 0:04 oracleCQRPT2(LOCAL = NO)
[オラクル@のCQ2:]殺す-9 14221746
[オラクルを@ CQ2:] PS -ef | grepを14221746の
オラクル12583046の13107576 0 11時12分11秒PTS / 1 0:00のgrep 14221746

:テストプロセスは、別の資料を表示することができますhttps://www.cnblogs.com/kerrycode/p/4034231.htmlを

おすすめ

転載: blog.51cto.com/214320/2437350