Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2007023
  • 博文数量: 148
  • 博客积分: 7697
  • 博客等级: 少将
  • 技术积分: 3071
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-10 23:04
个人简介

MiBDP,数据开发、项目团队、数据应用和产品在路上,金融保险、互联网网游、电商、新零售行业、大数据和AI在路上。对数仓、模型、ETL、数据产品应用了解。DTCC 2013演讲嘉宾,曾做过两款大获好评的数据产品平台。知识星球ID:35863277

文章分类
文章存档

2020年(1)

2019年(2)

2017年(2)

2016年(5)

2015年(1)

2014年(1)

2013年(6)

2012年(5)

2011年(24)

2010年(28)

2009年(1)

2008年(6)

2007年(30)

2006年(36)

分类: Oracle

2010-10-12 12:04:11

etl_monitor_v2.sh //控制何时发短信
----------------------------------
ORACLE_SID=orcl
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/10.2.0
export ORACLE_SID ORACLE_BASE ORACLE_HOME

PWD_DIR=/home/oracle/shell
SQLPLUS=${ORACLE_HOME}/bin/sqlplus
CONFIG_INI=${PWD_DIR}/ini/config_v2.ini
gameuser='GAMEDATA/"h^zx@xxnm(Ybn"'

echo ${gameuser}
echo ${SQLPLUS}
cd ${PWD_DIR}
${SQLPLUS} ${gameuser} << !
@etl_monitor_v2.sql;
/
exit;
!
--------------------------------------
etl_monitor_v2.sql //真正发短信的东东
declare
  p_txt     varchar2(4000);
  p_txt_all varchar2(4000);
  req       UTL_HTTP.REQ;
  resp      UTL_HTTP.RESP;

begin
  for r in (select job_name, run_cnt, table_name, column_name
              from etl_monitor_config_tab) loop
    -- Call the Etl Monitor function
    p_txt     := etl_monitor_v2(r.job_name, r.run_cnt);
    p_txt_all := p_txt_all || p_txt; --短信的内容!
  end loop;
  if p_txt_all is not null then
    req  := UTL_HTTP.BEGIN_REQUEST('' ||
                                   p_txt_all);
    resp := UTL_HTTP.GET_RESPONSE(req);
    utl_http.end_response(resp);
  end if;
EXCEPTION
  WHEN utl_http.end_of_body THEN
    utl_http.end_response(resp);
end;
--PS:其实这个链接地址是真正的发短信的接口
这个具体是通过PHP来实现的
-------------------------------------
etl_monitor_v2 的内容
create or replace function etl_monitor_v2(job_name varchar2, run_cnt int)
  RETURN varchar2 IS
  v_monitor_date date; --The monitor of the proc's date
  v_job_name     varchar2(130);
  v_log_id       number;
  v_status_cnt   int;
  v_result       varchar2(4000);
begin
  v_monitor_date := trunc(sysdate);
  v_job_name     := job_name;

  if run_cnt = 1 then
    select log_id
      into v_log_id
      from user_scheduler_job_run_details
     where job_name = v_job_name
       and trunc(actual_start_date) = v_monitor_date;
  else
    select max(log_id)
      into v_log_id
      from user_scheduler_job_run_details
     where job_name = v_job_name
       and trunc(actual_start_date) = v_monitor_date;
  end if;

  select count(*)
    into v_status_cnt
    from user_scheduler_job_run_details
   where log_id = v_log_id
     and status = 'SUCCEEDED';

  if v_status_cnt = 0 then
    select OWNER || '.' || JOB_NAME || '+FALSED+' ||
           TO_CHAR(TRUNC(ACTUAL_START_DATE), 'MM-DD')
      into v_result
      from user_scheduler_job_run_details
     where log_id = v_log_id;
  end if;

  return v_result;

exception
  when others then
    return SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') || '.' || v_job_name || '+NOEXECUTE+' || TO_CHAR(v_monitor_date,
                                                                                                     'MM-DD');
end;

阅读(3767) | 评论(0) | 转发(0) |
0

上一篇:linux alias命令

下一篇:Oracle时间日期操作

给主人留下些什么吧!~~