sql - sintaxis - ¿Cómo obtengo información sobre el propietario de un índice y una tabla en Oracle?
sentencias sql server (3)
Quiero escribir una declaración de selección para mostrar el nombre de índice, el nombre de tabla, el propietario de tabla y la singularidad que existen en el diccionario de datos para los índices de usuario de la tabla. Cualquier ayuda sería genial. Mi problema es que no he podido encontrar la forma de mostrar un nombre de índice y el propietario de la tabla.
SELECT owner, table_name FROM dba_tables;
Esto da la mayor parte de ello.
De acuerdo con los docs , puedes hacer:
select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from USER_INDEXES
o
select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from ALL_INDEXES
Si quieres todos los índices ...
Lo siguiente puede ayudar a darle la necesidad que necesita:
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
;
Para mi caso de uso, quería los nombres y el orden de las columnas que están en los índices (para poder recrearlos en un motor de base de datos diferente después de migrar a AWS). Lo siguiente fue lo que usé, en caso de que sea de utilidad para alguien más:
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
;
select index_name, column_name
from user_ind_columns
where table_name = ''NAME'';
O usa esto:
select TABLE_NAME, OWNER
from SYS.ALL_TABLES
order by OWNER, TABLE_NAME
Y para los índices:
select INDEX_NAME, TABLE_NAME, TABLE_OWNER
from SYS.ALL_INDEXES
order by TABLE_OWNER, TABLE_NAME, INDEX_NAME