Как получить информацию об индексе и владельце таблицы в Oracle? - PullRequest
22 голосов
/ 06 октября 2011

Я хочу написать оператор выбора для отображения index_name, table_name, table_owner и уникальности, которые существуют в словаре данных для пользовательских индексов таблицы.Любая помощь будет отличной.Моя проблема в том, что я не смог найти способ отображения index_name и владельца таблицы.

SELECT owner, table_name   FROM dba_tables;

Это дает большую часть.

Ответы [ 3 ]

51 голосов
/ 06 октября 2011

Согласно документам , вы можете просто сделать:

select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from USER_INDEXES

или

select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from ALL_INDEXES

если вы хотите все индексы ...

10 голосов
/ 06 октября 2011
 select index_name, column_name
 from user_ind_columns
 where table_name = 'NAME';

ИЛИ используйте это:

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

И для индексов:

select INDEX_NAME, TABLE_NAME, TABLE_OWNER 
from SYS.ALL_INDEXES 
order by TABLE_OWNER, TABLE_NAME, INDEX_NAME
1 голос
/ 10 апреля 2018

Следующие сведения могут помочь вам удовлетворить ваши потребности:

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
    ;

Для моего случая использования я хотел, чтобы имена столбцов и порядок их присутствия были в индексах (чтобы я мог воссоздать их в другом ядре базы данных после перехода на AWS). Следующее было тем, что я использовал, на случай, если оно пригодится кому-либо еще:

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
    ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...