我的客户有两个表具有相同的列,我将它们称为T1和T2。
一个视图,V指向T1,而某些批处理在T2上运行。 T2必须被截断,然后重新加载数据。在重新加载T2之前,T1具有最新数据
批处理完成后,将视图替换为V,指向T2表。每天来回切换一次。
我的问题是:
为T2创建或替换VIEW V时;完成将V切换为指向T2而不是T1的操作,并且对Oracle的并发查询访问是通过使用SQL或存储过程不断进行的,同时修改了VIEW V,在切换查询时会有一个地方可能会失败。
是否有更好的设计,可以在表之间重新加载和读取数据,而不用在表之间进行VIEW V切换。
我们公司也有类似的流程。这是通过使用同义词而不是视图来处理的,例如:
create or replace synonym tab_syn for user_tables; -- syn set-up for the process
select count(*) from tab_syn; -- run your process
create or replace synonym tab_syn for all_tables; -- syn next run
select count(*) from tab_syn; -- next run