ラインテーブルの列サイズが変更されたときにマテリアライズドビューの列サイズを変更するにはどうすればよいですか? これは Linux 上の oracle 11gR2 db です。MVを再コンパイルしようとしましたが、うまくいきませんでした。この質問を別のデータベース サイトに自動的に移行しないでください。私はここにとどまりたいです。ありがとう!
19217 次
1 に答える
14
テーブルを変更する場合は、マテリアライズド ビューも変更する必要があります。
--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
于 2012-12-21T04:16:28.990 に答える