Oracle のセッションを即時に強制終了します (セッション)

1. 要件の説明

        プロジェクト開発の過程でOracleデータベースへの接続操作が発生しますが、通常は該当するSQL文を実行して接続を閉じた後、データベースへの接続が解放されますが、実際にはクエリを実行しています。データベースが確立されました。セッション中に、次のように、多数の非アクティブなセッションが存在したことが判明しました (理由を見つけて、現在のセッションを手動ですぐに削除する必要があります。そうしないと、通常の業務運営に影響します)。形:

select machine,COUNT(machine) from v$session GROUP BY machine ORDER BY COUNT(machine);

2. 需要分析

データベース内に多数のセッションが存在します。これは通常、次の 3 つの状況によって発生します。

 ① プログラムはデータベース接続を開いた後、データベース接続を閉じません。

 ②データベースのコネクションプールを使用しており、プールの設定が不当である。

 ③データベーステーブルがデッドロックしている、またはセッションが異常終了している場合(例えば、コミットもロールバックも行わずに更新操作を行った後、この時点でネットワークが切断され、テーブルの作成やレコードのロックのみが行われます)タイムアウト後にロックが解除される];

トラブルシューティングによって問題が特定された後、Oracle データベースには、以前の例外によって引き起こされた多数のセッションがまだ残っています。この時点で、次のステートメントを使用して、指定されたセッションを即座に強制終了できます。

--不是真正的杀死会话,它只是将会话标记为终止,等待PMON进程来清除会话

おすすめ

転載: blog.csdn.net/xiaochenXIHUA/article/details/131079853