我定义了一个job,job里面有个存储过程,存储内容是根据日期判断是否执行另外一个存储过程。
create or replace procedure autoetl_day (indate in date)
is --输入参数
flg number;
mlg number;
begin
--如果是周六日被节假日调休的情况,且该日期是周六或者周日
select count(1) into flg from FESTIVAL f where f.festival_day=indate and f.fe_lag=1;
select count(1) into mlg from FESTIVAL f1 where f1.festival_day=indate and f1.fe_lag=0;
if (flg)=1 and (to_char(indate,'d') ='1' or to_char(indate,'d') ='7')
then
a_etl_proc; dbms_output.put_line(' 假日调休抽取'||indate);
insert into LION_ETL_LOG(ETL_LOGCONTENT) values('调休日抽取'||to_char(indate,'yyyymmdd')||'抽取完成');
else if --如果是节日情况
mlg<>0
then dbms_output.put_line('节日 不抽取'||indate);
else if (to_char(indate,'d') ='1' or to_char(indate,'d') ='7')
then dbms_output.put_line(' 周六日不抽取'||indate);
else
a_etl_proc; dbms_output.put_line(' 工作日抽取'||indate);
insert into LION_ETL_LOG(ETL_LOGCONTENT) values('工作日'||to_char(indate,'yyyymmdd')||'抽取完成');
end if;
end if;
end if;
commit;
end;
各位大神,请问,我如何查询A_ETL_PROC的每天执行记录?
select * from sys.dm_exec_procedure_stats
第一种:查Slow query的SQL语法:
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2 (超过2秒的SQL语法记录起来,设短一点来记录除错也是一种方法.)
第二种:设MySQL Replication用binlog:
log_bin = /var/log/mysql/mysql-bin.log (此档要用mysqlbinlog解来看,
mysqlbinlog mysql-bin.000042| grep "T_ABC" | grep "column value"
)
mysql会将所有INSERT/UPDATE/DELETE语法记于此(但是语法可能跟你想的不同),这是要写给SLAVE用的log 文件
第三种:推荐此方法,将MySQL执行的每行指令全都记录起来:
log = /tmp/mysql.log
restart mysql后, tail -f /tmp/mysql.log就可以看到
链接:
http://blog.csdn.net/kenera/article/details/5624981
og_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2 (超过2秒的SQL语法记录起来,设短一点来记录除错也是一种方法.)
如果这块的记录是要给非开发人员看的建议建张表,A_ETL_PROC里加一条执行记录,插入到新建的表里。