[English]
作者:
fuyuncat
来源:
www.HelloDBA.com
在OEM的Database Locks视图,我们可以监控到数据库上的锁,对于TX锁,视图会显示锁对应的ROWID,如以下格式。
0010CDBE.0007.007B
但是这个ROWID并不是我们所熟悉18位64进制的格式。实际上,如果你熟悉Oracle 7及之前版本的话,就可以认出这是Oracle7中ROWID的格式,其组成为(数据为16进制):
<BLOCK NUMBER>.<ROW SEQUENCE>.<FILE ID>
而在锁的视图中,已经显示了锁所在的对象。这样,构成ROWID所需要的4个要素都可以得到:OBJECT ID, FILE ID, BLOCK NUMBER, ROW SEQUENCE.
我们就可以用函数构造出ROWID来了。如我们之前的例子:
SQL代码
- SQL> select object_id from dba_objects where object_name = 'CS2_BL_SHMT_LEG' and owner='CS2_PARTY_OWNER';
- OBJECT_ID
- ----------
- 65063
- SQL> select * from CS2_BL_SHMT_LEG where rowid = (select dbms_rowid.rowid_create(1,65063,123,1096653,14) from dual);
- … …
- 1 rows selected
--- The End ---