oracle rowid分析 通过查看rowid可以得知同一数据块中有存储了哪些记录但如何通过rowid来区分同一条记录存储在多个数据块中呢,要用什么方法识别呢?请高手指点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SELECT ROWID, dbms_rowid.rowid_object(rowid) object_no, dbms_rowid.rowid_relative_fno(rowid) file_no, dbms_rowid.rowid_block_number(rowid) block_no, dbms_rowid.rowid_row_number(rowid) row_no FROM yourTable ; rowid是代表的一条记录,以上SQL也法得出一条记录如何分散到好几个数据块中呀? oracledbalgtu:可以MSN请教吗? 首先,如果一行数据真的跨一个以上的块了, 这个在ORACLE中也就称为Row Chaining (行链接)SQL> create table aa 2 ( a char(2000), 3 b char(2000), 4 c char(2000), 5 d char(2000), 6 e char(2000), 7 f char(2000), 8 g char(2000), 9 h char(2000), 10 i char(2000), 11 j char(2000), 12 k char(2000), 13 l char(2000), 14 m char(2000), 15 n char(2000), 16 o char(2000), 17 p char(2000), 18 q char(2000), 19 r char(2000), 20 s char(2000), 21 t char(2000), 22 u char(2000), 23 v char(2000), 24 w char(2000), 25 x char(2000), 26 y char(2000), 27 z char(2000));Table created.SQL> insert into aa 2 values(lpad('llll',2000,'bbb'), 3 lpad('llll',2000,'bbb'), 4 lpad('llll',2000,'bbb'), 5 lpad('llll',2000,'bbb'), 6 lpad('llll',2000,'bbb'), 7 lpad('llll',2000,'bbb'), 8 lpad('llll',2000,'bbb'), 9 lpad('llll',2000,'bbb'), 10 lpad('llll',2000,'bbb'), 11 lpad('llll',2000,'bbb'), 12 lpad('llll',2000,'bbb'), 13 lpad('llll',2000,'bbb'), 14 lpad('llll',2000,'bbb'), 15 lpad('llll',2000,'bbb'), 16 lpad('llll',2000,'bbb'), 17 lpad('llll',2000,'bbb'), 18 lpad('llll',2000,'bbb'), 19 lpad('llll',2000,'bbb'), 20 lpad('llll',2000,'bbb'), 21 lpad('llll',2000,'bbb'), 22 lpad('llll',2000,'bbb'), 23 lpad('llll',2000,'bbb'),lpad('llll',2000,'bbb'), 24 lpad('llll',2000,'bbb'), 25 lpad('llll',2000,'bbb'), 26 lpad('llll',2000,'bbb'),lpad('llll',2000,'bbb'));insert into aa *ERROR at line 1:ORA-00913: too many valuesSQL> insert into aa 2 values(lpad('llll',2000,'bbb'), 3 lpad('llll',2000,'bbb'), 4 lpad('llll',2000,'bbb'), 5 lpad('llll',2000,'bbb'), 6 lpad('llll',2000,'bbb'), 7 lpad('llll',2000,'bbb'), 8 lpad('llll',2000,'bbb'), 9 lpad('llll',2000,'bbb'), 10 lpad('llll',2000,'bbb'), 11 lpad('llll',2000,'bbb'), 12 lpad('llll',2000,'bbb'), 13 lpad('llll',2000,'bbb'), 14 lpad('llll',2000,'bbb'), 15 lpad('llll',2000,'bbb'), 16 lpad('llll',2000,'bbb'), 17 lpad('llll',2000,'bbb'), 18 lpad('llll',2000,'bbb'), 19 lpad('llll',2000,'bbb'), 20 lpad('llll',2000,'bbb'), 21 lpad('llll',2000,'bbb'), 22 lpad('llll',2000,'bbb'), 23 lpad('llll',2000,'bbb'),lpad('llll',2000,'bbb'), 24 lpad('llll',2000,'bbb'), 25 lpad('llll',2000,'bbb'), 26 lpad('llll',2000,'bbb'));1 row created.SQL> commit;Commit complete.SQL> select * from user_extents;SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID BYTES BLOCKS--------------------------------------------------------------------------------- ------------------------------ ------------------ ------------------------------ ---------- ---------- ----------AA TABLE LY 0 65536 32AA TABLE LY 1 65536 32SQL> conn / as sysdbaConnected.SQL> @?/rdbms/admin/utlchaincreate table CHAINED_ROWS ( *ERROR at line 1:ORA-00955: name is already used by an existing objectSQL> analyze table ly.aa list chained rows;Table analyzed.SQL> select * from chained_rows;OWNER_NAME TABLE_NAME CLUSTER_NAME PARTITION_NAME SUBPARTITION_NAME HEAD_ROWID ANALYZE_T------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------ ---------LY DD N/A AAACmOAAEAAAAAtAAA 05-SEP-08LY AA N/A AAACmQAAEAAAAB9AAA 05-SEP-08SQL> 创建oracle过程时报编译错误 ORACLE表字段有中文和字母2种,怎样安英文字母顺序排序; 请问 oracle中冷备份和热备份 得问题 oracle循环游标插入数据丢失 求一sql文写法 两表连接问题 请教一个问题,关于导数据 关于数据库的数据文件大小的讨论... 帮忙讲解一下关于触发器NEW和OLD的用法吧 sql语句更新问题,请高手指教? ora-00604/ora-04031错误 2进制文件插入Long Raw类型的字段,为什么报"数据大小超出此类型的最大值"错误?
SELECT ROWID,
dbms_rowid.rowid_object(rowid) object_no,
dbms_rowid.rowid_relative_fno(rowid) file_no,
dbms_rowid.rowid_block_number(rowid) block_no,
dbms_rowid.rowid_row_number(rowid) row_no
FROM yourTable ;
以上SQL也法得出一条记录如何分散到好几个数据块中呀?
2 ( a char(2000),
3 b char(2000),
4 c char(2000),
5 d char(2000),
6 e char(2000),
7 f char(2000),
8 g char(2000),
9 h char(2000),
10 i char(2000),
11 j char(2000),
12 k char(2000),
13 l char(2000),
14 m char(2000),
15 n char(2000),
16 o char(2000),
17 p char(2000),
18 q char(2000),
19 r char(2000),
20 s char(2000),
21 t char(2000),
22 u char(2000),
23 v char(2000),
24 w char(2000),
25 x char(2000),
26 y char(2000),
27 z char(2000));Table created.SQL> insert into aa
2 values(lpad('llll',2000,'bbb'),
3 lpad('llll',2000,'bbb'),
4 lpad('llll',2000,'bbb'),
5 lpad('llll',2000,'bbb'),
6 lpad('llll',2000,'bbb'),
7 lpad('llll',2000,'bbb'),
8 lpad('llll',2000,'bbb'),
9 lpad('llll',2000,'bbb'),
10 lpad('llll',2000,'bbb'),
11 lpad('llll',2000,'bbb'),
12 lpad('llll',2000,'bbb'),
13 lpad('llll',2000,'bbb'),
14 lpad('llll',2000,'bbb'),
15 lpad('llll',2000,'bbb'),
16 lpad('llll',2000,'bbb'),
17 lpad('llll',2000,'bbb'),
18 lpad('llll',2000,'bbb'),
19 lpad('llll',2000,'bbb'),
20 lpad('llll',2000,'bbb'),
21 lpad('llll',2000,'bbb'),
22 lpad('llll',2000,'bbb'),
23 lpad('llll',2000,'bbb'),lpad('llll',2000,'bbb'),
24 lpad('llll',2000,'bbb'),
25 lpad('llll',2000,'bbb'),
26 lpad('llll',2000,'bbb'),lpad('llll',2000,'bbb'));
insert into aa
*
ERROR at line 1:
ORA-00913: too many values
SQL> insert into aa
2 values(lpad('llll',2000,'bbb'),
3 lpad('llll',2000,'bbb'),
4 lpad('llll',2000,'bbb'),
5 lpad('llll',2000,'bbb'),
6 lpad('llll',2000,'bbb'),
7 lpad('llll',2000,'bbb'),
8 lpad('llll',2000,'bbb'),
9 lpad('llll',2000,'bbb'),
10 lpad('llll',2000,'bbb'),
11 lpad('llll',2000,'bbb'),
12 lpad('llll',2000,'bbb'),
13 lpad('llll',2000,'bbb'),
14 lpad('llll',2000,'bbb'),
15 lpad('llll',2000,'bbb'),
16 lpad('llll',2000,'bbb'),
17 lpad('llll',2000,'bbb'),
18 lpad('llll',2000,'bbb'),
19 lpad('llll',2000,'bbb'),
20 lpad('llll',2000,'bbb'),
21 lpad('llll',2000,'bbb'),
22 lpad('llll',2000,'bbb'),
23 lpad('llll',2000,'bbb'),lpad('llll',2000,'bbb'),
24 lpad('llll',2000,'bbb'),
25 lpad('llll',2000,'bbb'),
26 lpad('llll',2000,'bbb'));1 row created.SQL> commit;Commit complete.SQL> select * from user_extents;SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID BYTES BLOCKS
--------------------------------------------------------------------------------- ------------------------------ ------------------ ------------------------------ ---------- ---------- ----------
AA TABLE LY 0 65536 32
AA TABLE LY 1 65536 32SQL> conn / as sysdba
Connected.
SQL> @?/rdbms/admin/utlchain
create table CHAINED_ROWS (
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
SQL> analyze table ly.aa list chained rows;Table analyzed.SQL> select * from chained_rows;OWNER_NAME TABLE_NAME CLUSTER_NAME PARTITION_NAME SUBPARTITION_NAME HEAD_ROWID ANALYZE_T
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------ ---------
LY DD N/A AAACmOAAEAAAAAtAAA 05-SEP-08
LY AA N/A AAACmQAAEAAAAB9AAA 05-SEP-08SQL>