我对 Oracle 很陌生,所以如果这在其他地方有所涉及,请与我联系。
我有一个运行作业的 MS SQL 框,调用批处理文件在 SQLPLUS 中运行脚本到 ETL 到 Oracle 10G 数据库。
我的脚本出现间歇性问题,导致 ETL 失败,在没有错误日志记录的情况下,这是一个未知数。当前的解决方案根据脚本完成前后的行数突出显示加载失败。
我希望能够将运行有问题的脚本时遇到的任何错误插入到接收数据负载的同一数据库上的错误日志表中。
脚本没有什么太技术性的东西,在高层次上是通过 SQL 代码执行以下步骤,没有过程调用。
- 使用日期和当前行数更新表
- 将数据从远程源提取到临时表中
- 将暂存表合并到中间暂存表中
- 执行一些转型行动
- 将中间临时表合并到最终的 Fact 表中
- 使用新的行数更新表
请告知是否可以通过 SQLPLUS 将错误消息、代码、行号等传递到数据库表中?如果是这样,实现这一目标的最简单方法。
下面显示了脚本的前几行以提供风味
/*set echo off*/
set heading off
set feedback off
set sqlblanklines on
/* ID 1 BATCH START TIME */
INSERT INTO CITSDMI.CITSD_TIMETABLE_ORDERLINE TGT
(TGT.BATCH_START_TIME)
(SELECT SYSDATE FROM DUAL);
COMMIT;
insert into CITSDMI.CITSD_TIMETABLE_ALL_LOADS
(LOAD_NAME, LOAD_CRITICALITY,LOAD_TYPE,BATCH_START_TIME)
values
('ORDERLINE','HIGH','SMART',(SELECT SYSDATE FROM DUAL));
commit;
/* Clear the Staging Tables */
TRUNCATE TABLE STAGE_SMART_ORDERLINE;
Commit;
TRUNCATE TABLE TRANSF_FACT_ORDERLINE;
Commit;
所以它继续其余的步骤。
任何助手将不胜感激。