Solved

ORA-08104: this index object 36413 is being online built or rebuilt

Posted on 2004-09-12
1
6,558 Views
Last Modified: 2013-12-11
Hi,

OS : Solaris 9
Oracle 9.2.0.5

My objective is to move an index from one tablespace to another.
      alter index <index name> rebuild tablespace <tablespace name>

It fails with this error :
ORA-08104: this index object 36413 is being online built or rebuilt

I'll have only one day tomorrow during which I can try dropping and building the index or other options. Not sure if it would allow me to drop.
Looking forward to expert advice so that I can try all available options during the time window provided.

TIA,
Rakesh
0
Comment
Question by:grora
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 7

Accepted Solution

by:
BobMc earned 500 total points
ID: 12039421
Has a previous attempt to online rebuild this index failed?
The error normally indicates that a rebuild (or recovery from a failed rebuild) is currently in progress.

You can either wait for the current operation to complete - V$session_longops may give some details of progress, or drop the index with "drop index <idxname> force;" and recreate it.

Heres a note I found from Oracle, but I wouldnt do this myself without checking with Oracle support first.

Goal
The client and shadow process that were performing a ALTER INDEX REBUILD ONLINE were killed. (kill -9) .

Attempts to drop the index returned ORA-8104 This index object %s is being online built or rebuilt.
Fix
The killed process that was performing the ALTER INDEX REBUILD ONLINE left the REBUILD FLAG
(bit 512) in the IND$ table.

This statement will show all of the indexes that are in the REBUILD ONLINE mode

Select obj# from ind$ where bitand(flags, 512)=512;

To fix the problem:
==============

Update ind$ set flags=flags-512 where obj#={object ID of the problem index};
commit;

Verify that the change was done:
========================

Select flags from ind$ where obj#={object ID of the problem index};

Now should be able to drop the index:
===========================

drop index {index name};
drop the SYS_JOURNAL_{obj ID}

If you still get an error on the drop, try:
============================

update ind$ set flags=0 where obj#={object ID of the problem index};
commit;
shutdown abort
startup
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Why doesn't the Oracle optimizer use my index? Querying too much data Most Oracle developers know that an index is useful when you can use it to restrict your result set to a small number of the total rows in a table. So, the obvious side…
How to Create User-Defined Aggregates in Oracle Before we begin creating these things, what are user-defined aggregates?  They are a feature introduced in Oracle 9i that allows a developer to create his or her own functions like "SUM", "AVG", and…
This video shows syntax for various backup options while discussing how the different basic backup types work.  It explains how to take full backups, incremental level 0 backups, incremental level 1 backups in both differential and cumulative mode a…
This video shows how to configure and send email from and Oracle database using both UTL_SMTP and UTL_MAIL, as well as comparing UTL_SMTP to a manual SMTP conversation with a mail server.

732 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question