达梦的key 如何更换 以及如何配置 dmpyton 在windows 端

##sample 1

方法1: 手工执行方法

 

步骤:

1. 修改模板文件sample.txt,从第二行开始按需要修改,第一行不动

2. 把要更新的dm.key文件拷贝到当前目录,替换测试的dm.key

3. 执行命令: sh replace_dmkey.sh

 

cd /ddd/dm 

\cp /opt/newkey/dm.key ./a/bin/

\cp /opt/newkey/dm.key ./b/bin/

 

 

SELECT EXPIRED_DATE FROM V$LICENSE;

 CALL SP_LOAD_LIC_INFO();

 

 

方法2:脚本修改方法

脚本使用方法:

1. 修改模板文件sample.txt,从第二行开始按需要修改,第一行不动

2. 把要更新的dm.key文件拷贝到当前目录,替换测试的dm.key

3. 执行命令: sh replace_dmkey.sh

 

 

在10.241.*.*服务器上

cd /opt/newkey/replace_dmkey

 

1)配置sample.txt文件:

 

服务器IP|数据库bin目录|数据库OS用户|数据库实例端口|数据库管理员|数据库管理员密码

10.241.*。*|/ddd/dm/db1/bin|dmdba|5257|DBA|DDD

 

 

 

2)把要更新的dm.key文件拷贝到当前目录,替换

 

3)执行命令: 

chmod +x *.sh

sh replace_dmkey.sh

 

 

##sample 2

Python

本章主要介绍在 Python 开发的时候,如何使用 Python 快速连接达梦数据库。

dmPython 简介

dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。

使用 Python 连接达梦数据库时需要安装 dmPython。安装完 DM 数据库软件后,在安装路径下的 drivers 目录下,可以找到 dmPython 的驱动源码,由于提供的是源码,需要自己编译安装,下面分别介绍如何在 Windows 和 Linux 环境下编译安装 dmPython。

Windows 环境编译安装 dmPython

安装 DM 数据库软件并设置 DM_HOME 环境变量

dmPython 源码依赖 DM 安装目录中提供的 include 头文件,编译安装前需要检查是否安装 DM 数据库软件,并设置 DM_HOME 环境变量。

可访问达梦云适配中心下载试用,下载 DM8 数据库试用版并安装,请参考 DM 数据库安装

设置 DM_HOME 环境变量

 

 

 

安装编译工具 Microsoft Visual C++ Build Tools

 

 

 

编译安装 dmPython

 

 

安装完 DM 数据库软件后,在安装路径下的 drivers 目录下,找到 dmPython 的驱动源码。

 

进入到 dmPython 驱动源码目录

cd D:\dmdbms\drivers\python\dmPython

编译安装 dmPython

python setup.py install

 

 

 

 

 

 

编译安装结束后使用 pip list 命令查看是否安装成功

 

 

 

查看搜索路径并将 dpi 目录文件拷贝到搜索路径下

dmPython 通过调用 DM DPI 接口完成 Python 模块扩展。在其使用过程中,除 Python标准库以外,还需要 DPI 的运行环境。

进入 python 解释器查看搜索路径

python

import sys

sys.path

 

 

 

C:\Users\Admin\AppData\Local\Programs\Python\Python39\lib\site-packages\dmpython-2.3-py3.9-win-amd64.egg

 

 

 

编写测试代码

import dmPython

conn=dmPython.connect(user='SYSDBA',password='SYSDBA',server= '192.168.201.118',port=5236)

cursor = conn.cursor()

cursor.execute('select username from dba_users')

values = cursor.fetchall()

print(values)

cursor.close()

conn.close()

 

输出数据库中的用户名则表示连接数据库成功。

常见问题处理见:https://eco.dameng.com/document/dm/zh-cn/faq/faq-python.html

 

 

###sample 3:重装dm客户端导致dmpython无法识别

 

 

 


报错: 1.windows

>>> import dmPython
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: 找不到指定的模块。


