Sql 如何在Oracle中获取有关索引和表所有者的信息?
我想编写一个select语句来显示表用户索引的数据字典中存在的索引名称、表名称、表所有者和唯一性。任何帮助都会很好。我的问题是我无法找到如何显示索引名和表所有者Sql 如何在Oracle中获取有关索引和表所有者的信息?,sql,oracle,Sql,Oracle,我想编写一个select语句来显示表用户索引的数据字典中存在的索引名称、表名称、表所有者和唯一性。任何帮助都会很好。我的问题是我无法找到如何显示索引名和表所有者 SELECT owner, table_name FROM dba_tables; 这提供了大部分功能。根据,您只需执行以下操作: select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from USER_INDEXES 或 如果你想要所有的索引 select index
SELECT owner, table_name FROM dba_tables;
这提供了大部分功能。根据,您只需执行以下操作:
select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from USER_INDEXES
或
如果你想要所有的索引
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
以下内容可能有助于满足您的需求:
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
;
下面是两个简单的查询,您可以使用它们检查在Oracle表上创建的索引 选择索引名称 来自dba_索引 其中table_name='&table_name' 和所有者='&表_所有者'; 选择索引名称 从用户索引 其中table_name='&table_name'; 请在下面查看更多详细信息和索引大小。
以下内容对我有所帮助,因为我没有DBA访问权限,而且还需要列名 见: 选择ind.table|u owner |‘.| | ind.table|u name作为表, 索引名称, LISTAGGind列名称,,' 在GROUPorder中,按列的ind_col.column_position作为列, 索引类型, 唯一性 从sys.all_索引ind 连接sys.all_ind_col ind_col 在ind.owner=ind\u col.index\u owner上 和ind.index\u name=ind\u col.index\u name 其中ind.table_owner不在“匿名”、“CTXSYS”、“DBSNMP”、“EXFSYS”中, “MDSYS”、“管理视图”、“OLAPSYS”、“OWBSYS”、“ORDPLUGINS”、“ORDSYS”, "系统信息模式","系统","系统人","系统","TSMSYS","WK测试",, ‘WKPROXY’、‘WMSYS’、‘XDB’、‘APEX_040000’、‘APEX_040200’, “DIP”、“FLOWS_30000”、“FLOWS_FILES”、“MDDATA”、“ORACLE_OCM”、“XS$NULL”, “SPATIAL_CSW_ADMIN_USR”、“SPATIAL_WFS_ADMIN_USR”、“PUBLIC”, 'LBACSYS','OUTLN','WKSYS','APEX\u PUBLIC\u USER' -和ind.table_name='TableNameGoeShereifyouwantSpecifictable' 按ind.table\u所有者分组, ind.table_名称, 索引名称, 索引类型, 唯一性 由ind.table_所有者订购, ind.table_名称;
很好,很体贴!
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
;