Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中获取有关索引和表所有者的信息?_Sql_Oracle - Fatal编程技术网

Sql 如何在Oracle中获取有关索引和表所有者的信息?

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语句来显示表用户索引的数据字典中存在的索引名称、表名称、表所有者和唯一性。任何帮助都会很好。我的问题是我无法找到如何显示索引名和表所有者

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
    ;