我想知道如何在 Oracle 中检索索引信息

I would like to know how to retrieve index information in Oracle

您使用的数据库是 Oracle 9i 到 21c。

/* New Table1 */
CREATE TABLE TABLE1 (
    COL VARCHAR(25) NOT NULL, 
    COL2 VARCHAR(25) NOT NULL, 
    COL3 VARCHAR(25) NOT NULL,
    COL4 VARCHAR(25) NOT NULL, 
    COL5 VARCHAR(25) NOT NULL,
    COL6 VARCHAR(25) NOT NULL 
);

CREATE UNIQUE INDEX PK_TABLE1
    ON TABLE1 (
        COL ASC,
        COL2 ASC,
        COL3 ASC,
        COL4 ASC,
        COL5 ASC,
        COL6 ASC
    )
    STORAGE (
        BUFFER_POOL DEFAULT
    )
    NOLOGGING
    ONLINE
    COMPUTE STATISTICS
    COMPRESS 3
    SORT
    NOPARALLEL;

ALTER TABLE TABLE1
    ADD
        CONSTRAINT PK_TABLE1
        PRIMARY KEY (
            COL,
            COL2,
            COL3,
            COL4,
            COL5,
            COL6
        );

我想在这里查询计算统计、排序和联机值。 我应该检查哪个 table?

仅在 9i 和 21c 中检查时,无法在 ALL_INDEXES table 中搜索。

您想在这里解决什么问题?

您提到的三个属性不是索引的属性。它们是关于如何建立索引的说明。我很难想出一个理由来说明在创建索引时了解是否收集了统计信息是有用的。或者在创建索引之前是否对 table 进行了排序。或者在索引构建期间是否允许 table 上的 DML。

您可以检查索引是否存在统计信息。创建索引后,您可以立即查看 all_indexes 中的 last_analyzed 列以查看是否收集了统计信息并推断该参数的值是什么(尽管自 compute statistics 选项在 Oracle 总是收集统计信息的较新版本中被描述和忽略,这不太有用)。但是如果你在系统 运行 一年后回来,统计数据可能已经收集了很多次(除非像古老的 9i 数据库这样的极端情况仍然是 运行 rule-based 优化器).