Using MVIEWS to take in time data snapshot of tables
DBMS_MVIEW.REFRESH



  list - Comma-delimited list of materialized views that you want to
  refresh. ... Alternatively, you may pass in a PL/SQL index-by table of type DBMS_UTILITY.UNCL_ARRAY, where each element is the name of a materialized view.


  atomic_refresh - If this parameter is set to true, then the list of materialized views
  is refreshed in a single transaction. All of the refreshed
  materialized views are updated to a single point in time. If the
  refresh fails for any of the materialized views, none of the
  materialized views are updated.

Maybe flashback query. Using Oracle Flashback Query DBMS_FLASHBACK.ENABLE_AT_TIME.