【问题标题】:IBM Db2: How to automatically activate databases after (re)boot?IBM Db2:如何在(重启后自动激活数据库?
【发布时间】:2019-07-05 07:43:18
【问题描述】:

我有几个 Db2 数据库,我想在系统重新引导后自动 activate。重启后重启 Db2 服务没有问题,但激活数据库需要访问实例配置文件。

服务启动/停止由 system / systemctl 控制。在这些脚本中包含一些用户控制的设置脚本似乎不是一个好主意。我简要地查看了 Db2 实例用户的 enable-linger 或使用 EnvironmentFile 来设置实例配置文件。

重启后如何激活所有或一组数据库?您是否将 user/group/EnvironmentFile 与 systemd 一起使用?是启用 linger 还是有其他方法?

【问题讨论】:

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

标签: cron db2 systemd db2-luw


【解决方案1】:

这是一个必须由 Db2 实例所有者运行的简单脚本。
它假定 Db2 实例是自动启动的。如果不是这种情况,只需注释掉 db2gcf -s 并取消注释 db2gcf -u
该脚本等待实例启动配置的秒数,并激活在 Db2 实例系统目录中找到的所有本地数据库。
该脚本可以通过 Db2 实例所有者的 crontab 条目安排在操作系统启动时运行,如图所示。
在 Db2 实例所有者的主目录中创建带有命令历史记录的日志文件(请参阅 ${LOG} 变量)。

#!/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

【讨论】:

    【解决方案2】:

    必须由 Db2 实例所有者运行的简单脚本。

    苏-<INSTANCE>

    db2iauto -on <INSTANCE>

    退出

    退出

    运行root用户

    ./<INSTANCE>/sqllib/bin/db2fmcu -d;

    cd /<INSTANCE>/sqllib/bin/

    ./db2fmcu -u -p /opt/ibm/db2/<VERSION DB2>/bin/db2fmcd

    ./db2fm -i <INSTANCE> -U

    ./db2fm -i <INSTANCE> -u

    ./db2fm -i <INSTANCE> -f on

    ps -ef | grep db2fm|grep <INSTANCE>

    完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2021-05-23
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多