检查方法:检查目录path 路径
>>>
>>>
>>> import sys
>>> sys.path
['', 'C:\\Python37\\python37.zip', 'C:\\Python37\\DLLs', 'C:\\Python37\\lib', 'C:\\Python37', 'E:\\db\\test_py\\magic_box_37\\venv', 'E:\\db\\test_py\\magic_box_
37\\venv\\lib\\site-packages']
>>> import dmPython
>>>


解决方法:

copy 新达梦home 目录下 的所有文件 E:\dba\dm8\app2023\drivers\dpi
到 dmpython 的path 目录下即可
E:\\db\\test_py\\magic_box37\\venv\\lib\\site-packages']

 

####windows python console 无法打印中文

https://www.jb51.net/article/267528.htm

pycharm console 打印中文为乱码问题及解决

 更新时间:2022年11月15日 09:07:11   作者:wyy_a  
 
这篇文章主要介绍了pycharm console 打印中文为乱码问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
 

console 打印乱码

1.File Encoding设置项目编码为GBK  (注意将 project encoding 修改成GBK ,console 可以打印中文了,但是print 无法打印中文)

(注意将 project encoding 修改成UTF-8 ,console 不可以打印中文了,但是print 可以打印中文)

2.文件模板设定python脚本为# -*- coding: utf-8 -*-

3.重启pycharm

正常

pycharm乱码解决大全

运行项目时控制台乱码

在Settings的Editor里点击FileEncoding,在下图中三个位置修改编码一致(一般为UTF-8或者GBK)

最后Apply并确认后重新运行项目即可

如果上述方法解决不了,可能是字体问题,解决方法如下

找到Editor ->Color Scheme ->Console Font,修改设置如下图所示:

项目名中文乱码

我这里项目名中间没有中文,因此就没有中文乱码了,所以还是尽量多用英文来命名

但如果乱码,可以参考下图修改项目名的字体为微软雅黑即可显示中文(原字体不支持中文)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

 

 

#######sample 3 普罗米修斯和dmpython

一.环境准备
1.CPU: Intel x86
2.OS: Centos7
3.安装包
软件 版本 备注
Python 3.9.13 导入模块:
prometheus_client
dmPython
Grafana 9.1.0 页面展现平台
prometheus 2.38.0 监控数据存储
dm8_exporter.py 达梦数据库监控采集agent
dmdb_dashborad-v3.10.json Grafana 页面看板
Prometheus server http://ip:3000
http://ip:9090/
Prometheus client http://ip:8000/

二.Python 环境安装
1.python3.9安装(达梦数据库服务器)
[root@localhost Python-3.9.13]# yum -y install zlib zlib-devel bzip2 bzip2-devel ncurses openssl openssl-devel openssl-static xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel tk tk-devel libffi-devel gcc
[root@localhost Python-3.9.13]# tar -zxvf Python-3.9.13.tgz
[root@localhost Python-3.9.13]# cd Python-3.9.13/
[root@localhost Python-3.9.13]#./configure --prefix=/usr/local/python3 &&make &&make install

[root@localhost Python-3.9.13]# ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3.9
[root@localhost Python-3.9.13]# python3.9 --version
Python 3.9.13


2.依赖包安装
1)拷贝dmPython驱动目录至服务器
[root@localhost opt]# cd dmPython/
[root@localhost dmPython]# python3.9 setup.py install
[root@localhost dmPython]# python3.9
Python 3.9.13 (main, Aug 25 2022, 23:47:20)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dmPython
>>>

2)拷贝prometheus_client-0.14.1.tar.tar至服务器
[root@localhost prometheus_client-0.14.1]# tar -xvf prometheus_client-0.14.1.tar.tar
[root@localhost prometheus_client-0.14.1]# cd prometheus_client-0.14.1/
[root@localhost prometheus_client-0.14.1]# python3.9 setup.py install
[root@localhost prometheus_client-0.14.1]# python3.9
Python 3.9.13 (main, Aug 25 2022, 23:47:20)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import prometheus_client
>>>

