liunx 计划任务

任务脚本

#!/bin/bash# 配置项
# Oracle 安装路径,根据实际情况修改,查看安装地址:cat /etc/oratab
ORACLE_HOME='/home/database/oracle/product/11.2.0'
# Oracle 实例名,根据实际情况修改
ORACLE_SID=
# 数据库用户名
USER=
# 数据库密码
PASSWORD=''
# 存放多个 SQL 文件的目录
SQL_FILES_DIR='/home/database/oracle/product/11.2.0/runsql'
# 日志文件存放目录
LOG_DIR='/home/database/oracle/product/11.2.0/runsql/logs'# 导入 Oracle 环境变量
export ORACLE_HOME
export ORACLE_SID
export PATH=$PATH:$ORACLE_HOME/bin# 创建日志目录(如果不存在)
mkdir -p $LOG_DIR# 获取当前日期和时间,用于生成日志文件
CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S")
# 日志文件的时间后缀,精确到秒
LOG_TIME_SUFFIX=$(date +"%Y%m%d%H%M%S")  
# 日志文件路径,带时间后缀
LOG_FILE=$LOG_DIR/sql_log_$LOG_TIME_SUFFIX.log# 记录日志
echo "[$CURRENT_TIME] 开始执行 SQL 脚本..." >> $LOG_FILE# 遍历 SQL 文件目录下的所有 .sql 文件并依次执行
for sql_file in $SQL_FILES_DIR/*.sql; doecho "[$CURRENT_TIME] 执行 SQL 文件: $sql_file" >> $LOG_FILE# 执行 SQL 文件,并在发生错误时退出 SQL*Plussqlplus -s / as sysdba <<EOF >> $LOG_FILE
WHENEVER SQLERROR EXIT SQL.SQLCODE
START $sql_file
EXIT;
EOF# 检查 SQL 执行状态if [ $? -eq 0 ]; thenecho "[$CURRENT_TIME] SQL 文件 $sql_file 执行成功。" >> $LOG_FILEelseecho "[$CURRENT_TIME] SQL 文件 $sql_file 执行失败。" >> $LOG_FILEecho "[$CURRENT_TIME] 停止后续 SQL 文件的执行。" >> $LOG_FILEbreak  # 停止后续 SQL 文件的执行fi
done# 记录脚本结束时间
CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$CURRENT_TIME] 脚本执行结束。" >> $LOG_FILE

1、脚本尽量在oracle数据库的安装用户下执行:切换用户sudo su - oracle
2、加入为linux定时任务
    查看当前定时任务
    crontab -l
    修改当前的定时任务
    crontab -e
    定时任务例子
    */5 * * * * /home/oracle/runsql_test/sqlfilerun.sh
    给权限
3、脚本基本逻辑
    1)指定Oracle的安装目录
    2)指定日志目录
    3)指定sql文件所在目录
    4)执行逻辑
        - 从sql文件所在目录获取所有*.sql文件
        - 循环sql文件逐个执行(使用sqlplus)
        - 异常处理逻辑
            - 如果sql文件中的sql报错则终止执行
            - 如果默认sql文件执行失败后续文件不继续执行
4、使用方式建议
    1)对于不同业务模块的sql处理,建议以此sh为模板,编写多个脚本
    2)基于脚本构建多套sql文件、日志目录
5、日志文件
    1)每执行一次会在日志目录中,生成一个日志文件日志文件名中有当前时间精确到秒
    2)日志文件中会记录每条sql的执行结果
    3)日志文件会记录执行了哪些sql文件和执行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将一个图像添加到累积图像中。 该函数将 src 或其部分元素添加到 dst 中&#xff1a; dst ( x , y ) ← dst ( x , y ) src ( x , y ) if mask…

网络基础,协议,OSI分层,TCP/IP模型

网络的产生是数据交流的必然趋势&#xff0c;计算机之间的独立的个体&#xff0c;想要进行数据交互&#xff0c;一开始是使用磁盘进行数据拷贝&#xff0c;可是这样的数据拷贝效率很低&#xff0c;于是网络交互便出现了&#xff1b; 1.网络是什么 网络&#xff0c;顾名思义是…

使用Serilog在.NET应用程序中写日志文件

在开发.NET应用程序时&#xff0c;良好的日志系统是至关重要的。它可以帮助我们跟踪应用程序的运行情况&#xff0c;更好地理解应用程序的行为&#xff0c;以及在出现问题时进行调试。今天&#xff0c;我要介绍的是一个强大且易于使用的日志库——Serilog。 什么是Serilog&…

串口接收不到数据之电阻虚焊bug分析思路

单片机和EC移远通信模块进行通信&#xff0c;相同的代码运行在相同的硬件上&#xff0c;但是一个能联网&#xff0c;一个因为没有EC的应答连不上网。 开始分析&#xff0c;排除软件问题&#xff0c;给EC模块发为什么没应答&#xff1f; 1.发送失败 2.接收失败 排除情况2&#x…

汽车租赁系统1.0版本

汽车租赁系统1.0版本比较简陋&#xff0c;以后还会有2.0、3.0……就像《我爱发明》里面的一代机器二代机器&#xff0c;三代机器一样&#xff0c;是一个迭代更新的过程&#xff08;最近比较忙&#xff0c;可能会很久&#xff09;&#xff0c;这个1.0版本很简陋&#xff0c;也请…

Python+Pytest框架,“api_key.py文件怎么编写“?

