自动化安装及初始化DM8数据库

目录

一、简介

二、自定义变量

三、安装及初始化数据库

四、卸载数据库以及实例


一、简介

使用三个脚本进行dm8数据库的安装、初始化实例、卸载

  • setVar.sh脚本用来定义变量以及创建静默安装配置文件。
  • Silent_Install.sh脚本用来安装、初始化数据库以及注册系统服务,创建用户与用户组、挂载iso镜像、创建安装目录还有配置环境变量方便使用disql工具。
  • Silent_UnIstall.sh脚本用来彻底卸载数据库以及系统服务,删除用户和用户组。

二、自定义变量

注意事项:需要使用root用户运行

vim /opt/setVar.sh

 根据需要自定义变量,设置ISO_PATH变量为你的iso存放路径

#!/bin/bash

# =============================== 环境变量配置及初始化参数设置 ============================== #

# 用户名
export USER=dmdba
# 用户组
export GROUP=dinstall
# 用户密码
export PASSWD=${USER}123
# 静默安装配置
export SILENT_PROR_PATH=/opt/dminstall.xml
# 挂载路径
export MOUNT_PATH=/dmiso
# 指定安装镜像
export ISO_PATH=/opt/dm8_20220525_x86_rh6_64.iso
# 安装目录
export DM_HOME=/dm8
# 指定实例路径
export INSTANCE_PATH=/dm8/data
# 数据库名字,默认是 DAMENG,不超过 128 个字符
export DB_NAME=DAMENG
# 是否初始化库,取值 Y/N、y/n,不允许为空
export INIT_DB=Y
# 初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符
export INSTANCE_NAME=DMSERVER
# 是否创建数据库系统服务
export CREATE_DB_SERVICE=y
# 是否启动系统服务开机自启
export DB_SERVICE_STATUS=n
# 初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围:1024~65534
PORT_NUM=5236
# 数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页
EXTENT_SIZE=16
# 数据文件使用的页大小,缺省使用 8K,只能是 4K、8K、16K 或 32K 之一
PAGE_SIZE=32
# 日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数
LOG_SIZE=2048
# 标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’之一
CASE_SENSITIVE=Y
# 设置空格填充模式,取值 0 或 1,默认为 0
BLANK_PAD_MODE=1
# 字符集选项,默认值为 0。0 代表 GB18030(中文),1 代表 UTF-8,2 代表韩文字符集 EUC-KR
CHARSET=0

# ======================================= END ======================================== #