三.Grafana环境安装(监控服务器)
1.安装
[root@localhost opt]# yum -y install grafana-enterprise-9.1.1-1.x86_64.rpm
2.启动服务并加入开机启动
[root@localhost opt]# systemctl start grafana-server.service
[root@localhost opt]# systemctl enable grafana-server.service
3.检查服务状态(默认使用3000端口)
[root@localhost opt]# systemctl status grafana-server.service
[root@localhost opt]# netstat -lnptu | grep 3000

4.开放端口并访问
http://ip:3000
admin/admin

四.Prometheus环境安装(监控服务器)
1.解压
[root@localhost opt]# tar -zxvf prometheus-2.38.0.linux-amd64.tar.gz

2.配置
[root@localhost opt]# mv prometheus-2.38.0.linux-amd64 /usr/local/prometheus
[root@localhost opt]# cd /usr/local/prometheus/
[root@localhost prometheus]# vim prometheus.yml
(scrape_config 章节配置的是采集node export 的数据)

可以先保持默认,后面添加客户端监控

3.启动
nohup ./prometheus --config.file="prometheus.yml" &
或者
pkill prometheus
systemctl start prometheus

4.访问
http://localhost:9090/

五.启动dmdb_exporter(达梦数据库服务器)
1.拷贝dm8_exporter.py文件至达梦数据库服务器
2.修改要监控的数据库连接信息
cp dm8_exporter.py /opt/dm8_exporter.py
vim /opt/dm8_exporter.py

3.启动监控项目
方法1:手工启动(本地监控)
cd /opt
[root@localhost opt]# python3.9 dm8_exporter.py

可以放于后台(nohup python3.9 dm8_exporter.py &)

方法2:服务方式启动(本地监控单个达梦数据库)

在/usr/lib/systemd/system目录新增1个配置文件,分别为:

1. vi /usr/lib/systemd/system/dm_exporter.service文件,内容如下:

[Unit]
Description=Prometheus dameng Exporter
After=network.target

[Service]
Environment="LD_LIBRARY_PATH=/dm/bin:/usr/lib64:/usr/bin"
ExecStart=/usr/bin/python3.9 /opt/dm/dm8_exporter_cloudwise.py
ExecStop=kill -9 `ps -ef|grep 'dm8_exporter'|grep -v 'grep'|awk '{print $2}'`
Execenable=/usr/bin/python3.9 /opt/dm8_exporter.py

User=root
[Install]
WantedBy=multi-user.target

2.systemctl命令
重载配置:

systemctl daemon-reload

3.开启服务:
systemctl start dm_exporter

3.停止服务:
systemctl stop dm_exporter