1、在"api_keyword"文件夹下新增"api_key.py" import allure import requests import json import jsonpath from deepdiff import DeepDifffrom config import *allure.title("测试用例执行") class ApiKey:allure.step(">>>:开…

中学 教资 科目二

第一章 1. 简述生产力与教育的关系 (1)生产力对教育的制约作用–生产力水平决定教育发展水平 生产力水平决定教育的规模和速度生产力制约人才培养的规格和教育结构生产力制约教学内容、方法、组织形式与手段制约龟(规模)速(速度)够(结构)防(方法)守(手段) (2)…

跨平台开发新视角:利用Android WebView实现Web内容的原生体验

在移动应用开发领域&#xff0c;跨平台解决方案一直是一个热门话题。开发者们不断寻求能够同时在iOS和Android平台上提供一致用户体验的方法。而Android的WebView组件&#xff0c;作为一个强大的工具&#xff0c;允许开发者在Android应用中嵌入Web内容&#xff0c;为用户提供接…

【LeetCode】2309:兼具大小写的最好英文字母

题目描述 见LeetCode.2309题目。 C 以下是官方题解当中给出做法的复现。 class Solution { public:string greatestLetter(string s) {unordered_set<char> ht(s.begin(), s.end());for (int i25; i>0; i--){if (ht.count(a i) > 0 && ht.count(A i)…

Vue 2中的this指向详解

在JavaScript中&#xff0c;this的指向是许多开发者经常遇到的问题&#xff0c;尤其是在使用Vue这样的框架时。在Vue 2中&#xff0c;理解this的指向对于正确地访问组件的数据和方法至关重要。 1. this在Vue组件中的指向 在Vue组件的选项中&#xff0c;this通常指向当前组件实…

Maven从入门到精通(三)

一、Settings 配置 settings.xml 用来配置 maven 项目中的各种参数文件&#xff0c;包括本地仓库、远程仓库、私服、认证等信息。 全局 settings、用户 setting、pom 的区别&#xff1a; 全局 settings.xml 是 maven 的全局配置文件&#xff0c;一般位于 ${maven.home}/conf…

tomcat改默认登录页面

<!-- 在 conf/server.xml 文件中的 <Host> 元素内部添加如下代码 --> <Context path"" docBase"D:\tomcat\apache-tomcat-8.5.72\webapps\tb" debug"0" reloadable"true"/> 这里的各个属性含义如下&#xff1a; pa…

安全工具 | 使用Burp Suite的10个小tips

Burp Suite 应用程序中有用功能的集合 img Burp Suite 是一款出色的分析工具&#xff0c;用于测试 Web 应用程序和系统的安全漏洞。它有很多很棒的功能可以在渗透测试中使用。您使用它的次数越多&#xff0c;您就越发现它的便利功能。 本文内容是我在测试期间学到并经常的主要…

音视频入门基础:AAC专题(4)——ADTS格式的AAC裸流实例分析

一、ADTS格式的AAC裸流实例分析 在《音视频入门基础&#xff1a;AAC专题&#xff08;3&#xff09;——AAC的ADTS格式简介》中对AAC的ADTS格式进行了简介。下面用一个具体的例子来对ADTS格式的AAC裸流进行分析。 通过《音视频入门基础&#xff1a;AAC专题&#xff08;2&#x…

获取对象的key和value值

1.获取对象的key值 let obj{ name:张三, age:18 }let aObject.keys(obj) console.log(a) //["name","age"]获取对象的value值 name:张三, age:18 }let aObject.keys(obj) console.log(a) //["张三",18] Object.values(obj)

【C-项目】网盘(一期)

概述 登录服务器后&#xff0c;即可浏览服务器的文件系统。通过命令上传或下载文件。 服务器使用tcp类型的套接字&#xff0c;每收到一个连接请求&#xff0c;就新开一个子进程去处理 一期功能 客户端可以使用的命令 命令解析ls显示当前工作目录的所有文件pwd显示当前工作目录…

SpringBoot:Web开发(基于SpringBoot使用MyBatis-Plus+JSP开发)

目录 前期准备 构建项目&#xff08;IDEA2023.1.2&#xff0c;JDK21&#xff0c;SpringBoot3.3.3&#xff09; 添加启动器 Model准备 这里我们利用MybatisX插件生成我们所需要的实体类、数据访问层以及服务层 注意选择MyBatis-Plus3以及Lombok 然后再在service接口中定义…

C++——矩阵无重复行列取数问题

矩阵无重复行列取数问题 题目&#xff1a;有一个矩阵&#xff0c;我每次可以取一个数&#xff0c;后面再取数时不能再取该数所在行和列的其他数&#xff0c;我现在想一直取直到无法再取数位置&#xff0c;现在想要取到的数的和最大&#xff0c;问应该怎么取&#xff0c;最大的和…

yolov8 rect batch_shapes 672 图像大小变化

遇到这样一种情况&#xff1a;img_sz640,但在val时&#xff0c;输入网络的张量h和w是672 为什么输入图像会从640变大到672&#xff1f; 这是因为一种rectangle增强方法&#xff0c;“同个batch里做rectangle宽高等比变换&#xff0c; 加快训练 &#xff0c;对于多余的黑边做到…

【算法】-单调队列

目录 什么是单调队列 区域内最大值 区域内最小值 什么是单调队列 说到单调队列&#xff0c;其实就是一个双端队列&#xff0c; 顾名思义&#xff0c;单调队列的重点分为「单调」和「队列」。「单调」指的是元素的「规律」——递增&#xff08;或递减&#xff09;。「队列」指…