web-dev-qa-db-fra.com

Comment obtenir des informations sur un propriétaire d'index et de table dans Oracle?

Je souhaite écrire une instruction select pour afficher le nom_index, le nom_table, le propriétaire_table et l'unicité existant dans le dictionnaire de données pour les index utilisateur de la table. Toute aide est la bienvenue. Mon problème est que je n'ai pas pu trouver comment afficher un nom d'index et un propriétaire de table. 

SELECT owner, table_name   FROM dba_tables;

Cela en donne le plus.

21
Randy

Selon la docs , vous pouvez simplement faire:

select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from USER_INDEXES

ou

select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from ALL_INDEXES

si vous voulez tous les index ...

47
beny23
 select index_name, column_name
 from user_ind_columns
 where table_name = 'NAME';

OU utilisez ceci:

select TABLE_NAME, OWNER 
from SYS.ALL_TABLES 
order by OWNER, TABLE_NAME 

Et pour les index:

select INDEX_NAME, TABLE_NAME, TABLE_OWNER 
from SYS.ALL_INDEXES 
order by TABLE_OWNER, TABLE_NAME, INDEX_NAME
9
Alon Adler

Ce qui suit peut aider à vous donner envie dont vous avez besoin:

SELECT
    index_owner, index_name, table_name, column_name, column_position
FROM DBA_IND_COLUMNS
ORDER BY
    index_owner, 
    table_name,
    index_name,
    column_position
    ;

Pour mon cas d'utilisation, je voulais les noms de colonne et leur ordre dans les index (pour pouvoir les recréer dans un moteur de base de données différent après la migration vers AWS). Voici ce que j'ai utilisé, au cas où il serait utile à quelqu'un d'autre: 

SELECT
    index_name, table_name, column_name, column_position
FROM DBA_IND_COLUMNS
WHERE
    INDEX_OWNER = 'FOO'
    AND TABLE_NAME NOT LIKE '%$%'
ORDER BY
    table_name,
    index_name,
    column_position
    ;
0
James Oravec