如果systemctl status dm_exporter遇到这个报错:
● dm_exporter.service - Prometheus dameng Exporter
Loaded: loaded (/usr/lib/systemd/system/dm_exporter.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sat 2022-10-08 11:24:08 CST; 9s ago
Process: 1554225 ExecStart=/usr/bin/python3.9 /opt/dm/dm8_exporter_cloudwise.py (code=exited, status=1/FAILURE)
Main PID: 1554225 (code=exited, status=1/FAILURE)

10月 08 11:24:07 dmperfdw1 systemd[1]: Started Prometheus dameng Exporter.
10月 08 11:24:08 dmperfdw1 python3.9[1554225]: Traceback (most recent call last):
10月 08 11:24:08 dmperfdw1 python3.9[1554225]: File "/opt/dm/dm8_exporter_cloudwise.py", line 8, in <module>
10月 08 11:24:08 dmperfdw1 python3.9[1554225]: import dmPython
10月 08 11:24:08 dmperfdw1 python3.9[1554225]: ImportError: libdmdpi.so: cannot open shared object file: No such file or directory
10月 08 11:24:08 dmperfdw1 systemd[1]: dm_exporter.service: Main process exited, code=exited, status=1/FAILURE

解决方法:
配置文件加入参数Environment
[Service]
Environment="LD_LIBRARY_PATH=/dm/bin:/usr/lib64:/usr/bin"


方法3:服务方式启动(本地监控多个达梦数据库)


3.查看客户端采集页面
http://ip:8000/

六.添加prometheus配置(监控服务器)
1.修改 /usr/local/prometheus/prometheus.yml文件
- job_name: 'dmdb1'

static_configs:

- targets: ['192.168.163.137:8000']
- targets: ['192.168.163.138:8000']

2.重启prometheus
-》方法1:手工重启方法
[root@localhost prometheus]# ps -ef|grep prometheus
root 2183 1964 0 Aug26 pts/0 00:00:04 ./prometheus --config.file=prometheus.yml
root 3810 2997 0 00:11 pts/1 00:00:00 grep --color=auto prometheus
[root@localhost prometheus]#
[root@localhost prometheus]#pkill prometheus
[root@localhost prometheus]# kill 2183
cd /usr/local/prometheus
[root@localhost prometheus]# nohup ./prometheus --config.file="prometheus.yml" &

-》方法2:服务方式重启方法:
在/usr/lib/systemd/system目录新增1个配置文件,分别为:

1. /usr/lib/systemd/system/prometheus.service文件,内容如下:

[Unit]
Description=Prometheus Service
After=network.target

[Service]
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml

ExecStop=kill -9 `ps -ef|grep 'prometheus.yml'|grep -v 'grep'|awk '{print $2}'`

User=root
[Install]
WantedBy=multi-user.target


2.systemctl命令
重载配置:

systemctl daemon-reload

3.开启服务:
systemctl start prometheus

4.停止服务
systemctl stop prometheus


https://blog.csdn.net/qq_20042935/article/details/124324441
后继可以使用该方法将监控client也写成服务

3.查看status/ targets ,看看达梦数据库state 是否up
http://ip:9090/targets?search=

http://10.241.133.78:8000/metrics


http://ip:9090/targets?search=


查看graph界面,搜索关键字 tbs
http://10.241.133.150:9090/graph?g0.expr=&g0.tab=1&g0.stacked=0&g0.show_exemplars=0&g0.range_input=1h

 

七.Grafana导入看板(监控服务器)
1.添加数据源

选择prometheus


2.导入看板json文件
选择图标-> import ->upload json file

 

3.至此完成,查看监控面板

 

问题:1如果图标里数据没有展示。
1.解决办法,以此选中这些图标的名字,那么可以直接编辑


2.选中data source , 选择 prometheus, 然后选择右上角的 刷新按钮


问题2
#######错误1
Warning:?Error fetching server time: Detected 542.3980000019073 seconds time difference between your browser and the server. Prometheus relies on accurate time and time drift might cause unexpected query results.

调整本地时间,正确跟系统时间误差在5-10秒以内

问题3 python 3.9安装第三方依赖包dmPython 报错
##
python3.9 setup.py install
distutils.errors.DistutilsSetupError: cannot locate an Dameng software installation

解决办法
Root 用户profile 加入
DM_HOME=/opt/dmdbms
LD_LIBRARY_PATH=:/opt/dmdbms/bin

 

 

 

#########sample 4

https://blog.csdn.net/weixin_44224529/article/details/120276522?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-120276522-blog-126231762.235^v27^pc_relevant_default_base1&spm=1001.2101.3001.4242.1&utm_relevant_index=3

Microsoft Visual C++ 14.0 is required 的终极解决办法

 

在python 安装包的过程中可能遇到Microsoft Visual C++ 14.0 is required 的报错,原因是使用pip install 安装的过程中需要c++ 编译,而且有些对编译器依赖有比较高。所以解决这种问题有两种方法。

方法一

也是比较快的方法,直接下载编译好的python包,也叫轮子包,也就是这样的包 xxx.whl 。这样能解决80% 的包的问题,因为有些包在编译的时候会丢文件。

whl 包的下载地址

https://www.lfd.uci.edu/~gohlke/pythonlibs/
https://pypi.org/project/
1
2
方法二

编译安装,但是编译器版本有不支持。那就升级编译器,但是这个c++14 的编译在安装过程中老是安装失败,包丢失。所以说直接安装高版本的编译就可以解决问题,编译安装的好处就是,包安装比较全,而且包中有bug的化,你到github 中下载最新的源码,可以减少你在使用过程中出现意想不到的bug.

升级编译器的方法

一 、到微软官网下载visual studio2019如图
https://visualstudio.microsoft.com/zh-hans/downloads/


二 、下载完安装,安装完后选择单个组件如图

然后在选c++14如图

安装完之后,就可以pip install 安装python 包了 或者使用 python setup.py install (提前是你在下源码包)
————————————————
版权声明:本文为CSDN博主「go_flush」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44224529/article/details/120276522

 

 

##samlpe 3  达梦安装脚本 单机版本

#!/bin/sh
#------------------------------------------------|
#Date: 2023-03-17 Test Successful
#Author:
#Da Meng Database Installation and Initialization
#------------------------------------------------|
echo -e "*********************************************************"
echo -e "******************达梦数据库安装开始*********************"
echo -e "**************请根据下列提示输入对应内容*****************"
echo -e "*********************************************************"
read -p "请输入数据库SID:" dmsid
read -p "请输入数据库字符集(1'UTF8' or 0'GB18030):" dmchar
read -p "请输入数据库大小写是否敏感(1'是' or 0'否'):" dmcase
read -p "请输入数据库varchar类型以字符为单位(1'是' or 0'否'):" dmchvar
read -p "请输入数据库簇大小:" dmex
read -p "请输入数据库页大小:" dmpage
read -p "请输入数据库端口号:" dmport
read -p "请输入数据库dm.ini文件参数(COMPATIBLE_MODE=?)" dmcom


add_group() {
    grep -Ei "dinstall|dmdba" /etc/group | grep -iE "2003|2002" &> /dev/null
    if [ $? -ne 0 ]
    then
        groupadd dinstall -g 2003
        groupadd dmdba -g 2002
    else
        echo -e "\033[32m DM_Group Creare              [Successd] \033[0m"
    fi
}

add_user() {
    id dmdba | grep dinstall &> /dev/null
    if [ $? -ne 0 ]
    then
        useradd -g dinstall -G dmdba dmdba
        echo -e "\033[32m DM_User Creare              [Successd] \033[0m"
    fi
}

dm_mount() {
    df -Th | grep dmiso &> /dev/null
    if [ $? -eq 0 ]
    then
        echo -e "\033[32m DMiso mount                [Successd] \033[0m"
    else
        mkdir -p /dmiso
        mount -o loop dm8_20220928_x86_kylin10_64_ent_8.1.2.138_pack3.iso /dmiso &> /dev/null
        echo -e "\033[32m DMiso mount              [Successd] \033[0m"
    fi
}


dm_install() {
    if [ -d /ddd/dm/${dmsid} ]
    then
        echo -e "\033[32m DM directories creating      [Successd] \033[0m"
    else
        mkdir -p /ddd/dm/${dmsid} && chown -R dmdba:dinstall /ddd/dm/${dmsid}
        echo -e "\033[32m DM directories creating      [Successd] \033[0m"
    fi
    if [ -f /dmiso/DMInstall.bin ]
    then
        echo -e "\033[32m********************************************************* \033[0m"
        echo -e "\033[32m达梦数据库安装程序启动中.............. \033[0m"
        echo -e "\033[31m安装路径请输入/ddd/dm/${dmsid} \033[0m"
        su - dmdba -c "/dmiso/DMInstall.bin -i"
    else
        echo -e "\033[31m 达梦数据库安装程序不存在!!!!!!! \033[0m"
    fi
    #install_path="/ddd/dm/${dmsid}"
    #{
    #spawn su - dmdba -c "/dmiso/DMInstall.bin -i"
    #expect {
    #        "(E/e:English C/c:Chinese)" { send "e\r";exp_continue }
    #        "Continue? (Y/y:Yes N/n:No) [Y/y]:" { send "Y\r" }
    #}
    #expect "Key File? (Y/y:Yes N/n:No) [Y/y]:"
    #send "Y\r"
    #}
    #"TimeZone? (Y/y:Yes N/n:No) [Y/y]:" { send "Y\r" }
    #"Please Select the TimeZone [21]:" { send "21\r" }
    #"Please Input the number of the Installation Type [1 Typical]:" { send "2\r" }
     #"Please Input the install path [/home/dmdba/dmdbms]:" { send "${install_path}\r" }
    #"Please Confirm the install path(/ddd/dm/sdss)? (Y/y:Yes N/n:No) [Y/y]:" { send "Y\r" }
    #"Confirm to Install? (Y/y:Yes N/n:No):" { send "Y\r" }
    #"File /etc/dm_svc.conf exist, replace it? (Y/y,N/n) [Y/y]:" { send "Y\r" }
}

dm_installs() {
    sh /ddd/dm/${dmsid}/script/root/root_installer.sh
}


dm_example() {
    mkdir -p /dmdata/${dmsid} && chown -R dmdba:dinstall /dmdata/${dmsid}
    su - dmdba -c "/ddd/dm/${dmsid}/bin/dminit path=/dmdata/${dmsid} page_size=${dmpage} port_num=${dmport} extent_size=${dmex} log_size=2048 db_name=${dmsid}uat instance_name=${dmsid}uat case_sensitive=${dmcase} charset=1 LENGTH_IN_CHAR=${dmchvar}"
}

regis_servuce() {
    /ddd/dm/${dmsid}/script/root/dm_service_installer.sh -t dmserver -p ${dmsid}uat -dm_ini /dmdata/${dmsid}/${dmsid}uat/dm.ini
}

dmserver() {
    if [ -f /ddd/dm/${dmsid}/bin/DmService* ]
    then
        systemctl start DmService${dmsid}uat &> /dev/null
        if [ $? -eq 0 ]
        then
            echo -e "\033[32m DmService${dmsid}uat          [Successd] \033[0m"
        else
            echo -e "\033[31m DmService${dmsid}uat            [Faild] \033[0m"
        fi
    else
        echo "\033[31m DmService${dmsid}uat  File does not exist \033[0m"
fi
}

set_profile() {
    setnum=`cat -n /home/dmdba/.bash_profile | grep db | tail -1 | awk -F' ' '{print $1}'`
    dbnum=`cat -n /home/dmdba/.bash_profile | grep db | wc -l`
    sed -i "${setnum}a db${dbnum} ${dmsid}  port ${dmport} ,  systemctl start DmService${dmsid}uat" /home/dmdba/.bash_profile
    sed -i "/^db${dbnum}/s/^/\t/g" /home/dmdba/.bash_profile
}

initial_dmdata() {
su - dmdba -c "disql SYSDBA/SYSDBA@localhost:${dmport}<<!
sp_set_para_value(2,'ENABLE_ENCRYPT',0);
alter system set 'COMPATIBLE_MODE'=4 spfile;
exit
!
"
}

create_tablespace() {
dmpass='"'${dmsid}opr@1234'"'
su - dmdba -c "disql SYSDBA/SYSDBA@localhost:${dmport}<<!
create tablespace ${dmsid}_DATA datafile '/dmdata/${dmsid}/${dmsid}uat/${dmsid}_DATA_TS.dbf' size 175 autoextend on maxsize 124431 CACHE = NORMAL;
create user ${dmsid}DATA identified by ${dmpass} limit  failed_login_attemps 3,password_lock_time 1, password_grace_time 10 default tablespace ${dmsid}_DATA default index tablespace ${dmsid}_DATA;
grant RESOURCE,VTI,PUBLIC to ${dmsid}DATA;
exit
!
"
}


create_dmopruser() {
oprpass='"'${dmsid}opr@1234'"'
su - dmdba -c "disql SYSDBA/SYSDBA@localhost:${dmport}<<!
create user ${dmsid}OPR identified by ${oprpass} limit  failed_login_attemps 3,password_lock_time 1, password_grace_time 10 default tablespace ${dmsid}_DATA default index tablespace ${dmsid}_DATA;
grant RESOURCE,VTI,PUBLIC to ${dmsid}OPR;
exit
!
"
}

create_dmetluser() {
etlpass='"'${dmsid}etl@1234'"'
su - dmdba -c "disql SYSDBA/SYSDBA@localhost:${dmport}<<!
create user ${dmsid}ETL identified by ${etlpass} limit  failed_login_attemps 3,password_lock_time 1, password_grace_time 10 default tablespace ${dmsid}_DATA default index tablespace ${dmsid}_DATA;
grant RESOURCE,VTI,PUBLIC to ${dmsid}ETL;
exit
!
"
}

modfiy_com() {
    if [ -f /dmdata/${dmsid}/${dmsid}uat/dm.ini ]
    then
        sed -i "s/COMPATIBLE_MODE.*=.*#Server/COMPATIBLE_MODE                 = ${dmcom}               #Server/g" /dmdata/${dmsid}/${dmsid}uat/dm.ini
        elif [ $? -eq 0 ]
        then
            echo -e "\033[32m dm.ini文件参数COMPATIBLE_MODE        [Successd] \033[0m"
    else
        echo -e "/dmdata/${dmsid}/${dmsid}uat/dm.ini    文件不存在!!! \033[0m"
    fi
}

output_info() {
    ipinfo=`ip address |grep 10.241 | awk -F '\\/' '{print $1}'`
    echo -e "SID: \t ${dmsid}" >> /root/${dmsid}
    if [ ${dmchar} -eq 0 ]
    then
        echo -e "字符集: \t\t\t\t GB18030" >> /root/${dmsid}
    else
        echo -e "字符集: \t\t\t\t UTF8" >> /root/${dmsid}
    fi

    echo -e "簇大小: \t\t\t\t ${dmex}" >> /root/${dmsid}
    echo -e "页大小: \t\t\t\t ${dmpage}" >> /root/${dmsid}
    echo -e "端口号: \t\t\t\t ${dmport}" >> /root/${dmsid}

    if [ ${dmcase} -eq 0 ]
    then
        echo -e "大小写是否敏感: \t\t\t\t 否" >> /root/${dmsid}
    else
        echo -e "大小写是否敏感: \t\t\t\t 是" >> /root/${dmsid}
    fi

    if [ ${dmchvar} -eq 0 ]
    then
        echo -e "Varchar类型以字符为单位: \t\t\t\t 否 " >> /root/${dmsid}
    else
        echo -e "Varchar类型以字符为单位: \t\t\t\t 是 " >> /root/${dmsid}
    fi
    echo -e "Dm Ini文件参数: \t\t\t\t COMPATIBLE_MODE=${dmcom}"  >> /root/${dmsid}

    echo -e "测试版本:\t\t\t\t ${ipinfo} -03134283914-20220927-170566-20009 Pack3" >> /root/${dmsid}
    echo -e "测试用户和表空间:\t\t\t\t ${ipinfo} ${dmport} , ${ipinfo} ${dmport} 表空间名${dmsid}_DATA 用户${dmsid}data 密码${dmsid}@1234 用户${dmsid}opr 密码${dmsid}opr@1234 用户${dmsid}etl 密码${dmsid}etl@1234" >> /root/${dmsid}
}

#下面是shell脚本执行的开始

add_group
add_user
dm_mount
dm_install
dm_installs
dm_example
regis_servuce
dmserver
set_profile
initial_dmdata



systemctl start DmService${dmsid}uat &> /dev/null
if [ $? -eq 0 ]
then
    create_tablespace &> /dev/null
    create_dmopruser  &> /dev/null
    create_dmetluser  &> /dev/null
    echo -e "\033[32m ${dmsid} User Authorization        [Successd] \033[0m"
fi



ss -utnlp | grep -iE ${dmport} &> /dev/null
if [ $? -eq 0 ]
then
    echo -e "\033[32m ${dmsid} Database instance        [Successd] \033[0m"
    modfiy_com
    systemctl restart DmService${dmsid}uat &> /dev/null
    output_info
else
    echo -e "\033[31m ${dmsid} Database instance        [Faild] \033[0m"
fi


echo -e "\033[32m 达梦数据库安装        [Successd] \033[0m"
echo -e "\033[32m 对应用户密码文件在/root/${dmsid} \033[0m"

posted @ 2023-03-16 15:09  feiyun8616  阅读(766)  评论(0编辑  收藏  举报