Cron IBMDB2:如何在(重新)启动后自动激活数据库?

Cron IBMDB2:如何在(重新)启动后自动激活数据库?,cron,db2,systemd,db2-luw,Cron,Db2,Systemd,Db2 Luw,我有几个Db2数据库,我想在系统重新启动后自动创建它们。在重新启动后重新启动Db2服务不是问题,但是激活数据库需要访问实例概要文件 服务启动/停止由系统/systemctl控制。在这些脚本中包含一些用户控制的设置脚本似乎不是一个好主意。我简要介绍了Db2实例用户或用于设置实例概要文件的用户 重新启动后如何激活所有或一组数据库?您是否将用户/组/环境文件与systemd一起使用?您启用了linger还是有其他方法?这里有一个简单的脚本,必须从Db2实例所有者处运行。 它假设Db2实例是自动启动的。

我有几个Db2数据库,我想在系统重新启动后自动创建它们。在重新启动后重新启动Db2服务不是问题,但是激活数据库需要访问实例概要文件

服务启动/停止由系统/systemctl控制。在这些脚本中包含一些用户控制的设置脚本似乎不是一个好主意。我简要介绍了Db2实例用户或用于设置实例概要文件的用户


重新启动后如何激活所有或一组数据库?您是否将用户/组/环境文件与systemd一起使用?您启用了linger还是有其他方法?

这里有一个简单的脚本,必须从Db2实例所有者处运行。
它假设Db2实例是自动启动的。如果不是这样,只需注释掉
db2gcf-s
并取消注释
db2gcf-u

脚本在配置的秒数内等待实例启动,并激活Db2实例系统目录中的所有本地数据库。
脚本可以通过Db2实例所有者的crontab条目安排在操作系统启动时运行,如图所示。
带有命令历史记录的日志文件(请参阅${Log}变量)在Db2实例所有者的主目录中创建

#!/bin/sh
#
# Function: Activates all local DB2 databases
# Crontab entry:
# @reboot /home/scripts/db2activate.sh >/dev/null 2>&1
#

TIMEOUT=300
VERBOSE=${1:-"noverbose"}
export LC_ALL=C
if [ ! -x ~/sqllib/db2profile ]; then
  echo "Must be run by a DB2 instance onwer" >&2
  exit 1
fi
[ -z ${DB2INSTANCE} ] && . ~/sqllib/db2profile
if [ "${VERBOSE}" != "verbose" ]; then
  LOG=~/.$(basename $0).log
  exec 1>>${LOG}
  exec 2>>${LOG}
fi
set -x

printf "\n*** %s ***\n" $(date +"%F-%H.%M.%S")
# Wait for the instance startup 
# (or even start it with 'db2gcf -u' instead of checking status: 'db2gcf -s')
TIME1=${SECONDS}
while [ $((SECONDS-TIME1)) -le ${TIMEOUT} ]; do
  db2gcf -s
  # db2gcf -u
  rc=$?
  [ ${rc} -eq 0 ] && break
  sleep 5
done

if [ ${rc} -ne 0 ]; then
  echo "Instance startup timeout of ${TIMEOUT} sec reached" >&2
  exit 2
fi

for dbname in $(db2 list db directory | awk -v RS='' '/= Indirect/' | grep '^ Database alias' | sort -u | cut -d'=' -f2); do
  db2 activate db ${dbname}
done

必须从Db2实例所有者处运行的简单脚本

su-

db2iauto-on

退出 出口

运行用户根目录 .sqllib/bin/db2fcu-d

cd/
/sqllib/bin/

./db2fcu-u-p/opt/ibm/db2/
/bin/db2fmcd

./db2fm-i
-U

./db2fm-i
-u

./db2fm-i
-f打开

ps-ef | grep db2fm | grep


DoneIf如果服务器是高可用的(HACMP或类似的集群(但不是HADR)),通常会在活动节点上启动作业,因此我使用脚本来激活集群启动序列触发的数据库。对于systemd,可以定义新的服务(具有相关依赖项),也可以扩展现有的服务文件以运行脚本来激活本地数据库。@对于扩展服务文件,您是否有处理环境设置的经验?不确定您的意思。我确实在几个物理linux上更改了建议的db2fmcd.service以满足我的需求,因为IBM建议的服务只处理最简单的情况。您是否对其进行了调整以激活数据库?如果是,你会如何分享?