在基表A和B上创建了一个视图VW。有一个ETL过程将数据加载到T_A和T_B中。数据加载完成后,作业将触发重命名过程。此过程将T_A重命名为A,表A重命名为T_A。类似地,T_B表重命名为B,表B重命名为T_B。
当重命名发生时,视图变得无效,并使其有效必须再次编译。
要解决此问题,请在重命名过程的末尾添加视图编译语句。它工作正常,但问题是让用户A访问视图数据,同时触发重命名过程。现在,只要用户A正在访问视图,重命名过程就无法编译视图。
请分享您对如何克服这个问题的看法。
地塞米松。
答案 0 :(得分:0)
当对基础view
进行更改时,依赖table
无效,而Oracle将在访问时自动重新编译view
。
因此,在您的示例中,VW
在<{1}}被删除时无效,
当Table A
重命名为T_A
时仍然无效,但只要有人查询A
,就会自动重新编译,查询正常运行, view
变为有效。
因此无需在脚本中明确重新编译view
。