1

我有一个使用 NOT INMEMORY 列创建的表:

CREATE TABLE myTable (
  foo VARCHAR2(20 BYTE) NOT NULL,
  bar VARCHAR2(20 BYTE) NOT NULL,
  baz VARCHAR2(2000 BYTE) NOT NULL,
);
ALTER TABLE myTable INMEMORY;
ALTER TABLE myTable NO INMEMORY ("baz") ;

我需要做的是通过查询静态数据字典视图来识别 NO INMEMORY 列,但它出现了all_tablesall_tab_columns并且类似的不携带此信息,而且我在文档中找不到提及。有没有一种观点?

4

1 回答 1

0

您可以使用ALL_TABLESV$IM_COLUMN_LEVEL视图来获取信息。该信息是在Oracle-Base上找到的。

SQL> select inmemory from all_tables
  2* where table_name = 'MYTABLE';

   INMEMORY
___________
ENABLED

SQL> SELECT table_name,
  2         segment_column_id,
  3         column_name,
  4         inmemory_compression
  5  FROM   v$im_column_level
  6  WHERE  table_name = 'MYTABLE'
  7* ORDER BY segment_column_id;

   TABLE_NAME    SEGMENT_COLUMN_ID    COLUMN_NAME    INMEMORY_COMPRESSION
_____________ ____________________ ______________ _______________________
MYTABLE                          1 FOO            DEFAULT
MYTABLE                          2 BAR            DEFAULT
MYTABLE                          3 BAZ            NO INMEMORY
于 2021-12-23T14:18:56.230 回答