私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Oracle には多くのバックグラウンド プロセスがあります。テーブルのロックなどの特殊な状況が発生した場合、バックグラウンド プロセスを待機している場合は、バックグラウンド プロセスを強制終了できるかどうかを検討する必要があります。このバックグラウンド プロセスを強制終了すると、インスタンスがクラッシュしますか?実践の精神で、真の知識は実践から生まれます。この記事では、Oracle 11g、Oracle 19c、Oracle 23ai の 3 つのバージョンに焦点を当てて、インスタンスに問題が発生するかどうかを確認します。クラッシュ。
pmon、smon、dbwr、lgwr、ckpt、mman の 6 つのコア プロセスについては誰もがすでによく知っていますが、これら 6 つのコア プロセスを強制終了すると確実にインスタンスがクラッシュするため、これら 6 つはスクリプトから削除されています。
#!/bin/sh
function startup()
{
sqlplus / as sysdba<<EOF
startup
exit
EOF
}
started=`ps -ef | grep pmon | grep -v grep | awk '{print $2}'`
test -z "$started" && startup >> /dev/null
sleep 5
# List of Oracle background processes to exclude from killing
exclude_processes="pmon|smon|dbw0|dbw1|lgwr|ckpt|mman"
# Get list of Oracle processes
prolist=`ps -ef | grep ora | egrep -v "bash|su|h|ps|grep|more|sleep|awk|LOCAL|sy sdba|log|$exclude_processes" | awk '{print $NF}'`
for i in $prolist
do
proc_key=`echo $i | awk -F _ '{print $2}'`
pid=`ps -ef | grep $proc_key | grep -v grep | awk '{print $2}'`
test -z $pid && echo "$proc_key does not exist" || {
echo "Killing process $proc_key with PID $pid"
kill -9 $pid
sleep 20
# Check if PMON process exists
pc=`ps -ef | grep pmon | grep -v grep | wc -l`
echo "Number of PMON processes: $pc"
if [ $pc -eq 0 ]; then
echo "Killed process $proc_key has caused instance crash!"
startup >> /dev/null
sleep 5
else
echo "Killed process $proc_key has not caused instance crash."
fi
}
done
3 つのバージョンのテスト結果は次のとおりです
オラクル 11g
Killed process vktm has caused instance crash!
Killed process gen0 has caused instance crash!
Killed process dbrm has caused instance crash!
オラクル 19c
Killed process clmn has caused instance crash!
Killed process vktm has caused instance crash!
Killed process gen0 has caused instance crash!
Killed process lg00 has caused instance crash!
Killed process lg01 has caused instance crash!
Killed process lreg has caused instance crash!
Killed process dbrm has caused instance crash!
Killed process pman has caused instance crash!
オラクル 23ai
Killed process clmn has caused instance crash!
Killed process vktm has caused instance crash!
Killed process gen0 has caused instance crash!
Killed process lg00 has caused instance crash!
Killed process lg01 has caused instance crash!
Killed process lreg has caused instance crash!
Killed process dbrm has caused instance crash!
Killed process pman has caused instance crash!
Killed process bg02 has caused instance crash!
oracle11g (9)
オラクル 19c (9+4=13)
公式ドキュメントには bgnn の紹介はありませんか?
PMON (プロセス モニター):
バックグラウンドプロセスとユーザープロセスのステータスを監視します。ユーザープロセスの異常や切断が検出された場合、PMON は関連するリソースをクリーンアップし、ロックを解放します。
SMON (システムモニター):
システムレベルのトランザクションとデータベースインスタンスのリカバリを処理します。 SMON は、未完了のトランザクションのロールバックや一時セグメントのクリーンアップなど、データベースの一貫性を維持する責任を負います。
DBWR (データベース ライター):
バッファ内のデータをディスクに書き戻す役割を果たします。 DBWR は、データベースの一貫性と耐久性を確保するために、必要に応じてチェックポイントを実行します。
LGWR (ログ ライター):
REDO ログ バッファ内のログ レコードを REDO ログ ファイルに書き込みます。 LGWR はトランザクションの耐久性を保証し、クラッシュ後にデータベースを回復できるようにします。
CKPT (チェックポイント プロセス):
データベース インスタンスで定期的なチェックポイント操作を実行します。チェックポイントは、リカバリ操作のために、変更されたデータをデータベース バッファからデータ ファイルに書き込みます。
MMAN (メモリ マネージャー):
データベース インスタンスでのメモリの割り当てと使用量を管理します。 MMAN は、共有プールおよびその他のメモリ構造のサイズを自動的に調整して、データベースのパフォーマンスを最適化します。
VKTM (バーチャルタイムキーパー):
データベース インスタンスでタイム サービスを提供します。 VKTM は、イベントやトランザクションのタイムスタンプの待機など、データベース内のすべての時間関連操作を管理します。
Oracle 11g で導入された新しいバックグラウンド プロセス。
DBRM (データベース リソース マネージャー):
CPU、I/O、接続数などのデータベース リソースの割り当てと使用を管理します。 DBRM は、さまざまなユーザーおよびアプリケーション間でのリソースの公平かつ効率的な割り当てを保証します。
Oracle 11g で導入された新しいバックグラウンド プロセス
GEN0 (汎用バックグラウンドプロセス):
データベース インスタンスでさまざまなシステム タスクや管理操作を処理するために使用される汎用のバックグラウンド プロセス。
Oracle 10gで導入されたバックグラウンドプロセス
23ai (13+1=14)
新しいグンプロセス、23ai には複数のバックグラウンド bgnn プロセスがあります。強制終了するとインスタンスがクラッシュします。しかし、公式のリファレンスはありません。非常に奇妙な!知っている人がいたらメッセージを残してアドバイスをお願いします!
CLMN (クリーンアップメインプロセス):
関数: Oracle インスタンスでのクリーンアップ タスクの実行を担当します。
責任: 停止したプロセス、終了したセッション、トランザクション、ネットワーク接続、アイドル セッション、切断されたトランザクション、アイドル タイムアウトを超えたネットワーク接続のクリーンアップを管理します。
Oracle 12c では、pmon によるクリーンアップ作業の処理を支援する clnn が導入されています。
LGnn (ログライターワーカー):
関数: lgwr補助プロセス。
責任: マルチプロセッサ システムでは、LGWR はワーカーを作成してプロセスの書き込みパフォーマンスを向上させます
Oracle19c は、lgwr プロセスによる同時処理を支援し、ログ書き込みパフォーマンスを向上させるために導入されました。
LREG(リスナー登録プロセス):
関数: Oracle インスタンスをリスナーに登録します。
責任 : インスタンス、サービス、ハンドラー、エンドポイントについてリスナーに通知します。リスナーがどのデータベース サービスに接続できるかを認識していることを確認してください。
Oracle 12cが導入されました
PMAN (プロセス マネージャー):
関数: Oracle データベースのさまざまなバックグラウンド プロセスを管理します。
責任: ディストリビュータおよび共有サーバーのプロセス、接続ブローカー、データベース常駐接続プールのプールされたサーバー プロセス、ジョブ キュー プロセス、および必要に応じて再起動可能なバックグラウンド プロセスを監視、開始、停止します。
Oracle 12cが導入されました
上記以外にも、クラスタ環境ではASMインスタンスに関連するバックグラウンドプロセスがあり、強制終了できないASMキープロセスは以下の4つです。
ASMB (ASM バックグラウンド プロセス):
関数 :ASMB は、自動ストレージ管理 (ASM) のバックグラウンド プロセスです。これは主に、ASM インスタンスと Oracle インスタンス間の通信を維持するために使用されます。 ASMB は、Oracle インスタンスへの接続を管理し、ASM インスタンスとクライアント間のメタデータ操作リクエストを処理し、データのリバランス操作を調整します。
RBAL (ASM リバランス マスター プロセス):
関数 : RBAL は、ASM に関連する別のプロセスです。これは、他の ASM インスタンスの ARBx スレーブ プロセスにリバランス タスクを分散する役割を果たします。 ASM ディスクの追加または削除時にリバランス操作が実行され、ディスク グループ全体にデータが均等に分散されるようになります。
PSP0 (プロセススポーナープロセス):
関数 : PSP0 はプロセス スポーナー プロセスであり、Oracle インスタンス内の他のバックグラウンド プロセスの生成と管理を担当します。これにより、インスタンスの起動時に必要なバックグラウンド プロセスが確実に開始され、必要に応じて新しいプロセスが生成されます。
GMON (ASM ディスク グループ モニター プロセス):
関数 : GMON は、ASM ディスク グループ監視プロセスです。これは主に、ASM ディスク グループのステータスと健全性を監視および管理するために使用されます。 GMON は、ディスク グループの一貫性を確保し、ディスク グループ内のエラーや不整合を検出した場合に修正措置を講じます。
追伸:オラクル23aiもう 1 つの変更があります。バックグラウンド プロセスの名前が ora_xxxx から db_xxxx に変更され、数十年間使用されてきたルールが廃止されました。
19c
23ai (EE の公式バージョンが ora_ を使用するか db_ を使用するかは不明)