2012-09-11 11 views
7

ich schreckliche Fehler in SQL Indexerstellung gemacht:Wie überprüfe ich den Status der Indexerstellung auf Oracle 11?

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

As You I Stichwort "ONLINE" sehen verpaßt Index zu erstellen, ohne mit 600m + Aufzeichnungen mit hohen Nutzung PRODUCTION Tabelle blockiert. Korrigierte SQL ist:

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

Ich wurde es unter PL/SQL Developer gemacht. Als ich versuchte es zu stoppen, stoppte das Programm nicht mehr und stürzte ab.

Produktionssystem funktioniert seit 9 Stunden nicht mehr und mein Chef will explodieren. : D

Gibt es eine Chance zu sehen, wie viele Sekunden/Minuten/Stunden Oracle 11g übrig, um diese Indexerstellung zu verarbeiten? Oder gibt es eine Chance zu sehen, ob Oracle noch an dieser Anfrage arbeitet? (PL/SQL-Entwickler ist abgestürzt).

Für Hasser: Ich weiß, ich sollte dies wie hier erwähnt tun: (source)

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

+0

Ihr Link scheint nicht gültig zu sein. Ich würde hoffen, dass jeder Artikel, den Sie sich ansehen, zumindest über die Einstellung skip_unusable_indexes spricht, bevor Sie einen unbrauchbaren Index erstellen und Ihnen sagt, dass Sie die Parallelitätseinstellung des Index ändern sollen, sobald er erstellt ist. –

+2

Der Artikel nicht, aber die Kommentare tun, und erklären auch, warum der Rat nicht so hilfreich ist, wie Sie zu denken scheinen. Ich bin aber mit Justin, warum hast du nicht die Sitzung beendet, die den Indexaufbau ausführt? –

Antwort

13

Sie sollten in den Fortschritt der Operation zu betrachten, in der Lage 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 

Natürlich hätte ich in einem Produktionssystem wahrscheinlich die Sitzung vor Stunden abgebrochen, anstatt die DDL-Operation weiter zu verhindern t Benutzer können nicht auf die Anwendung zugreifen.

+0

Ich kann meine Sitzung nicht sehen, da beim Absturz von PL/SQL Developer die Verbindung unterbrochen wurde. Wenn ich versuche Statistiken zu berechnen, erhalte ich einen Fehler: Error report: ORA-20000: this index object "PRODSCHM"."IDX_DATA_TABLE_CUSECO" is being online built or rebuilt WBAR

+0

@WBAR - Ich bin mir nicht sicher, ob ich was verstehe sage ich. Die Tatsache, dass die Clientanwendung (PL/SQL Developer) abgestürzt ist, hat nichts damit zu tun, ob die Datenbanksitzung noch läuft. Sehen Sie die Sitzung in v $ Sitzung? –

+0

Ich sehe diese Sitzung nicht – WBAR