测试index online rebuild故障记录

编程入门 行业动态 更新时间:2024-10-23 21:25:15

测试index online rebuild<a href=https://www.elefans.com/category/jswz/34/1771431.html style=故障记录"/>

测试index online rebuild故障记录

测试数据 SQL> select count(*) from t;

  COUNT(*)
----------
    596528

SQL> create index online_test on t(object_id);

Index created.

SQL> select object_id from dba_objects where object_name = 'ONLINE_TEST';

OBJECT_ID
----------
     75783
SQL> select FLAGS from ind$ where obj# = 75783;

     FLAGS
----------
     2
SQL> select status from dba_indexes where index_name = 'ONLINE_TEST';

STATUS
--------
VALID
在线重建索引,途中杀掉进程 SQL> alter index online_test rebuild online;
alter index online_test rebuild online
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 2565
Session ID: 39 Serial number: 1
此时的状态 SQL> select FLAGS from ind$ where obj# = 75783;

     FLAGS
----------
       514

SQL> select status from dba_indexes where index_name = 'ONLINE_TEST';

STATUS
--------
VALID
数据库内残留了一张表,用于在线重建索引时,记录基表改变 SQL> select table_name from dba_tables where table_name like '%75783%';

TABLE_NAME
------------------------------
SYS_JOURNAL_75783
SQL> desc SYS_JOURNAL_75783;
Name                            Null?    Type
----------------------------------------- -------- ----------------------------
C0                            NOT NULL NUMBER
OPCODE                              CHAR(1)
PARTNO                              NUMBER
RID                            NOT NULL ROWID

索引仍然是可用状态 Execution Plan
----------------------------------------------------------
Plan hash value: 688999315

---------------------------------------------------------------------------------
| Id  | Operation       | Name     | Rows     | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |          |     1 |    13 |     3   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE   |          |     1 |    13 |          |          |
|*  2 |   INDEX RANGE SCAN| ONLINE_TEST |     8 |   104 |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------------

但是无法对索引进行操作了 SQL> alter index online_test rebuild online;
alter index online_test rebuild online
*
ERROR at line 1:
ORA-08104: this index object 75783 is being online built or rebuilt


SQL> alter index online_test rebuild;
alter index online_test rebuild
*
ERROR at line 1:
ORA-08104: this index object 75783 is being online built or rebuilt

SQL> drop index online_test;
drop index online_test
           *
ERROR at line 1:
ORA-08104: this index object 75783 is being online built or rebuilt

解决方法:调用函数(10g及以上) declare      ok boolean;
begin
     ok := false;
     while ok=false loop
          ok := dbms_repair.online_index_clean(75783); --
75783是索引的object_id
          dbms_lock.sleep(2);
     end loop;
end;
/
dbms_repair.online_index_clean如果不加任何参数,就是清理所有online rebuild中断的索引
PL/SQL procedure successfully completed.
SQL> select FLAGS from ind$ where obj# = 75783;

     FLAGS
----------
     2
SQL> select table_name from dba_tables where table_name like '%75783%';

no rows selected
SQL> alter index online_test rebuild online;

Index altered.

来自 “ ITPUB博客 ” ,链接:/,如需转载,请注明出处,否则将追究法律责任。

转载于:/

更多推荐

测试index online rebuild故障记录

本文发布于:2024-02-06 04:05:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746368.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:故障   测试   online   index   rebuild

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!