在一个表上建索引时,报ORA-01410错误,我们查询这个表来重现这个错误:Connected to: Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production With the Partitioning option JServer Release 9.2.0.6.0 - Production
SQL> set timing on SQL> set time on 14:20:03 SQL> select /*+ full(a) no_index(a) */ count(*) from crm.cust_order a; select /*+ full(a) no_index(a) */ count(*) from crm.cust_order a * ERROR at line 1: ORA-01410: invalid ROWID ORA-01410错误通常见于通过索引访问表,而索引或表由逻辑上的损坏。而这里显示没有通过索引访问表?那问题出在哪里呢?在这种情况下,这个错误与ORA-08103极其类似,14:27:00 SQL> alter session set max_dump_file_size=unlimited;
Session altered.
Elapsed: 00:00:00.01 14:27:18 SQL> alter session set db_file_multiblock_read_count=1;
Session altered.
Elapsed: 00:00:00.00 14:27:18 SQL> alter session set events "immediate trace name trace_buffer_on level 1048576";
Session altered.
Elapsed: 00:00:00.00 14:27:18 SQL> alter session set events "10200 trace name context forever, level 1";
Session altered.
Elapsed: 00:00:00.00 14:27:18 SQL> select /*+ full(a) no_index(a) */ count(*) from crm.cust_order a; ERROR at line 1: ORA-01410: invalid ROWID
Elapsed: 00:05:50.82 14:33:09 SQL> 14:33:09 SQL> alter session set events "immediate trace name trace_buffer_off";