title: Materialized View Refresh with changing synonym pointer in SQL
body: <p>I have two tables, <code>TABLE_1</code> and <code>TABLE_2</code>.  Then we have a synonym called <code>TABLE</code> that points to either <code>TABLE_1</code> or <code>TABLE_2</code>.  When <code>TABLE_1</code> is active, an ETL populates <code>TABLE_2</code> and when the run is complete, it switches the <code>TABLE</code> synonym to <code>TABLE_2</code> to make it the active table.  Then I have a materialized view that does something like this as the SQL:  <code>select * from TABLE</code>.  What I am seeing happen is that after the materialize view runs the first time, it caches the actual table the synonym is pointing too.  So when the ETL runs and flips the synonym to point at <code>TABLE_2</code>, when a complete refresh is done on the materialized view, it still thinks the synonym is pointed at <code>TABLE_1</code>.  Why when I do a complete refresh does the materialized view not pick up the new synonym pointer to <code>TABLE_2</code>?</p>