For download consistent data from OLTP-database make proc:
procedure move_tables_to_mst_layer(v_sync sync_data) is
pragma autonomous_transaction;
v_src_table varchar2(128);
sql_stm varchar2(30000);
v_proc varchar2(128);
begin
execute immediate 'alter session SET ISOLATION_LEVEL = SERIALIZABLE';
for rec in (select a_tbl_name as tblnm from a_tables
where a_tbl_type in ('T0', 'T1')
order by a_tbl_order
)
loop
v_src_table := 'STG_'||rec.tblnm;
sql_stm := 'insert /*+ append */ into '||v_src_table||' select t1.*
from '||rec.tblnm||' t1
where row_seq > '||v_sync.v_rowseq
;
--dbms_output.put_line(sql_stm);
execute immediate sql_stm;
--commit;
end loop;
commit;
execute immediate 'alter session SET ISOLATION_LEVEL = READ COMMITTED';
exception
when others then
errpck.raise_n_stop('SYNC', v_proc, 'Procedure move_tables_to_mst_layer');
end move_tables_to_mst_layer;
Version Oracle 12c. Field indicator row_seq - populated by trgger for each tables. For any DML operation (insert or update) :new.row_seq = seq_rowseq.nextavl, where seq_rowseq - global sequence. Periodic (once per 6-12 hours) occurs error foreign key no parent. Its mean what procedure inserted new records from child-table and not inserted new records from parent-table - i dont know how its happens. May be using execute immediate exclude isolation level serializable?