# 创建静默安装配置文件
cat>$SILENT_PROR_PATH <<EOF
<?xml version="1.0"?>
<DATABASE>
        <!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。-->
        <LANGUAGE>zh</LANGUAGE>
        <!--安装程序的时区配置,默认值为+08:00,范围:-12:59 ~ +14:00 -->
        <TIME_ZONE>+08:00</TIME_ZONE>
        <!-- key 文件路径 -->
        <KEY/>
        <!--安装程序组件类型,取值 0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户端。默认为 0。 -->
        <INSTALL_TYPE>0</INSTALL_TYPE>
        <!--记得修改,安装路径,不允许为空。 -->
        <INSTALL_PATH>$DM_HOME</INSTALL_PATH>
        <!--是否初始化库,取值 Y/N、y/n,不允许为空。 -->
        <INIT_DB>$INIT_DB</INIT_DB>
        <!--数据库实例参数 -->
        <DB_PARAMS>
                <!--记得修改,初始数据库存放的路径,不允许为空 -->
                <PATH>$INSTANCE_PATH</PATH>
                <!--记得修改,初始化数据库名字,默认是 DAMENG,不超过 128 个字符 -->
                <DB_NAME>$DB_NAME</DB_NAME>
                <!--记得修改,初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符 -->
                <INSTANCE_NAME>$INSTANCE_NAME</INSTANCE_NAME>
                <!--记得修改,初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围:1024~65534 -->
                <PORT_NUM>$PORT_NUM</PORT_NUM>
                <!--记得修改,初始数据库控制文件的路径,文件路径长度最大为 256 -->
                <CTL_PATH>$INSTANCE_PATH/$DB_NAME/dm.ctl</CTL_PATH>
                <!--记得修改,初始化数据库日志文件的路径,文件路径长度最大为 256,LOG_PATH 值为空则使用默认值,如果使用非默认值 LOG_PATH 节点数不能少于 2 个 -->
                <LOG_PATHS>
                        <LOG_PATH>$INSTANCE_PATH/$DB_NAME/${DB_NAME}01.log</LOG_PATH>
                        <LOG_PATH>$INSTANCE_PATH/$DB_NAME/${DB_NAME}02.log</LOG_PATH>
                </LOG_PATHS>
                <!--数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页 -->
                <EXTENT_SIZE>$EXTENT_SIZE</EXTENT_SIZE>
                <!--数据文件使用的页大小,缺省使用 8K,只能是 4K、8K、16K 或 32K 之一 -->
                <PAGE_SIZE>$PAGE_SIZE</PAGE_SIZE>
                <!--日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数 -->
                <LOG_SIZE>$LOG_SIZE</LOG_SIZE>
                <!--标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’之一 -->
                <CASE_SENSITIVE>$CASE_SENSITIVE</CASE_SENSITIVE>
                <!--字符集选项,默认值为 0。0 代表 GB18030(中文),1 代表 UTF-8,2 代表韩文字符集 EUC-KR -->
                <CHARSET>$CHARSET</CHARSET>
                <!--设置为 1 时,所有 VARCHAR 类型对象的长度以字符为单位,否则以字节为单位。默认值为 0。 -->
                <LENGTH_IN_CHAR>0</LENGTH_IN_CHAR>
                <!--字符类型在计算 HASH 值时所采用的 HASH 算法类别。0:原始 HASH 算法;1:改进的HASH 算法。默认值为 1。 -->
                <USE_NEW_HASH>1</USE_NEW_HASH>
                <!--初始化时设置 SYSDBA 的密码,默认为 SYSDBA,长度在 9 到 48 个字符之间 -->
                <SYSDBA_PWD/>
                <!--初始化时设置 SYSAUDITOR 的密码,默认为 SYSAUDITOR,长度在 9 到 48 个字符之间 -->
                <SYSAUDITOR_PWD/>
                <!--初始化时设置 SYSSSO 的密码,默认为 SYSSSO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
                <SYSSSO_PWD/>
                <!--初始化时设置 SYSDBO 的密码,默认为 SYSDBO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
                <SYSDBO_PWD/>
                <!--初始化时区,默认是东八区。格式为:正负号小时:分钟,范围:-12:59 ~ +14:00 -->
                <TIME_ZONE>+08:00</TIME_ZONE>
                <!--是否启用页面内容校验,0:不启用;1:简单校验;2:严格校验(使用 CRC16 算法生成校验码)。默认 0 -->
                <PAGE_CHECK>0</PAGE_CHECK>
                <!--设置默认加密算法,不超过 128 个字符 -->
                <EXTERNAL_CIPHER_NAME/>
                <!--设置默认 HASH 算法,不超过 128 个字符 -->
                <EXTERNAL_HASH_NAME/>
                <!--设置根密钥加密引擎,不超过 128 个字符 -->
                <EXTERNAL_CRYPTO_NAME/>
                <!--全库加密密钥使用的算法名。算法可以是DM内部支持的加密算法,或者是第三方的加密算法。默认使用"AES256_ECB"算法加密,最长为 128 个字节 -->
                <ENCRYPT_NAME/>
                <!--指定日志文件是否加密。默认值 N。取值 Y/N,y/n,1/0 -->
                <RLOG_ENC_FLAG>N</RLOG_ENC_FLAG>
                <!--用于加密服务器根密钥,最长为 48 个字节 -->
                <USBKEY_PIN/>
                <!--设置空格填充模式,取值 0 或 1,默认为 0 -->
                <BLANK_PAD_MODE>$BLANK_PAD_MODE</BLANK_PAD_MODE>
                <!--指定 system.dbf 文件的镜像路径,默认为空 -->
                <SYSTEM_MIRROR_PATH/>
                <!--指定 main.dbf 文件的镜像路径,默认为空 -->
                <MAIN_MIRROR_PATH/>
                <!--指定 roll.dbf 文件的镜像路径,默认为空 -->
                <ROLL_MIRROR_PATH/>
                <!--是否是四权分立,默认值为 0(不使用)。仅在安全版本下可见和可设置。只能是 0 或 1 -->
                <PRIV_FLAG>0</PRIV_FLAG>
                <!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为 257(含结束符),不包括文件名-->
                <ELOG_PATH>$INSTANCE_PATH/$DB_NAME</ELOG_PATH>
        </DB_PARAMS>
        <!--是否创建数据库实例的服务,值 Y/N y/n,不允许为空,不初始化数据库将忽略此节点。非root用户不能创建数据库服务。 -->
        <CREATE_DB_SERVICE>N</CREATE_DB_SERVICE>
        <!--是否启动数据库,值 Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
        <STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
