2017-05-09 2 views
0

Oracle verfügt über eine Abfrage, die die vorhandenen Indizes einer Tabelle auswählt. Zum Beispiel:Wählen Sie die Spalten des Tabellenindex

SELECT * FROM user_indexes WHERE table_name = 'CM_WCEL'; 

Aber ich brauche die Indexerstellung Anweisung neu zu erstellen. Wie kann ich die verbleibenden Informationen wie die betroffenen Spalten usw. erhalten?

+3

Um die 'erstellen index' Anweisung neu, es ist besser' dbms_metadata.get_ddl zu verwenden() ' –

+0

Sie in' dba_ind_columns' oder 'user_ind_columns' –

+0

@a_horse_with_no_name Das eingecheckt haben alle Methode gibt die DDL richtig? Ich muss es danach analysieren und die Indexinformationen finden? –

Antwort

3

Um die komplette DDL für jeden Index zu erhalten, verwenden dbms_metadata.get_ddl():

select index_name, dbms_metadata.get_ddl('INDEX', index_name) as ddl 
from user_indexes 
where table_name = CM_WCEL'; 

Die DDL ist als CLOB zurück. Je nachdem, welchen SQL-Client Sie verwenden, benötigen Sie möglicherweise einige Konfigurationsänderungen, damit Sie den vollständigen Code sehen können. z.B. In SQL * Plus benötigen Sie etwas set long 60000, bevor Sie die Select-Anweisung ausführen.

1

sollte diese Informationen benötigt liefern:

select index_name, column_name 
from user_ind_columns 
where table_name = 'CM_WCEL'; 
3

Gemäß der Schaffung Tabelle, müssen die folgenden Tabellen, um die gewünschten Informationen.

SELECT * 
FROM user_ind_columns 
WHERE table_name = 'CM_WCEL'; 

oder

SELECT * 
FROM dba_ind_columns 
WHERE table_name = 'CM_WCEL'; 
Verwandte Themen