私はデータベース管理者ではありませんが、テーブルをロックし、結果として大きな混乱を引き起こしているデータベースに問題があります。オラクルのデータベース管理者から情報を入手します。誰かが問題の鍵を見つけるのを手伝ってくれたり、何をする必要があるかを教えてくれたりしたら、ここにさらに情報を入れます:
オラクルから大きなレポートがありますが、データの 95% を理解していません。
私はデータベース管理者ではありませんが、テーブルをロックし、結果として大きな混乱を引き起こしているデータベースに問題があります。オラクルのデータベース管理者から情報を入手します。誰かが問題の鍵を見つけるのを手伝ってくれたり、何をする必要があるかを教えてくれたりしたら、ここにさらに情報を入れます:
オラクルから大きなレポートがありますが、データの 95% を理解していません。
これは、通常の行レベル ロックのように見えます。行を変更できるのは、一度に 1 人のユーザーだけです。データ ディクショナリには、誰がブロックされ、誰がブロックしているかに関する情報が含まれています。
--Who's blocking who?
select
blocked_sql.sql_id blocked_sql_id
,blocked_sql.sql_text blocked_sql_text
,blocked_session.username blocked_username
,blocking_sql.sql_id blocking_sql_id
,blocking_sql.sql_text blocking_sql_text
,blocking_session.username blocking_username
from gv$sql blocked_sql
join gv$session blocked_session
on blocked_sql.sql_id = blocked_session.sql_id
and blocked_sql.users_executing > 0
join gv$session blocking_session
on blocked_session.final_blocking_session = blocking_session.sid
and blocked_session.final_blocking_instance = blocking_session.inst_id
left join gv$sql blocking_sql
on blocking_session.sql_id = blocking_sql.sql_id;
システムを理解していれば、「何」がブロックされているかではなく、「誰が」ブロックを行っているかに注目する方が通常は簡単です。上記のクエリはいくつかの一般的な列のみを返しますが、これらのテーブルには、プロセスの識別に役立つ可能性のある他の列が多数あります。