সেশন দ্বারা লক করা সমস্ত সারি আপনি সত্যিই তালিকাভুক্ত করতে পারবেন না । তবে, একবার কোনও সেশন অন্য দ্বারা অবরুদ্ধ হয়ে গেলে আপনি দেখতে পাবেন যে কোন সেশন / সারিটি এটি ব্লক করছে।
ওরাকল স্বতন্ত্র সারির লকগুলির তালিকা বজায় রাখে না। পরিবর্তে, লকগুলি সরাসরি সারিগুলির মধ্যে নিবন্ধিত হয় - এটি একটি অতিরিক্ত কলাম হিসাবে ভাবেন as
কোন সেশনটি ভিউটির মাধ্যমে কোনও অবজেক্টে লক অর্জন করেছে তা আবিষ্কার করতে পারেন তবে এটি V$LOCK
কেবল সাধারণ তথ্য তালিকাভুক্ত করবে, সারি স্তরে নয়।
এই দৃশ্যের সাহায্যে আপনি সেশনটি অন্য কোনও দ্বারা অবরুদ্ধ করা হচ্ছে কিনা তাও খুঁজে পেতে পারেন। সেক্ষেত্রে যদি কোনও সেশন অন্য সেশনের দ্বারা অবরুদ্ধ থাকে তবে সারি তথ্য তথ্যটিতে প্রদর্শিত হয় V$SESSION
।
আপনি সারিটি পুনরুদ্ধার করতে পারেন, আসুন 2 সেশন দিয়ে একটি উদাহরণ তৈরি করুন:
SESSION1> create table test as select * from all_objects;
Table created
SESSION1> select rowid from test where object_name = 'TEST' for update;
ROWID
------------------
AAMnFEAAaAAALTDAAz
/* setting identifiers to help with identifying this session later */
SESSION2> exec dbms_application_info.set_client_info('012345');
PL/SQL procedure successfully completed
SESSION2> select 1 from test where object_name = 'TEST' for update;
/* this will block */
সেশন 2 এখন অধিবেশন 1 এর জন্য অপেক্ষা করছে আমরা এর সাথে ব্লকিং সারিটি আবিষ্কার করতে পারি :
SESSION1> SELECT o.object_name,
2 dbms_rowid.ROWID_CREATE (1,
3 s.ROW_WAIT_OBJ#,
4 s.ROW_WAIT_FILE#,
5 s.ROW_WAIT_BLOCK#,
6 s.ROW_WAIT_ROW#) rid
7 FROM dba_objects o, v$session s
8 WHERE o.object_id = s.row_wait_obj#
9 AND s.client_info = '012345';
OBJECT_NAME RID
--------------- ------------------
TEST AAMnFEAAaAAALTDAAz
আরও পড়ার জন্য: টম কিটের প্রক্রিয়াটির একটি বিবরণ ।