2017-05-09 116 views
0

Oracle有一個查詢來選擇表的現有索引。 例如:選擇表索引的列

SELECT * FROM user_indexes WHERE table_name = 'CM_WCEL'; 

但我需要重新創建索引創建語句。 如何獲取受影響的列等其他信息?

+3

要重新創建'創建index'聲明,最好使用' –

+0

你在'dba_ind_columns'檢查'DBMS_METADATA.GET_DDL()或'user_ind_columns' –

+0

@a_horse_with_no_name該方法返回的所有DDL吧?我需要解析它並找到索引信息? –

回答

3

要獲得完整的DDL每個索引,使用dbms_metadata.get_ddl()

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

的DDL返回爲CLOB。根據您使用的SQL客戶端,您可能需要進行一些配置更改才能看到完整的代碼。例如在SQL * Plus中,在運行select語句之前,您需要一些東西set long 60000

1

這應該提供必要的信息:

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

按照創建表,在以下表格將有請求的信息。

SELECT * 
FROM user_ind_columns 
WHERE table_name = 'CM_WCEL'; 

SELECT * 
FROM dba_ind_columns 
WHERE table_name = 'CM_WCEL';