中标麒麟V7部署DM8达梦8数据库详解

系统设置

关闭防火墙

#查看防火墙状态
[root@neokylin7 ~]# firewall-cmd --state
running
#临时停止
[root@neokylin7 ~]# systemctl stop firewalld.service
[root@neokylin7 ~]# firewall-cmd --state
not running
#彻底停止
[root@neokylin7 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

关闭SELinux

#查看selinux状态
[root@neokylin7 ~]# sestatus
SELinux status:                 disabled
#本机为永久关闭状态,SELINUX=disabled
[root@neokylin7 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

如果没有停止

#临时关闭
[root@neokylin7 ~]# setenforce 0

创建用户及用户组

#创建用户组
[root@neokylin7 ~]# groupadd dinstall
#创建用户
[root@neokylin7 ~]# useradd -g dinstall dmdba
#设置dmdba密码
[root@neokylin7 ~]# passwd dmdba
#查看用户
[root@neokylin7 ~]# id dmdba
#修改安装盘所在目录权限
[root@neokylin7 ~]# chown dmdba.dinstall -R /dm8
#查看修改后的目录权限
[root@neokylin7 ~]# ls -dl /dm8
drwxr-xr-x 2 dmdba dinstall 27 7月   6 21:08 /dm8

修改环境变量

#修改最大文件打开数
#这种方式需要重启才生效
#先查看系统允许的最大值
[root@neokylin7 ~]# sysctl -n -e fs.file-max
381761
[root@neokylin7 ~]# vim /etc/security/limits.conf
#添加以下两行,*代表所有用户生效,
* soft nofile 381761
* hard nofile 381761
#立即生效方式,但是重启会失效
[root@neokylin7 ~]# ulimit -n 65536
#dmdba的profile
[root@neokylin7 ~]# vim /home/dmdba/.bash_profile
#在最后增加
export DM_HOME=/dm8app
export PATH=$DM_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin

挂载安装盘

#查看安装盘类型
[root@kylin7 dm8]# file ./dm8_setup.iso
./dm8_setup.iso: # ISO 9660 CD-ROM filesystem data '__'
#用root用户挂载安装盘
[root@kylin7 dm8]# mount -o loop dm8_setup.iso /mnt/
mount: /dev/loop0 写保护,将以只读方式挂载

图形化安装过程

[dmdba@neokylin7 dm8app]$ cd /mnt/
[dmdba@neokylin7 mnt]$ ll
总用量 633569
-r-xr-xr-x 1 root root 645819977 4月  29 16:51 DMInstall.bin
-r-xr-xr-x 1 root root   2951496 4月  29 16:04 DM_Install.pdf
-r-xr-xr-x 1 root root       848 4月  29 16:07 release_en.txt
-r-xr-xr-x 1 root root       953 4月  29 16:07 release_zh.txt
[dmdba@neokylin7 mnt]$ ./DMInstall.bin
#过程非常简单,除了修改安装目标路径,其它都是默认的

注意:图形界面安装,要么直接在服务器上装,要么配置好DISPLAY变量,把GUI打到本地

交互式命令安装

[dmdba@neokylin7 dm8app]$ cd /mnt/
[dmdba@neokylin7 mnt]$ ll
总用量 633569
-r-xr-xr-x 1 root root 645819977 4月  29 16:51 DMInstall.bin
-r-xr-xr-x 1 root root   2951496 4月  29 16:04 DM_Install.pdf
-r-xr-xr-x 1 root root       848 4月  29 16:07 release_en.txt
-r-xr-xr-x 1 root root       953 4月  29 16:07 release_zh.txt
[dmdba@neokylin7 mnt]$ ./DMInstall.bin -i
#过程非常简单,除了修改安装目标路径,其它都是默认的
#要用dmdba用户安装,不建议用root用户,需要提前创建安装路径,并授权给dmdba

安装后,需要确认.bash_profile文件是否正确,正确如下:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/data/dm8app/bin"
export DM_HOME="/data/dm8app"
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/.local/bin:$HOME/bin

安装目录结构

[dmdba@neokylin7 dm8app]$ ll
总用量 40
drwxr-xr-x  6 dmdba dinstall 8192 7月   7 00:49 bin                        #库文件和常用的命令(达梦)
drwxr-xr-x  2 dmdba dinstall   30 7月   7 00:48 bin2                        #UTF8
drwxr-xr-x  3 dmdba dinstall   19 7月   7 00:48 desktop                #桌面
drwxr-xr-x  3 dmdba dinstall  151 7月   7 00:49 doc                        #帮助文档
drwxr-xr-x 10 dmdba dinstall  103 7月   7 00:49 drivers                #驱动(JDBC等)
drwxr-xr-x  2 dmdba dinstall 4096 7月   7 00:48 include                #头文件(.h)
drwxr-xr-x  2 dmdba dinstall   94 7月   7 00:48 jar                        #jar包(逻辑备份、数据挖掘、数据快速加载)
drwxr-xr-x  6 dmdba dinstall   54 7月   7 00:48 jdk                        #java
-rwxr-xr-x  1 dmdba dinstall 1066 7月   7 00:48 license_en.txt    #许可信息-英文
-rwxr-xr-x  1 dmdba dinstall 1128 7月   7 00:48 license_zh.txt    #许可信息-中文
drwxr-xr-x  2 dmdba dinstall  117 7月   7 00:49 log                        #日志
-rwxr-xr-x  1 dmdba dinstall  848 7月   7 00:48 release_en.txt    #版本信息-英文
-rwxr-xr-x  1 dmdba dinstall  953 7月   7 00:48 release_zh.txt    #版本信息-中文
drwxr-xr-x  6 dmdba dinstall   92 7月   7 00:48 samples                #示例
drwxr-xr-x  3 dmdba dinstall   37 7月   7 00:48 script                    #脚本
drwxr-xr-x  9 dmdba dinstall 4096 7月   7 00:49 tool                        #客户端工具
drwxr-xr-x  3 dmdba dinstall   97 7月   7 00:49 uninstall            #卸载
-rwxr-xr-x  1 dmdba dinstall 2433 7月   7 00:49 uninstall.sh        #卸载
drwxr-xr-x  2 dmdba dinstall   92 7月   7 00:49 web                        #DEM(达梦Enterprise Manager)

创建数据库和管理实例

GUI创建数据库

[dmdba@neokylin7 tool]$ pwd
/data/dm8app/tool
[dmdba@neokylin7 tool]$ ./dbca.sh

联机分析处理=OLAP、联机事务处理=OLTP

日志文件至少要两组

簇:数据库申请空间最小的逻辑单位,对应Oracle的区

页:存放数据的最小逻辑单位,对应Oracle的块

字符集:只有GB18030、UTF8

密码不改的话,默认是:SYSDBA/SYSDBA,这里使用默认密码

以root身份执行这三条命令

达梦识别数据库用的是端口号

Oracle识别数据库用的是SID

MySQL识别数据库用的是端口号

CLI创建数据库

dminit(相当于create database)

[dmdba@neokylin7 ~]$ dminit path=/data/dm8data/dm/data db_name=DM instance_name=TEST port_num=5237
initdb V8
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2021-04-28
 log file path: /data/dm8data/dm/data/DM/DM01.log
 log file path: /data/dm8data/dm/data/DM/DM02.log
write to dir [/data/dm8data/dm/data/DM].
create dm database success. 2020-07-07 02:00:02

查看已注册的服务

[root@neokylin7 root]# systemctl list-unit-files | grep D
DmAPService.service                           enabled
DmServiceDMSERVER.service                     enabled

注册服务

[root@neokylin7 root]# pwd
/data/dm8app/script/root
[root@neokylin7 root]# ll
总用量 44
-rwxr-xr-x 1 dmdba dinstall 26872 7月   7 00:49 dm_service_installer.sh
-rwxr-xr-x 1 dmdba dinstall  8571 7月   7 00:49 dm_service_uninstaller.sh
-rwxr-xr-x 1 dmdba dinstall   643 7月   7 00:49 root_installer.sh
#执行注册
[root@neokylin7 root]# ./dm_service_installer.sh -t dmserver -p TEST -dm_ini /data/dm8data/dm/data/DM/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceTEST.service to /usr/lib/systemd/system/DmServiceTEST.service.
创建服务(DmServiceTEST)完成
[root@neokylin7 root]# systemctl list-unit-files | grep D
DmAPService.service                           enabled
DmServiceDMSERVER.service                     enabled
DmServiceTEST.service                         enabled
#查看服务状态
[root@neokylin7 root]# systemctl status DmServiceTEST.service
● DmServiceTEST.service - Dameng Database Service(DmServiceTEST).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceTEST.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
#启用服务
[root@neokylin7 root]# systemctl enable DmServiceTEST.service
[root@neokylin7 root]# systemctl status DmServiceTEST.service
● DmServiceTEST.service - Dameng Database Service(DmServiceTEST).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceTEST.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
#启动服务
[root@neokylin7 root]# systemctl start DmServiceTEST.service
[root@neokylin7 root]# netstat -nltp | grep 523
tcp6       0      0 :::5236                 :::*                    LISTEN      98135/dmserver
tcp6       0      0 :::5237                 :::*                    LISTEN      99149/dmserver

连接数据库

DM管理工具

[dmdba@neokylin7 tool]$ pwd
/data/dm8app/tool
[dmdba@neokylin7 tool]$ ./manager

如果提示错误,错误号为6001,消息提示:网络通信异常

原因可能是:

  1. 数据库没打开
  2. 网络异常
  3. 达到最大会话连接数

disql

存在于两个位置(bin、tool)

bin目录下的disql用法

默认端口

[dmdba@neokylin7 bin]$ ./disql
disql V8
用户名:SYSDBA
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 2.949(毫秒)
SQL>

非默认端口

[dmdba@neokylin7 bin]$ ./disql sysdba/SYSDBA@127.0.0.1:5237
服务器[127.0.0.1:5237]:处于普通打开状态
登录使用时间: 3.314(毫秒)
disql V8
SQL>

tool目录下的disql用法

默认端口号

[dmdba@neokylin7 tool]$ ./disql
disql V8
SQL> conn sysdba/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 2.931(毫秒)
SQL>

非默认端口号

[dmdba@neokylin7 tool]$ ./disql
disql V8
SQL> conn sysdba/SYSDBA@127.0.0.1:5237
服务器[127.0.0.1:5237]:处于普通打开状态
登录使用时间: 2.492(毫秒)
SQL>

disql支持ipv6连接,@后面跟ipv6地址

管理实例

实例启停

启停服务身份:

root、数据库用户都可以,但是数据库管理员用户不能停止root用户启动的服务

启动和关闭实例的三种方式:

  1. 达梦服务查看器
  2. dmserver
  3. 脚本

服务状态:

  1. OS命令判断:

    ps -ef | grep dmserver

    netstat -nltp | grep 5236

    systemctl status DmServiceDMSERVER

[root@neokylin7 ~]# systemctl status DmServiceTEST.service
● DmServiceTEST.service - Dameng Database Service(DmServiceTEST).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceTEST.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2020-07-07 02:12:20 CST; 28min ago
  Process: 99122 ExecStart=/data/dm8app/bin/DmServiceTEST start (code=exited, status=0/SUCCESS)
 Main PID: 99149 (dmserver)
    Tasks: 52
   CGroup: /system.slice/DmServiceTEST.service
           └─99149 /data/dm8app/bin/dmserver /data/dm8data/dm/data/DM/dm.ini -noconsole
7月 07 02:12:05 neokylin7 systemd[1]: Starting Dameng Database Service(DmServiceTEST)....
7月 07 02:12:20 neokylin7 DmServiceTEST[99122]: [35B blob data]
7月 07 02:12:20 neokylin7 systemd[1]: Started Dameng Database Service(DmServiceTEST)..
  1. 服务查看器

用这种方式启停服务,必须用root帐户(RHEL7开始)

  1. 达梦脚本(推荐方式)

    如果拿不到root密码,用这种方式

    名称格式:DmService+实例名

    生产环境不能使用kill与killall命令去结束数据库进程

    [root
    @neokylin7 ~]# su - dmdba
    上一次登录:二 7月  7 02:19:45 CST 2020pts/3 上
    [dmdba
    @neokylin7 ~]$ cd /data/dm8app/bin
    [dmdba
    @neokylin7 bin]$ pwd
    /data/dm8app/bin
    [dmdba
    @neokylin7 bin]$ ./DmService
    DmServiceDMSERVER  DmServiceTEST
    [dmdba
    @neokylin7 bin]$ ./DmServiceTEST stop
    Stopping DmServiceTEST:                                    [ OK ]
    [dmdba
    @neokylin7 bin]$ ./DmServiceTEST start
    Starting DmServiceTEST:                                    [ OK ]
    

    另一个地方,/usr/lib/systemd/system,需要用root运行此脚本

    [dmdba
    @neokylin7 system]$ pwd
    /usr/lib/systemd/system
    [dmdba
    @neokylin7 system]$ ll | grep DM
    -rw-r--r--  1 dmdba dinstall  289 7月   7 01:41 DmServiceDMSERVER.service
    
  2. dmserver(调试)

    如果数据库起不来了,可以用这种方式定位问题,与oracle不一样,dm不能分步启动

    [dmdba
    @neokylin7 bin]$ ./DmServiceTEST stop
    Stopping DmServiceTEST:                                    [ OK ]
    [dmdba
    @neokylin7 bin]$ ./dmserver /data/dm8data/dm/data/DM/dm.ini
    file dm.key not found, use default license!
    version info: develop
    Use normal os_malloc instead of HugeTLB
    Use normal os_malloc instead of HugeTLB
    DM Database Server x64 V8 1-1-78-20.04.28-121039-ENT  startup...
    Database mode = 0, oguid = 0
    License will expire on 2021-04-28
    file lsn: 36297
    ndct db load finished
    ndct fill fast pool finished
    iid page's trxid[4008]
    NEXT TRX ID = 4009
    pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages
    pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages
    total 0 active crash trx, pseg_crash_trx_rollback begin ...
    pseg_crash_trx_rollback end
    purg2_crash_cmt_trx end, total 0 page purged
    set EP[0]'s pseg state to inactive
    pseg recv finished
    nsvr_startup end.
    aud sys init success.
    aud rt sys init success.
    systables desc init success.
    ndct_db_load_info success.
    nsvr_process_before_open begin.
    nsvr_process_before_open success.
    total 0 active crash trx, pseg_crash_trx_rollback begin ...
    pseg_crash_trx_rollback end
    SYSTEM IS READY.
    #这里按了ctrl+c
    ^CServer is stopping...
    listener closed  and all sessions disconnected
    purge undo records in usegs...OK
    full check point starting...
    generate force checkpoint, rlog free space[536764928], used space[97792]
    ckpt_lsn, ckpt_fil, ckpt_off are set as (37555, 0, 8007680)
    checkpoint: 0 pages flushed.
    checkpoint finished, rlog free space, used space is (536859136, 3584)
    full check point end.
    shutdown audit subsystem...OK
    shutdown schedule subsystem...OK
    shutdown timer successfully.
    pre-shutdown MAL subsystem...OK
    shutdown worker threads subsystem...OK
    shutdown local parallel threads pool successfully.
    shutdown replication subsystem...OK
    shutdown sequence cache subsystem...OK
    wait for mtsk link worker to exit..OK
    shutdown mpp session subsystem...OK
    wait for rapply is all over... OK
    rapply worker threads exit successfully.
    pre ending task & worker threads...OK
    shutdown dblink subsystem...OK
    shutdown session subsystem...OK
    shutdown rollback segments purging subsystem...OK
    shutdown rps subsystem...OK
    shutdown transaction subsystem...OK
    shutdown locking subsystem...OK
    shutdown dbms_lock subsystem...OK
    ending tsk and worker threads...OK
    ckpt2_exec_immediately begin.
    ckpt_lsn, ckpt_fil, ckpt_off are set as (37555, 0, 8011264)
    checkpoint: 0 pages flushed.
    checkpoint finished, rlog free space, used space is (536847360, 15360)
    ckpt_lsn, ckpt_fil, ckpt_off are set as (37689, 0, 8026624)
    checkpoint: 0 pages flushed.
    checkpoint finished, rlog free space, used space is (536862720, 0)
    ckpt_lsn, ckpt_fil, ckpt_off are set as (37689, 0, 8026624)
    checkpoint: 0 pages flushed.
    checkpoint finished, rlog free space, used space is (536862720, 0)
    shutdown archive subsystem...OK
    shutdown redo log subsystem...OK
    shutdown MAL subsystem...OK
    shutdown message compress subsystem successfully.
    shutdown task subsystem...OK
    shutdown trace subsystem...OK
    shutdown svr_log subsystem...OK
    shutdown plan cache subsystem...OK
    shutdown file subsystem...OK
    shutdown database dictionary subsystem...OK
    shutdown mac cache subsystem...OK
    shutdown dynamic login cache subsystem...OK
    shutdown ifun/bifun/sfun/afun cache subsystem...OK
    shutdown crypt subsystem...OK
    shutdown pipe subsystem...OK
    shutdown compress component...OK
    shutdown slave redo subsystem...OK
    shutdown kernel buffer subsystem...OK
    shutdown SQL capture subsystem...OK
    shutdown control file system...OK
    shutdown dtype subsystem...OK
    shutdown huge buffer and memory pools...OK
    close lsnr socket
    DM Database Server shutdown successfully.
    

    这种方式,终端窗口不嫩关闭

实例启动过程

第一阶段:shutdown->mount

启动后台进程或者线程,根据dm.ini分配共享内存,根据dm.ini找到控制文件,并且打开控制文件。

第二阶段:mount->open

根据控制文件,打开所有的数据文件和重做日志文件

实例关闭过程

第一阶段:open->suspend

不允许向数据库写入数据

第二阶段:suspend->shutdown

释放(共享内存、进程、关闭文件)

看日志熟悉启动和关闭的过程($DM_HOME/log)

[dmdba@neokylin7 log]$ pwd
/data/dm8app/log
[dmdba@neokylin7 log]$ ll
总用量 604
-rw-rw-rw- 1 dmdba dinstall      0 7月   7 00:49 DmAPService.log
-rw-r--r-- 1 dmdba dinstall    429 7月   7 00:49 dm_dmap_202007.log
-rw-r--r-- 1 dmdba dinstall  40449 7月   7 09:49 dm_DMSERVER_202007.log
-rw-rw-rw- 1 dmdba dinstall  24505 7月   7 09:49 DmServiceDMSERVER.log
-rw-rw-rw- 1 dmdba dinstall   1742 7月   7 09:50 DmServiceTEST.log
-rw-rw-rw- 1 dmdba dinstall   1339 7月   7 09:35 dmsvc_sh.log
-rw-r--r-- 1 dmdba dinstall  85020 7月   7 09:50 dm_TEST_202007.log
-rw-r--r-- 1 dmdba dinstall    726 7月   7 09:35 dm_unknown_202007.log
-rw-r--r-- 1 dmdba dinstall 438917 7月   7 00:49 install_ant.log
-rwxr-xr-x 1 dmdba dinstall    545 7月   7 00:50 install.log
-rw-r--r-- 1 dmdba dinstall   1786 7月   7 01:46 tool.log
[dmdba@neokylin7 log]$ vim ./DmServiceTEST.log

数据库状态:open mount suspend

查看实例状态

[dmdba@neokylin7 ~]$ disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 5.503(毫秒)
SQL> select instance_name,status$ from v$instance;
行号     INSTANCE_NAME STATUS$
---------- ------------- -------
1          DMSERVER      OPEN
已用时间: 3.049(毫秒). 执行号:1551.
SQL> exit
[dmdba@neokylin7 ~]$ disql sysdba/SYSDBA@127.0.0.1:5237
服务器[127.0.0.1:5237]:处于普通打开状态
登录使用时间: 2.981(毫秒)
disql V8
SQL> select instance_name,status$ from v$instance;
行号     INSTANCE_NAME STATUS$
---------- ------------- -------
1          TEST          OPEN
已用时间: 1.867(毫秒). 执行号:4.
SQL>

状态切换

open—-mount

Oralce不能直接从open到mount

[dmdba@neokylin7 ~]$ disql sysdba/SYSDBA@127.0.0.1:5237
服务器[127.0.0.1:5237]:处于普通配置状态
登录使用时间: 2.419(毫秒)
disql V8
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.723. 执行号:0.
SQL> select instance_name,status$ from v$instance;
行号     INSTANCE_NAME STATUS$
---------- ------------- -------
1          TEST          MOUNT
已用时间: 1.657(毫秒). 执行号:5.
SQL> alter database open;
操作已执行
已用时间: 00:00:01.723. 执行号:0.

mount状态可连接,但是不能写入,写入hang住

mount—-open

open—-suspend(挂起)

suspend—-open

请使用浏览器的分享功能分享到微信等