写了一个检查数据库JOB HANG住时报警的脚本。

本文介绍了一个用于监控 Oracle 数据库中 Materialized View (MVIEW) 刷新状态的 shell 脚本。该脚本通过 SQL 查询检查过去六小时内 MVIEW 的刷新情况,并在发现超过六小时未刷新时发送警告通知。
# Writen by Henry bai @20th Sep.,2008
#!/bin/sh
while true
do
hostname=`hostname`
ORACLE_SID='CNSRPT'
Last_hours=`sqlplus -s / as sysdba @check_job_status.sql`
if test $Last_hours -gt 6
then
/usr/bin/logger -p daemon.warning "cronscript: check_job_status.ksh: FAILED: $hostname: #4-$ORACLE_SID Mview_refresh failed. [MID_54878]" --added by henry
fi
sleep 6
done
-----------the check_job_status.sql----------------------
set pages 0
set head off
select (sysdate-Min(LAST_REFRESH_DATE))*24 last_hours from dba_mviews where owner<>'ECR';
exit;
<think>好的,用户想了解如何编一个Linux下操作DB2数据库脚本。我需要先理清楚用户的需求,可能他需要自动化执行一些数据库任务,比如备份、查询、数据导入导出等。 首先,我应该考虑DB2的命令行工具,比如db2cmd或者直接在shell中使用db2命令。用户可能希望脚本能够连接到数据库,执行SQL语句,处理结果或者错误。 然后,我需要确保脚本的基本结构正确,比如连接数据库、执行SQL、处理错误、断开连接。可能还需要设置环境变量,比如DB2的实例和数据库名。 接下来,用户可能需要示例代码。我应该提供一个简单的模板,包含变量设置、错误处理、日志记录等部分。同,提醒用户根据实际情况修改参数,比如数据库名、用户名、密码、SQL文件路径等。 另外,需要注意权限问题,执行脚本的用户需要有访问DB2的权限,可能需要source db2profile,或者在脚本中设置环境变量。还要考虑安全性,比如密码的处理方式,避免明文存储。 用户可能不熟悉DB2的命令行操作,所以需要详细说明每个步骤的作用,比如db2 connect,db2 -tvf执行SQL文件,db2 terminate等。同,错误处理部分也很重要,比如检查命令的返回值,记录日志,方便排查问题。 可能还需要提到一些常见操作,比如备份数据库、导出数据、执行查询等,可以给出相应的命令示例,帮助用户扩展脚本功能。 最后,应该提醒用户测试脚本,确保在安全的环境中运行,避免对生产数据造成影响。如果用户需要更复杂的功能,比如参数化输入、定任务等,可以建议使用cron job或者结合其他脚本语言如Python增强功能。</think>以下是一个Linux环境下操作DB2数据库的Shell脚本模板及说明: ```bash #!/bin/bash # 脚本名称:db2_operation.sh # 功能:DB2数据库基础操作脚本 # 设置环境变量(根据实际安装路径调整) export IBM_DB_HOME=/opt/ibm/db2/V11.5 export PATH=$PATH:$IBM_DB_HOME/bin export DB2INSTANCE=db2inst1 # 数据库连接参数 DB_NAME="SAMPLE" DB_USER="db2admin" DB_PASS="your_password" SQL_FILE="/path/to/your_query.sql" OUTPUT_FILE="/path/to/output.csv" # 日志记录函数 log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" } # 执行DB2命令 execute_db2() { local command="$1" db2 -x "$command" if [ $? -ne 0 ]; then log "Error executing command: $command" exit 1 fi } # 主程序 main() { log "Starting DB2 operations..." # 连接数据库 log "Connecting to database..." execute_db2 "connect to $DB_NAME user $DB_USER using $DB_PASS" # 执行SQL文件 if [ -f "$SQL_FILE" ]; then log "Executing SQL file: $SQL_FILE" execute_db2 "term" db2 -tvf "$SQL_FILE" | tee -a execution.log else log "SQL file not found: $SQL_FILE" exit 1 fi # 示例查询(带输出重定向) log "Exporting query results..." execute_db2 "export to $OUTPUT_FILE of del select * from syscat.tables" # 断开连接 log "Disconnecting..." execute_db2 "connect reset" execute_db2 "terminate" log "All operations completed successfully." } # 执行主程序 main ``` --- ### 关键要素说明: 1. **环境配置** ```bash export IBM_DB_HOME=/opt/ibm/db2/V11.5 # DB2安装路径 export DB2INSTANCE=db2inst1 # 实例名称 ``` 2. **常用操作示例** - **执行SQL语句** ```bash db2 "select * from sysibm.sysdummy1" ``` - **批量执行SQL文件** ```bash db2 -tvf your_script.sql ``` - **数据导出** ```bash db2 "export to data.csv of del select * from your_table" ``` - **备份数据库** ```bash db2 "backup db $DB_NAME to /backup" ``` 3. **脚本使用说明** ```bash # 添加执行权限 chmod +x db2_operation.sh # 运行脚本 ./db2_operation.sh ``` --- ### 注意事项: 1. 权限管理: - 确保执行用户属于 `db2iadm1` 组 - 首次使用需执行 `. ~/sqllib/db2profile` 2. 安全建议: ```bash # 推荐使用配置文件存储密码(权限设为600) # config.cfg 内容: # DB_USER="db2admin" # DB_PASS="secure_password" source config.cfg ``` 3. 错误处理增强版: ```bash db2 "your_command" 2>&1 | tee -a error.log if [ ${PIPESTATUS[0]} -ne 0 ]; then echo "Error detected, check error.log" exit 1 fi ``` 4. 常用监控命令: ```bash # 查看数据库状态 db2 get db cfg | grep -i heapsize # 查看连接数 db2 "select count(*) from sysibmadm.snapappl" ``` --- 如果需要实现特定功能(如定备份、数据迁移等),可在此基础上扩展。例如添加自动备份功能: ```bash # 自动备份脚本片段 BACKUP_DIR="/backup/$(date +%Y%m%d)" mkdir -p $BACKUP_DIR db2 "backup db $DB_NAME to $BACKUP_DIR" ``` 建议结合crontab实现定任务: ```bash # 每天凌晨2点执行备份 0 2 * * * /path/to/db2_operation.sh ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值