Как проверить состояние построения индекса в Oracle 11?

Я сделал ужасную ошибку в создании индекса SQL:

create index IDX_DATA_TABLE_CUSECO on DATA_TABLE (CUSTOMER_ID, SESSION_ID, CONTACT_ID)
  tablespace IDX_TABLESPACE LOCAL ;

как вы можете видеть, я пропустил ключевое слово "Онлайн" для создания индекса без блокировки производственной таблицы с высоким использованием с 600M+ записями. Исправлена SQL-это:

create index IDX_DATA_TABLE_CUSECO on DATA_TABLE (CUSTOMER_ID, SESSION_ID, CONTACT_ID)
  tablespace IDX_TABLESPACE LOCAL ONLINE;

Я сделал это под PL / SQL Developer. Когда я пытался остановить его, программа перестала отвечать и разбилась.

производственная система не работает в течение 9 часов и мой босс хочет взорваться. : D

есть ли шанс посмотрите, сколько секунд/минут / часов Oracle 11g осталось для обработки этого создания индекса ? Или, может быть, есть шанс увидеть, работает ли Oracle над этим запросом? (PL / SQL Developer разбился).

для ненавистников: Я знаю, что должен сделать это, как указано здесь: (источник)

CREATE INDEX cust_idx on customer(id) UNUSABLE LOCAL;
ALTER INDEX cust_idx REBUILD parallel 6 NOLOGGING ONLINE;

1 ответов


вы должны иметь возможность просматривать прогресс работы в V$SESSION_LONGOPS

SELECT sid, 
       serial#, 
       target, 
       target_desc, 
       sofar, 
       totalwork, 
       start_time, 
       time_remaining, 
       elapsed_seconds
  FROM v$session_longops
 WHERE time_remaining > 0

конечно, в производственной системе я, вероятно, убил бы сеанс несколько часов назад, а не позволял операции DDL продолжать препятствовать пользователям получать доступ к приложению.