Solved

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

Posted on 2004-09-12
1
6,409 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
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Background In several of the companies I have worked for, I noticed that corporate reporting is off loaded from the production database and done mainly on a clone database which needs to be kept up to date daily by various means, be it a logical…
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.

896 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

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now