2015-07-22 7 views
5

Ich benutze Oracle 10g. Seit Monaten habe ich die folgende Fehlermeldung in Bezug auf eine Tabelle:(Oracle): Spalten in teilweise abgelegten Zustand

ORA-12986: columns in partially dropped state. Submit ALTER TABLE DROP COLUMNS CONTINUE 

Die Anweisung ALTER TABLE DROP COLUMNS für Überstunden nicht WEITER.

Ich habe keine DBA-Berechtigungen für diese Datenbank.

Was könnte ich tun? Drop & die Tabelle neu erstellen?

Es ist eine massive Tabelle mit Millionen von Datensätzen.

Was ich versucht:

  1. Es war einmal, ich den folgenden Befehl einige Spalten in unbenutztem Zustand gesetzt gemacht:

    ALTER TABLE hr.admin_emp SET UNUSED (hiredate, mgr); 
    

    Dann habe ich den folgenden Befehl ein:

    ALTER TABLE hr.admin DROP UNUSED columns; 
    

    Das System hängt auf, die Operation ist zu lang, so dass es Fehler gibt.

    Jetzt hat die Tabelle hr.admin zwei Spalten im teilweise fallen gelassenen Zustand, und ich kann weder vorwärts noch rückwärts gehen.

    Ich verstehe nicht, warum das passiert ist.

  2. ich die folgenden Schritte aus, legt das System auf die Bühne ZWEI:

    STAGE ONE ============

    SQL> select * from user_unused_col_tabs; 
    
    TABLE_NAME COUNT 
    ----------- ---------- 
    TEMP  1 
    

    Stufe zwei == ==========

    SQL> alter table temp drop unused columns; 
    
    Table altered. 
    

    Stufe Drei =============

    SQL> select * from user_unused_col_tabs; 
    
    no rows selected 
    
  3. Checkpoint 500 Option

    ich wieder mit der folgenden Aussage versuchen:

    ALTER TABLE MYUSER.MYTABLE DROP COLUMNS CONTINUE CHECKPOINT 500; 
    

    Könnte die CHECKPOINT 500 Option mir helfen?

+0

Was meinst du, "es ist fehlerhaft"? Was ist die genaue Fehlermeldung? –

+0

Die Oracle-Sitzung läuft nach 48 Stunden ab. Ich kann nicht nach dba fragen. – UltraCommit

+0

Ich weiß nicht, was ist die Fehlermeldung, die Sitzung abläuft und der Prozess stirbt. – UltraCommit

Antwort

0

Wir haben etwa zwölf Mal hintereinander den Befehl gegeben:

ALTER TABLE MYUSER.MYTABLE DROP COLUMNS CONTINUE CHECKPOINT 250; 

Die Anweisung automatisch alle 48 Stunden getötet wurde, das ist der Grund, weil wir es mehrmals hatten zu starten.

Etwa 500 Stunden Ausarbeitung, um die Spalten in teilweise fallen gelassenen Zustand definitiv fallen zu lassen ... !!

Es wird bestätigt, dass CHECKPOINT 250 ein "commit" ausführt, so dass Sie beim nächsten Start desselben Befehls vom Punkt stop aus starten.

Verwandte Themen