shell指令碼批量排程Oracle儲存過程

2021-09-22 05:44:12 字數 3199 閱讀 9501

本程式批量排程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 其他 失...