SQL を再定義する必要があるマテリアライズド ビューがあります。db リンクを介してビューにアクセスする外部システムがあり、モンスター ビューはビュー内のデータを更新するのに 5 分かかります。ビューの SQL を再定義する方法を私が知っている唯一の方法は、それを削除して再作成することですが、外部システムがテーブルを見つけられなかったり、完全なデータ セットを持っていなかったりすると、非常に悪いことになります。ダウンタイムをできるだけ少なくする必要があります。
これをネイティブに、またはよりエレガントに行う方法はありますか:
- マテリアライズド ビューのパブリック シノニムを作成し、そのビューを使用するすべてのものが代わりにシノニムを使用するようにします。
- 新しい SQL で新しいマテリアライズド ビューを作成する
- シノニムを変更して、新しいビューを指すようにします
- 古いビューを削除します。
これを動的に行うためのコードを持っていますが、それは本当に醜くなっています。これを処理するためのより良い方法があるはずです。