マテビューをリフレッシュ後インデックス無効?
883738Sep 12 2011 — edited Sep 13 2011Oracle 10g
お世話になります。
マテリアライズド・ビューを使用し、Oracle Textでの全文検索を行いたく
下記手順を実施しました。
1.マテビュー作成
create materialized view MV_AAA refresh complete on demmand as
select * from tblA union all select * from tblB
2.インデックス等設定
begin
ctx_ddl.set_attribute('multi_item','columns','column1,column2,column3);
ctx_ddl.create_preference('japanese_lexere','JAPANESE_LEXER');
ctx_ddl.create_preference('wordlist','BASIC_WORDLIST');
ctx_ddl.set_attribute('wordlist','SUBSTRING_INDEX','TRUE');
end;
create index MV_AAA_index on MV_AAA(column1) indextype is ctxsys.context
parameters('datastore multi_item lexeer japanese_lexer wordlist wordlist');
3.ここでselectを実行すると正常に抽出されます。
select * from MV_AAA where contanins(column1,'AAA')> 0
4.次にリフレッシュを実行
bagin
dbms_mview.refresh('MV_AAA','c');
end;
5.ここで再度selectを実行すると、該当データ無となります。
select * from MV_AAA where contanins(column1,'AAA')> 0
6.インデックスを削除し再作成
drop index MV_AAA_index;
create index MV_AAA_index on MV_AAA(column1) indextype is ctxsys.context
parameters('datastore multi_item lexeer japanese_lexer wordlist wordlist');
7.再度selectを実行すると、正常にデータが抽出されます。
select * from MV_AAA where contanins(column1,'AAA')> 0
4のリフレッシュをすることで、抽出データが0となる(エラーは発生せず)のは
なぜでしょうか?
リフレッシュする度、インデックスを再作成すべきなのでしょうか?