</DATABASE>
EOF

 执行前需要给x权限,执行该脚本,建议使用source执行脚本,不然可能环境变量无法应用到导致安装失败

chmod +x /opt/setVar.sh

source /opt/setVar.sh

三、安装及初始化数据库

vim /opt/Silent_Install.sh

#!/bin/bash

# 关闭防火墙
systemctl --now disable firewalld
# 关闭selinux
setenforce 0 >& /dev/null

# 判断挂载目录是否存在,不存在则创建
if [ ! -d "$MOUNT_PATH" ]; then
    mkdir -p $MOUNT_PATH
    echo "创建挂载目录$MOUNT_PATH"
fi

# 判断目录是否挂载
mountpoint -q $MOUNT_PATH
if [ $? -ne 0 ]; then
    mount -o loop $ISO_PATH $MOUNT_PATH
    echo "挂载到$MOUNT_PATH"
fi

# 判断安装目录是否存在
if [ ! -d "$DM_HOME" ]; then
    mkdir -p $DM_HOME
    echo "创建安装目录$DM_HOME"
fi

# 判断用户是否存在
id $USER >& /dev/null
if [ $? -ne 0 ]; then
    # 判断用户组是否存在
    egrep "^$GROUP" /etc/group >& /dev/null
    if [ $? -ne 0 ]; then
        sudo groupadd $GROUP
        echo "创建用户组$GROUP"
    fi
    sudo useradd -g $GROUP -m -d /home/$USER $USER
    echo "创建用户$USER"
    echo $PASSWD| passwd --stdin $USER &> /dev/null
fi

# 修改系统文件最大打开数
egrep "^$USER" /etc/security/limits.conf >& /dev/null
if [ $? -ne 0 ]; then
    echo >> /etc/security/limits.conf "$USER soft nofile 102400"
    echo >> /etc/security/limits.conf "$USER hard nofile 102400"
fi

# 修改安装目录权限
chown -R $USER:$GROUP $DM_HOME
chmod +x $DM_HOME

# 开始安装、初始化数据库和注册系统服务
if [ ! -d $DM_HOME/bin ]; then
    su - $USER <<EOF
    $MOUNT_PATH/DMInstall.bin -q $SILENT_PROR_PATH
    exit
EOF
    # 创建DmAP服务
    $DM_HOME/script/root/root_installer.sh
    # 根据参数判断是否创建数据库系统服务
    if [ $CREATE_DB_SERVICE = 'Y' ] || [ $CREATE_DB_SERVICE = 'y' ] && [ -d $INSTANCE_PATH ]; then
        $DM_HOME/script/root/dm_service_installer.sh -t dmserver -dm_ini $INSTANCE_PATH/$DB_NAME/dm.ini -p $INSTANCE_NAME
        # 根据参数判断是否启动开机自启
        if [ $DB_SERVICE_STATUS = 'Y' ] || [ $DB_SERVICE_STATUS = 'y' ]; then
            systemctl --now enable DmService$INSTANCE_NAME
            echo "启动开机自启"
        fi
    fi
    # 用户配置文件添加数据库环境配置
    grep -c "DM_HOME/" /home/$USER/.bash_profile >& /dev/null
    if [ $? -ne 0 ]; then
        echo >> /home/$USER/.bash_profile 'export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool'
    fi
fi

 执行此脚本开始安装及初始化

chmod +x /opt/Silent_Install.sh

source /opt/Silent_Install.sh

效果如下图 

 

四、卸载数据库以及实例

 vim /opt/Silent_UnInstall.sh

#!/bin/bash

# 卸载服务
systemctl status DmService$INSTANCE_NAME >& /dev/null
if [ $? -eq 0 ]; then
    $DM_HOME/script/root/dm_service_uninstaller.sh -n DmService$INSTANCE_NAME
fi

# 卸载数据库
if [ -e $DM_HOME/uninstall.sh ]; then
    $DM_HOME/uninstall.sh -i
fi

# 删除实例
rm -rf /dm8/
rm -rf /etc/dm_svc.conf

# 删除用户以及用户组
id $USER >& /dev/null
if [ $? -eq 0 ]; then
    userdel -rf $USER >& /dev/null
fi

egrep "^$GROUP" /etc/group >& /dev/null
if [ $? -eq 0 ]; then
    groupdel $GROUP
fi

mountpoint -q $MOUNT_PATH
if [ $? -eq 0 ]; then
    umount $MOUNT_PATH
fi

chmod +x /opt/Silent_UnInstall.sh

source /opt/Silent_UnInstall.sh

 查看效果

  

 更多资讯请到达梦社区地址了解:

https://eco.dameng.com

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值