问题描述
嗨
我将创建一个表,然后在其顶部创建一个物化视图日志,在其中我将使用sequence关键字专门对某些列进行排序。
请注意,我用 “序列 (col3,col2,col1)” 创建mviewlog
现在,当我检查这个对象的DDL,我得到这个:
注意,排序是错误的 (似乎排序总是按字母顺序):
除此之外,这些视图中不应该也有一些订购信息 (例如column_id等):
问候
劳尔·考比
我将创建一个表,然后在其顶部创建一个物化视图日志,在其中我将使用sequence关键字专门对某些列进行排序。
请注意,我用 “序列 (col3,col2,col1)” 创建mviewlog
SQL> create table raulkaubi.mvlog_test1(id number PRIMARY KEY, col1 date, col2 number, col3 number); create materialized view log on raulkaubi.mvlog_test1 with rowid, sequence (col3, col2, col1) including new values;
现在,当我检查这个对象的DDL,我得到这个:
set pagesize 0
set lines 200
set long 90000
set feedback off
set echo off
select dbms_metadata.get_ddl('MATERIALIZED_VIEW_LOG','MLOG$_MVLOG_TEST1','RAULKAUBI') from dual;
CREATE MATERIALIZED VIEW LOG ON "RAULKAUBI"."MVLOG_TEST1"
PCTFREE 10 PCTUSED 30 INITRANS 1 MAXTRANS 255 LOGGING
TABLESPACE "USERS"
WITH ROWID, SEQUENCE ( "COL1", "COL2", "COL3" ) INCLUDING NEW VALUES
注意,排序是错误的 (似乎排序总是按字母顺序):
SEQUENCE ( "COL1", "COL2", "COL3" )
除此之外,这些视图中不应该也有一些订购信息 (例如column_id等):
DBA_MVIEW_LOG_FILTER_COLS ALL_MVIEW_LOG_FILTER_COLS
问候
劳尔·考比
专家解答
你想在这里做什么?
sequence子句与列顺序无关。从文档中:
SEQUENCE
Specify SEQUENCE to indicate that a sequence value providing additional ordering information should be recorded in the materialized view log. Sequence numbers are necessary to support fast refresh after some update scenarios.
列列表说明要存储在实体化视图日志中的值。你可以独立使用这些。使用序列对过滤器列没有影响:
请注意,MV日志第一次包括序列 $ $; 第二次它省略了这一点,而是包括列C2,C1。
也就是说,我可以看到get_ddl以字母顺序返回这些列:
如果您需要此功能,请与支持人员交谈以提出错误。同样,如果您希望在字典视图中提供此信息,则会提出增强请求。
sequence子句与列顺序无关。从文档中:
SEQUENCE
Specify SEQUENCE to indicate that a sequence value providing additional ordering information should be recorded in the materialized view log. Sequence numbers are necessary to support fast refresh after some update scenarios.
列列表说明要存储在实体化视图日志中的值。你可以独立使用这些。使用序列对过滤器列没有影响:
create table t ( id int primary key, c1 int, c2 int ); create materialized view log on t with rowid, sequence; desc mlog$_t; Name Null? Type M_ROW$$ VARCHAR2(255) SEQUENCE$$ NUMBER SNAPTIME$$ DATE DMLTYPE$$ VARCHAR2(1) OLD_NEW$$ VARCHAR2(1) CHANGE_VECTOR$$ RAW(255 BYTE) XID$$ NUMBER drop materialized view log on t; create materialized view log on t with rowid, ( c2, c1 ); desc mlog$_t; Name Null? Type ID NUMBER C2 NUMBER C1 NUMBER M_ROW$$ VARCHAR2(255) SNAPTIME$$ DATE DMLTYPE$$ VARCHAR2(1) OLD_NEW$$ VARCHAR2(1) CHANGE_VECTOR$$ RAW(255 BYTE) XID$$ NUMBER
请注意,MV日志第一次包括序列 $ $; 第二次它省略了这一点,而是包括列C2,C1。
也就是说,我可以看到get_ddl以字母顺序返回这些列:
select dbms_metadata.get_ddl ( 'MATERIALIZED_VIEW_LOG', 'MLOG$_T', user ) from dual; CREATE MATERIALIZED VIEW LOG ON "CHRIS"."T" PCTFREE 10 PCTUSED 30 INITRANS 1 MAXTRANS 255 LOGGING TABLESPACE "USERS" WITH PRIMARY KEY, ROWID ( "C1", "C2" ) EXCLUDING NEW VALUES
如果您需要此功能,请与支持人员交谈以提出错误。同样,如果您希望在字典视图中提供此信息,则会提出增强请求。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




