This is a sample anonymous block to run the transfer in small chunks (in the example, 7 days worth of data are transferred at 600 seconds blocks)
declare v_now date;
v_delay_in_seconds number;
begin
v_now := sysdate;
for thedelay in reverse 1.. 7 * 24 * 6 loop
v_delay_in_seconds := thedelay * 600;
insert into WLI_REPORTING_ARCHIVE
(
MSG_GUID, HOST_NAME, MSG_LABELS, ERRORCODE, ERRORDESCRIPTION,
INTERFACEID, BUSINESSID, BUSINESSUNIQUEID, EVENTTYPE,
EVENTOCCUREDON, TECHNICALMESSAGEID, PATHOFSERVICE,
FILENAME, ISERROR, EVENTOCCUREDON_EPOCH, DB_TIMESTAMP, DATA_VALUE
)
select A.MSG_GUID, A.HOST_NAME, A.MSG_LABELS, A.ERRORCODE, A.ERRORDESCRIPTION,
A.INTERFACEID, A.BUSINESSID, A.BUSINESSUNIQUEID, A.EVENTTYPE,
A.EVENTOCCUREDON, A.TECHNICALMESSAGEID, A.PATHOFSERVICE,
A.FILENAME, A.ISERROR, A.EVENTOCCUREDON_EPOCH, A.DB_TIMESTAMP, c.data_value
from WLI_QS_REPORT_VIEW A, WLI_QS_REPORT_ATTRIBUTE B, WLI_QS_REPORT_DATA C
where A.MSG_GUID = B.MSG_GUID and C.MSG_GUID = B.MSG_GUID and ( v_now - B.DB_TIMESTAMP) * 24 * 3600 > v_delay_in_seconds;
WLI_REP_ARCHIVE_LOG_INS('1:INSERT', To_char( SQL%ROWCOUNT ) || ' records inserted into WLI_REPORTING_ARCHIVE older than ' || v_delay_in_seconds || ' seconds');
delete from WLI_QS_REPORT_ATTRIBUTE B where ( v_now - B.DB_TIMESTAMP) * 24 * 3600 > v_delay_in_seconds ;
WLI_REP_ARCHIVE_LOG_INS('2:DELETE', To_char( SQL%ROWCOUNT ) || ' records deleted from WLI_QS_REPORT_ATTRIBUTE older than ' || v_delay_in_seconds || ' seconds');
commit;
end loop;
end;
/
No comments:
Post a Comment
comments where you are promoting your business will be marked as SPAM :o)