複数の挿入を使用してスクリプトを作成する必要があります。私もそれを行い、Toad でスクリプトを実行しました。スクリプトは約 35 ~ 40 分で完了しました。
次に、そのスクリプトを autosys に適用し、再度実行しました (これが本来の使用方法です)。そして今度は、1.5時間以上走り続けました。
Oracle でそのアクティブなセッションを手動で強制終了する必要があります。
私のスクリプトを見て、意図した 40 分の時間枠で完了せず、1.5 時間以上実行し続けた理由を教えてください。
編集:「コミット」などの一般的なコマンドは、Autosys によって呼び出される親スクリプトで呼び出されることに言及したいと思います。私のスクリプトは、親スクリプトで呼び出された子スクリプトの 1 つです。
-- Begining of Consolidated queries for Slow performing Talend Jobs
SET SERVEROUTPUT ON;
spool Consolidated.log;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
SET DEFINE OFF;
ALTER SESSION SET GLOBAL_NAMES=FALSE;
DECLARE
ExtractType NUMBER(9);
RecordsExtracted NUMBER(9);
CurStatus NUMBER(9);
StartDate date;
ErrorMessage NVARCHAR2(1000);
LastExtrctTimestamp DATE;
-- TABLE1
BEGIN
StartDate := sysdate;
ExtractType := 44;
DELETE FROM Table1;
INSERT INTO Table1
SELECT Statement....;
RecordsExtracted := SQL%RowCount;
DBMS_OUTPUT.put_line('Table1 Records Extracted:' || RecordsExtracted);
-- On Success
CurStatus := 2;
ErrorMessage := 'Table1 Complete';
INSERT INTO ExtractRecords(ExtractType, RecordsExtracted, Status, ExtractTimestamp, StartDate, EndDate, ErrorMessage)
VALUES (ExtractType, RecordsExtracted, CurStatus, SysDate, StartDate, SysDate, ErrorMessage);
INSERT INTO LoadRecords (LoadType,Status,LoadTimestamp,StartDate,EndDate)
VALUES (ExtractType, CurStatus, SysDate, StartDate, SysDate);
-- TABLE2 RESULTS
StartDate := sysdate;
ExtractType := 78;
DELETE FROM Table2;
INSERT INTO Table2
SELECT Statement....;
RecordsExtracted := SQL%RowCount;
DBMS_OUTPUT.put_line('Table2 Records Extracted:' || RecordsExtracted);
-- On Success
CurStatus := 2;
ErrorMessage := 'Table2 Complete';
INSERT INTO ExtractRecords(ExtractType, RecordsExtracted, Status, ExtractTimestamp, StartDate, EndDate, ErrorMessage)
VALUES (ExtractType, RecordsExtracted, CurStatus, SysDate, StartDate, SysDate, ErrorMessage);
INSERT INTO LoadRecords (LoadType,Status,LoadTimestamp,StartDate,EndDate)
VALUES (ExtractType, CurStatus, SysDate, StartDate, SysDate);
-- TABLE3
StartDate := sysdate;
ExtractType := 81;
DELETE FROM Table3;
INSERT INTO Table3
SELECT Statement....;
RecordsExtracted := SQL%RowCount;
DBMS_OUTPUT.put_line('Table3 Records Extracted:' || RecordsExtracted);
-- On Success
CurStatus := 2;
ErrorMessage := 'Table3 Complete';
INSERT INTO ExtractRecords(ExtractType, RecordsExtracted, Status, ExtractTimestamp, StartDate, EndDate, ErrorMessage)
VALUES (ExtractType, RecordsExtracted, CurStatus, SysDate, StartDate, SysDate, ErrorMessage);
INSERT INTO LoadRecords (LoadType,Status,LoadTimestamp,StartDate,EndDate)
VALUES (ExtractType, CurStatus, SysDate, StartDate, SysDate);
-- TABLE4
StartDate := sysdate;
ExtractType := 57;
DELETE FROM Table4;
INSERT INTO Table4
SELECT Statement....;
RecordsExtracted := SQL%RowCount;
DBMS_OUTPUT.put_line('Table4 Records Extracted:' || RecordsExtracted);
-- On Success
CurStatus := 2;
ErrorMessage := 'Table4 Complete';
INSERT INTO ExtractRecords(ExtractType, RecordsExtracted, Status, ExtractTimestamp, StartDate, EndDate, ErrorMessage)
VALUES (ExtractType, RecordsExtracted, CurStatus, SysDate, StartDate, SysDate, ErrorMessage);
INSERT INTO LoadRecords (LoadType,Status,LoadTimestamp,StartDate,EndDate)
VALUES (ExtractType, CurStatus, SysDate, StartDate, SysDate);
END;
spool off;
exit;
/