在 Oracle 运行时在相同模式的两个表之间切换视图

Switching Views between two tables of the same schema in runtime in Oracle

我的客户有两个具有相同列的 table,我称它们为 T1 和 T2。

一个视图,V指向T1,而一些批处理在T2上工作。必须截断 T2 并重新加载数据。 T1 在 T2

上重新加载之前拥有最新数据

批处理完成后,视图将替换为指向 T2 table 的 V。这种切换每天来回进行一次。

我的问题是:

  1. 为 T2 创建或替换 VIEW V 时;完成切换 V 以指向 T2 而不是 T1 并且对 Oracle 访问 V 的并发查询通过使用 SQL 或存储过程不断进入,同时修改 VIEW V ,是否会有一个时间点切换查询可能会失败。

  2. 是否有更好的设计,而不是在 table 之间切换 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