【问题标题】:How do I identify all of the invisible columns in an Oracle database?如何识别 Oracle 数据库中的所有不可见列?
【发布时间】:2020-05-05 13:14:23
【问题描述】:

我创建了一个带有不可见列的表:

CREATE C39293.JUNK (
  id          NUMBER,
  JUNKCOL VARCHAR2(50) INVISIBLE
);

验证表已创建:

select * from all_tab_columns where table_name = 'JUNK'

输出:

1   THE_OWNER_SCHEMA    JUNK    JUNKCOL VARCHAR2            50          Y           (WideMemo)                                  CHAR_CS 50  NO  NO      50  B   NO  YES NONE    NO  NO          
2   THE_OWNER_SCHEMA    JUNK    ID  NUMBER          22          Y   1       (WideMemo)                                          NO  NO      0       NO  YES NONE    NO  NO          

我希望这个视图能够显示所有不可见的列。

select * from dba_unused_col_tabs;

没有找到记录

如何查询数据库中所有不可见的列?

【问题讨论】:

  • 未使用和不可见是两个不同的术语。如果您ALTER TABLE T SET UNUSED(c),则未使用该列。它在不从磁盘释放任何数据的情况下禁用列的使用,从而保持数据库的相同性能。您稍后在一天的空闲时间删除该列。不可见的列不会显示给应用程序,但它仍然存在并且工作方式相同

标签: oracle


【解决方案1】:
SELECT table_name, column_name, hidden_column 
  FROM user_tab_cols 
 WHERE hidden_column='YES';

或者,当您询问数据库中的所有列时:

SELECT owner, table_name, column_name, hidden_column 
  FROM all_tab_cols 
 WHERE hidden_column='YES';

编辑:

ALL_TAB_COLS 在another question 中有很好的解释

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2011-05-08
    • 2012-07-05
    • 2014-01-10
    • 2017-03-28
    • 2017-03-12
    相关资源
    最近更新 更多