システム管理レッスン10.データの並行性の管理
1. Oracleデータベースのロックメカニズムについて詳しく説明してください。
ロック:
複数のセッションが同じデータを同時に変更するのを防ぐことができ
ます。指定されたステートメントの最低レベルで自動的に取得されます(行、ブロック、テーブル)(オブジェクト、データベース、スキーム)。
ロックメカニズム:(
提供)高度なデータの同時処理(機能):
- 挿入、更新、削除を実行するときに行レベルのロックを使用する
- クエリはロックを必要としません。
自動キュー管理。ロック
はトランザクションが終了するまで保持されます(COMMITまたはROLLBACK操作を使用)。
2.トランザクションが排他的行ロックを取得すると同時に、共有テーブルロックを取得するのはなぜですか?
データベースを変更する場合は、ブロックからメモリにデータを読み取り、変更後に送信し、データベースの書き込みプロセスによってデータファイルに書き込みます。
他の管理者がテーブルを削除している間、ユーザーがテーブルの行データを変更できないようにします。
3.ロックの競合が発生した場合の解決方法は、対応するSQLコマンドを指定してください。
最初のステップは、セッションID(セッションID)
SQLステートメントを見つけることです
SELECT sid, serial#, username FROM v$session
WHERE sid IN (SELECT blocking_session FROM v$session);
v $ session現在のセッション
blocking_sessionロックを保持する任意のセッションロックの競合
を解決するための2番目のステップは、
ALTER SYSTEM KILL SESSION'SID、SERIAL# 'IMMEDIATE;
A.ロックを保持しているセッションが送信またはロールバック(解放)された
B.ロックを保持しているセッションが終了した(緊急時)
4.デッドロックはどのようにして発生し、それを解決するには?
トランザクションT1はT2を待機しており、T2はT1を待機しています。2つのトランザクションが終了することはありません
。2つ以上のセッションが、他のセッションによってロックされたデータを待機しています。
ORA-00060
リソース
ソリューションの待機中にデッドロックが検出されました:
完全に自動、トランザクションの1つを強制終了します
5. Oracleデータベースの行ロックは、基本的にデータブロックのロックですが、このステートメントは正しいですか。
間違っています
リレーショナルテーブルのデータがブロック内に1行ずつ保存され、行の一部が
ロックされています。
6. OCP試験問題:
阿部
TMロック(テーブルレベルロック)
TXロック(トランザクションロックまたは行レベルロック)
ロックタイプ:
排他ロック(排他ロック、つまりXロック)(書き込みロック)データオブジェクトAの読み取りと変更はトランザクションTのみが許可され、他のトランザクションは許可されません。データオブジェクトA
(読み取りロック)の共有ロック(共有ロック、Sロック)では、トランザクションTはデータオブジェクトAを読み取ることができますが、Aを変更することはできません。他のトランザクションはSロックをAにのみ追加でき、Sロックは追加できません。