【问题标题】:What to do to change materialized view column size when under line table column size changed?下线表列大小改变时,如何改变物化视图列大小?
【发布时间】:2012-12-21 12:16:28
【问题描述】:

line table column size改变时,物化视图列大小改变怎么办?这是 Linux 上的 oracle 11gR2 db。我尝试重新编译MV,它没有工作。请不要将此问题自动迁移到另一个数据库站点,我想留在 stackoverflow 中。谢谢!

【问题讨论】:

  • 你试过alter materialized view my_mv modify (my_column varchar2(new_size));吗?
  • 好主意,让我试试,谢谢!
  • 效果很好,感谢 Jonearles!
  • 在重新编译 mv 时回答 Adam 的问题,没有任何改变...
  • Jonearles,如果您输入相同的内容作为答案,那么我会将您的答案标记为答案。再次感谢!

标签: oracle oracle11g


【解决方案1】:

如果你改变表,你也必须改变物化视图。

--Create simple table and materialized view
create table test1(a varchar2(1 char));
create materialized view mv_test1 as select a from test1;

--Increase column width of column in the table
alter table test1 modify (a varchar2(2 char));

--Insert new value that uses full size
insert into test1 values('12');

--Try to compile and refresh the materialized view
alter materialized view mv_test1 compile;
begin
    dbms_mview.refresh(user||'.MV_TEST1');
end;
/

ORA-12008: error in materialized view refresh path
ORA-12899: value too large for column "JHELLER"."MV_TEST1"."A" (actual: 2, maximum: 1)
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2563
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2776
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2745
ORA-06512: at line 3

--Increase column width of column in the materialized view and refresh
alter materialized view mv_test1 modify (a varchar2(2 char));
begin
    dbms_mview.refresh(user||'.MV_TEST1');
end;
/
select * from mv_test1;
A
--
12

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2020-07-19
    相关资源
    最近更新 更多