在extended ROWID里, 最后两个字节(16bit)表示row number, 从这个角度来说最大的row number是65535, 但是实际上
最大的row number是32767,
这可以从两个角度理解:
1.最大的block size 是32k, 所以最大的row number不可能超过32767
2.用dbms_rowid.rowid_create(..., row_number=>32768)生成的rowid是无效的
SQL> select dbms_rowid.rowid_create(1, 10742, 1, 25033, row_number=>32768) row_id
2 from dual;
ROW_ID
------------------------------------
AAACn2AABAAAGHJIAA
SQL> select * from t where rowid='AAACn2AABAAAGHJIAA';
select * from t where rowid='AAACn2AABAAAGHJIAA'
*
ERROR at line 1:
ORA-01410: invalid ROWID
这可以从两个角度理解:
1.最大的block size 是32k, 所以最大的row number不可能超过32767
2.用dbms_rowid.rowid_create(..., row_number=>32768)生成的rowid是无效的
SQL> select dbms_rowid.rowid_create(1, 10742, 1, 25033, row_number=>32768) row_id
2 from dual;
ROW_ID
------------------------------------
AAACn2AABAAAGHJIAA
SQL> select * from t where rowid='AAACn2AABAAAGHJIAA';
select * from t where rowid='AAACn2AABAAAGHJIAA'
*
ERROR at line 1:
ORA-01410: invalid ROWID
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37279/viewspace-1870229/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/37279/viewspace-1870229/