本程式批量排程oracle儲存過程,支援定時排程任務,處理儲存過程排程過程中的依賴關係。
1. run_prc.sh
#!/bin/bash
#author zhangbingkai
#2018.10.14
v_prc_call=$1
v_date=$2
shell_dir=$3
v_oracle_home=`cat $shell_dir/parameter.ini | grep oracle_home`
v_oracle_sid=`cat $shell_dir/parameter.ini | grep oracle_sid`
export oracle_home=$
export oracle_sid=$
export path=$path:$oracle_home/bin
v_dblogin=`cat $shell_dir/parameter.ini | grep dblogin`
dblogin=$
status=`$oracle_home/bin/sqlplus -s $dblogin <> test.txt
$oracle_home/bin/sqlplus -s $dblogin <2.job_pre_prc.sh
#!/bin/bash
#author zhangbingkai
#2018.10.14
#判斷前驅是否成功執行完成
prc_call=$1
v_date=$2
shell_dir=$3
v_oracle_home=`cat $shell_dir/parameter.ini | grep oracle_home`
v_oracle_sid=`cat $shell_dir/parameter.ini | grep oracle_sid`
export oracle_home=$
export oracle_sid=$
export path=$path:$oracle_home/bin
v_dblogin=`cat $shell_dir/parameter.ini | grep dblogin`
dblogin=$
pre_job_id=`$oracle_home/bin/sqlplus -s $dblogin <3.job_main_prc.sh
#!/bin/bash
#author zhangbingkai
#2018.10.16
v_date=$1
shell_dir=$2
v_oracle_home=`cat $shell_dir/parameter.ini | grep oracle_home`
v_oracle_sid=`cat $shell_dir/parameter.ini | grep oracle_sid`
export oracle_home=$
export oracle_sid=$
export path=$path:$oracle_home/bin
v_dblogin=`cat $shell_dir/parameter.ini | grep dblogin`
dblogin=$
total_ini_err=1
$oracle_home/bin/sqlplus -s $dblogin <'suc';
exit
eof`
done
4.parameter.ini
dblogin=test/password01@orcl
oracle_sid=orcl
5.readme
並行排程儲存過程,需提前初始化job_prc_name表中的status(ini為初始化狀態,run為正在執行狀態,
suc為執行成功的過程,err為執行失敗的過程),message(初始化為null)字段。
修改parameter.ini配置資訊,配置資料庫的使用者、密碼、環境變數。
呼叫:nohup sh job_main_prc.sh 20180101 dir &
定時呼叫:必須寫絕對路徑
crontab -e
30 * * * * shell_dir=/home/oracle/run_shell_parallel; $shell_dir/job_main_prc.sh `date +\%y\%m\%d` $shell_dir
***crontab command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令
create table test.job_prc_name (
pre_job_id varchar2(30) not null,
job_id varchar2(30) not null,
prc_name varchar2(60) not null,
status varchar2(10) not null,
message varchar2(2000),
constraint pk_job_id primary key(job_id),
constraint idx_prc_name unique(prc_name)
);comment on table test.job_prc_name is '儲存過程排程參數列';
comment on column test.job_prc_name.pre_job_id is '依賴前驅的儲存過程id';
comment on column test.job_prc_name.job_id is '儲存過程id';
comment on column test.job_prc_name.prc_name is '儲存過程名稱';
comment on column test.job_prc_name.status is '儲存過程執行狀態:ini:初始狀態;run:正在執行中;suc:執行成功';
comment on column test.job_prc_name.message is '執行日誌';
shell 指令碼 序列排程程式
最近做資料倉儲的跑數除錯時,經常涉及大量跑批的操作,利用shell寫了乙個序列的排程程式,先說說優點 程式化 方便重跑 支援多個任務 多個日期 非常適合開發階段及資料移植等,而且指令碼開發,立竿見影 方便改造。缺點是不支援並行 並行配置任務依賴性負責,不多說了,上 執行任務配置檔案 job.lst ...
mybatis批量insert到Oracle資料庫
1 使用mybatis的foreach語法 private static void listinsert system.out.println 60萬條耗時 system.currenttimemillis start 對應的 sql語句 insert into aop trade log id,b...
shell 編寫指令碼批量ping ip
伺服器總是一下子買了很多的段的ip。通過繫結後,也不知道這些ip是否繫結成功,所以就寫了乙個shell指令碼,把ip輸好,批量ping一下,看是不是都能ping通。指令碼如下 此外。還有乙個ip檔案,裡面放的都是ip 名為allip 我們來執行一下,看一下結果 除了8.8.他顯示 ping 其他 失...