Centos7安装达梦(DM7)数据库

Centos7安装达梦(DM7)数据库,也适用于DM8


准备工作:

1.关闭firewalld防火墙和Selinux

#查看firwalld的状态
systemctl status firewalld   #也可以执行 firewall-cmd --state

#停止firewalld
systemctl stop firewalld 

#禁用firewalld
systemctl disable firewalld 

#查看Selinux状态
getenforce

#关闭Selinux
vim /etc/selinux/config
SELINUX=disabled

#重启服务器、立即生效配置
reboot

2.检查系统位数和系统信息是否符合
getconf LONG_BIT
uname -a

3.系统参数调整优化

#系统级别的最大文件句柄数量调整
cat /proc/sys/fs/file-max
383676
一般不同的系统版本,默认值会有差别,有的是383676,有的是592409,一般系统的默认值够用,不用修改,我这里永久性的调整为100万:
vim /etc/sysctl.conf
fs.file-max = 1000000

#立即生效
sysctl -p

#查看用户的所有进程级别的限制
ulimit  -a
core file size          (blocks, -c) 0  //内核文件的大小限制
data seg size           (kbytes, -d) unlimited  //最大数据大小限制,建议用户设置为unlimited
scheduling priority             (-e) 0  //调度优先级,一般根据nice设置
file size               (blocks, -f) unlimited  //最大文件大小限制,建议用户设置为unlimited
pending signals                 (-i) 15086  //信号可以被挂起的最大数,这个值针对所有用户,表示可以被挂起/阻塞的最大信号数量
max locked memory       (kbytes, -l) 64  //内存锁定值的限制
max memory size         (kbytes, -m) unlimited  //最大可以使用内存限制
open files                      (-n) 65535  //进程打开文件数的限制。默认值是1024,默认值太小、通常需要调整该值为65535或unlimited
pipe size            (512 bytes, -p) 8  //管道文件大小限制
POSIX message queues     (bytes, -q) 819200  //可以创建使用POSIX消息队列的最大值,单位为bytes
real-time priority              (-r) 0  //限制程序实时优先级的范围,只针对普通用户
stack size              (kbytes, -s) 8192  //限制进程使用堆栈段的大小
cpu time               (seconds, -t) unlimited  //程序占用CPU的时间,单位是秒
max user processes              (-u) 15086  //限制程序可以fork的进程数,只对普通用户有效
virtual memory          (kbytes, -v) unlimited  //限制进程使用虚拟内存的大小,建议用户设置为unlimited
file locks                      (-x) unlimited  //锁定文件大小限制

#用户进程级别的限制修改:可以通过修改/etc/security/limits.conf文件实现永久生效的修改
#修改表达式解释:
<domain>        <type>  <item>  <value>

<domain>:
       ftpuser //用户
       @student //组
       * //通配符,所有用户
       % //通配符,用在组的语法
       
<type>:
      soft //软限制。警告的设定,可以超过这个设定值,但是若超过则有警告信息
      hard //硬限制。严格的设定,必定不能超过这个设定的数值
       
<item>:
      core //限制内核文件的大小
      data //最大数据大小限制
      fsize //最大文件大小限制
      memlock //最大锁内存地址空间
      nofile //进程打开文件数的限制
      rss //最大持久驻留内存
      stack //最大堆栈大小
      cpu //最大CPU运行时间
      nproc //最大进程数
      as //地址空间限制
      maxlogins //最大登录次数,用户
      maxsyslogins //最大登录次数,登录此系统的最大次数
      priority //用户运行的优先级
      locks //用户锁定文件数限制
      sigpending //信号可以被挂起的最大数
      msgqueue //可以创建使用POSIX消息队列的最大值
      nice //可以设置的优先级,nice [-20, 19]
      rtprio //实时优先级,数字大的优先级高

#进程级打开文件句柄数量
#在文件末尾添加配置内容:

echo "
* soft nofile 65535
* hard nofile 70000
" >> /etc/security/limits.conf

注意:
1)修改后用户需要重新登录才能生效
2)如果调整用户进程级限制达到系统级的最大数时,还需要调整系统级的最大值

4.检查时间和时区(非必要的操作,如果不需要调整校对时间,可以跳过)
timedatectl 
timedatectl list-timezones
timedatectl set-timezone Asia/Shanghai
date -s "20200303 16:30:00"
hwclock -w
hwclock

安装操作

1.拷贝安装包iso到服务器&挂载
拷贝iso文件到/opt/soft/DM7
cd /opt/soft/DM7
mount dm7开发版(rh7-64)20190917.iso /mnt/
cd /mnt/
ls 
DMInstall.bin  DM_Install_en.pdf  DM_Install_zh.pdf  release_en.txt  release_zh.txt

2.创建DM安装用户和安装用户组并初始化用户密码
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba

3.创建目录:
规划好存储dm数据库文件的目录,我这里放在/opt/dm/目录下(如果需要挂载单独的磁盘,提前挂载好,我这里忽略)

mkdir -p /opt/dm/dmdbms
mkdir -p /opt/dm/dmarch
mkdir -p /opt/dm/dmbak
chown -R dmdba:dinstall /opt/dm/
chmod -R 775 /opt/dm/

4.配置好环境变量(如果不是安装在/home/dmdba/dmdbms目录下,而是安装在其他目录,例如/opt/dm/dmdbms,则需要配置。DM_HOME创建的时候会自动设置、这里不用配置)
echo export PATH=$PATH:/opt/dm/dmdbms/bin >> /etc/profile
source /etc/profile        

注意:如果是要用 dmdba 用户安装,则设置 dmdba 用户的环境变量
su - dmdba
echo export PATH=$PATH:/opt/dm/dmdbms/bin >> .bash_profile
source .bash_profile
env |grep PATH
exit

#检查确认一下
#env |grep PATH

5.拷贝安装文件
cp -r /mnt/* /opt/dm/
cd /opt/dm/
# DMInstall.bin 文件就是DM的安装程序。在运行安装程序前,需要赋予DMInstall.bin文件执行权限
chmod 755 ./DMInstall.bin

6.安装
安装方式有三种:图形化安装、命令行交互式安装(交互式配置安装)、命令行静默安装(提前配置好配置模板,基于配置模板安装)

图形安装这里不介绍,一般服务器都没有图形界面。

#命令行静默安装
cd /opt/dm/
./DMInstall.bin -q <配置文件全路径>
需要提前准备好配置文件

#命令行交互式安装,我采用该方式
由于安装过程中使用非root用户,还涉及一些操作需要root权限去执行,所以我直接使用了root进行安装。如果要用 dmdba 用户安装,则先切换有用户 su - dmdba。

cd /opt/dm/
./DMInstall.bin -i 

1)Please select the installer's language (E/e:English C/c:Chinese) [E/e]:
  选择语言,默认使用英语安装,直接回车
  
2)Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:N
  验证Key文件:用户可以选择是否输入 Key 文件路径。不输入则进入下一步安装,输入 Key 文件路径,安装程序将显示 Key 文件的详细信息,如果是合法的 Key 文件且在有效期内,用户可以继续安装。

3)Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:y
 Please Select the TimeZone [21]:21
 选择21([21]: GTM+08=China)
 
4)Please Input the number of the Installation Type [1 Typical]:1

5)Please Input the install path [/opt/dmdbms]:/opt/dm/dmdbms

6)Please Confirm the install path(/opt/dm/dmdbms)? (Y/y:Yes N/n:No) [Y/y]:y

7)Pre-Installation Summary
  Installation Location: /opt/dm/dmdbms
  Require Space: 963M
  Available Space: 88G
  Version Information: 
  Expire Date: 
  Installation Type: Typical
  Confirm to Install? (Y/y:Yes N/n:No):y

8)等待安装完毕。

9)创建DM数据库实例
DM数据库创建实例有两种方式:
dminit命令:这是一种命令行的工具。安装后会生成:dmdbms/bin/dminit
dbca.sh工具,在/dm/dmdbms/tool 目录下,是一种图形化的界面

重点介绍dminit创建实例
dminit是DM数据库初始化工具,dminit工具一共有38个选项,不过这些选项都是可选的并且有默认值。 
在使用dminit创建实例时只需要配置我们需要的参数即可,如果在使用dminit时没有带参数,系统会引导用户进行交互式的设置。
另外需要注意dminit的参数、等号和值之间不能有空格,例如:PAGE_SIZE=16,不能有空格。

#查看帮助
cd /opt/dm/dmdbms/bin/
./dminit help

需要重点关注的几个参数:
PATH                       初始数据库存放的路径
DB_NAME                    数据库名(默认:DAMENG)
INSTANCE_NAME              实例名(默认:DMSERVER)
PORT_NUM                   监听端口号(默认:5236)
CASE_SENSITIVE             大小敏感(默认:Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG       字符集(默认:0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
LENGTH_IN_CHAR             VARCHAR类型长度是否以字符为单位(默认:N),可选值:Y/N,1/0

#带参数的方式执行dminit(默认端口为5236)
./dminit PATH=/opt/dm/dmdbms/data DB_NAME=testdb INSTANCE_NAME=dmsrv

#如果要自定义端口的话
./dminit PATH=/opt/dm/dmdbms/data DB_NAME=testdb INSTANCE_NAME=dmsrv PORT_NUM=5236

[root@localhost bin]# ./dminit PATH=/opt/dm/dmdbms/data DB_NAME=testdb INSTANCE_NAME=dmsrv
initdb V7.6.0.197-Build(2019.09.12-112648)ENT 
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-09-12
 log file path: /opt/dm/dmdbms/data/testdb/testdb01.log
 log file path: /opt/dm/dmdbms/data/testdb/testdb02.log
write to dir [/opt/dm/dmdbms/data/testdb].
create dm database success. 2020-03-03 16:53:59
[root@localhost bin]# 

dminit支持直接不带参数。如果不带参数,会进行交互式配置的方式来创建实例。
虽然dminit有很多选项,这些选项都有默认值,尤其是涉及到page大小的,默认值大部分也是最佳的选择,所以我们只需要指定实例的创建路径和数据库名称即可。


10)注册数据库服务
命令行创建的实例没有对应的服务,不能使用服务进行管理。所以在使用命令行创建实例之后进行注册,重新注册成系统服务,方便用户管理与控制。
注册的shell脚本dm_service_installer.sh在DM_HOME/script/root目录下:
注意:前面创建实例时会自动创建DM_HOME环境变量,这里需要退出登录然后重新登录一下,否则环境变量未生效。
cd $DM_HOME/script/root  
pwd
/opt/dm/dmdbms/script/root
ls
dm_service_installer.sh  dm_service_uninstaller.sh

注册数据库服务
注意:DM7和DM8的注册服务脚本参数有区别,详情可以通过vi dm_service_installer.sh查看;
DM7:-i  "The path of the ini file, is invalid for dmimon,dmap."
DM8:没有-i参数,而是改成了:-dm_ini  "The path of the dm.ini file."

DM7:
[root@localhost root]# ./dm_service_installer.sh -t dmserver -i /opt/dm/dmdbms/data/testdb/dm.ini -p dmsrv
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedmsrv.service to /usr/lib/systemd/system/DmServicedmsrv.service.
Finished to create the service (DmServicedmsrv)

DM8:
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini  /opt/dm/dmdbms/data/testdb/dm.ini -p dmsrv

测试注册是否成功
service  DmServicedmsrv start
以后可以通过:service DmServicedmsrv status|start|stop 来启动和停止dmsrv实例

#查看端口监听状态(dminit初始化时默认PORT_NUM=5236)
netstat -an |grep 5236 

#查看进程
[root@localhost bin]# ps aux|grep dmserver
dmdba    15106  0.4  7.9 2767232 309188 ?      Sl   17:02   0:04 /opt/dm/dmdbms/bin/dmserver /opt/dm/dmdbms/data/testdb/dm.ini -noconsole

#数据库实例创建完成,使用disql登录验证一下:

#如果没有单独设置或修改过的话,默认SYSDBA用户密码相同。
[root@localhost bin]# disql  SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 4.290(ms)
disql V7.6.0.197-Build(2019.09.12-112648)ENT 
SQL> select * from v$version;

LINEID     BANNER                                                         
---------- ---------------------------------------------------------------
1          DM Database Server x64 V7.6.0.197-Build(2019.09.12-112648)ENT  
2          DB Version: 0x7000a

used time: 1.403(ms). Execute id is 4.
SQL> 


[root@localhost ~]# disql SYSDBA/SYSDBA@192.168.1.10:5236
Server[192.168.1.10:5236]:mode is normal, state is open
login used time: 4.324(ms)
disql V7.6.0.197-Build(2019.09.12-112648)ENT 
SQL> 

注意:
1)登录时用户密码大小写是敏感的
2)如果disql命令未找到,请检查第4部,是否环境变量配置正确、是否生效

7.数据库的启动&停止和查看状态
方式1)通过系统服务来启动和停止。
在实例安装结束之后会创建服务脚本:
Windows 则是直接在服务窗口进行:
启动:systemctl start DmServicedmsrv.service
      或 service DmServicedmsrv start
      或 DmServicedmsrv  start //该方式依赖于前面第4部环境变量的配置
关闭:systemctl stop DmServicedmsrv.service
      或 service DmServicedmsrv stop
      或 DmServicedmsrv  stop //该方式依赖于前面第4部环境变量的配置
状态:systemctl status DmServicedmsrv.service
      或 service DmServicedmsrv status
      或 DmServicedmsrv  status //该方式依赖于前面第4部环境变量的配置
      
在Linux 6中,服务是放在/etc/rc.d/init.d目录下,会有一个”DmService+实例名”的文件服务文件,启动和关闭是执行service “DmServer+实例名” stop|start。
在Linux 7中,服务文件存放在/usr/lib/systemd/system目录下,名称改成:DmServicedmsrv.service。

方式2)通过脚本启动和停止。
Linux通过脚本启动:/opt/dm/dmdbms/tool/dmservice.sh
/opt/dm/dmdbms/bin/dmserver /opt/dm/dmdbms/data/testdb/dm.ini -noconsole & 

方式3)命令行模式
命令行模式使用dmserver命令来启动和关闭实例。该命令在DM_HOME/bin目录下。
dmserver [ini_file_path] [-noconsole] [mount]
说明:
1. Dmserver 命令行启动参数可指定 dm.ini 文件的路径,非控制台方式启动及指定数据库是否以 MOUNT 状态启动。
2. Dmserver 启动时可不指定任何参数,默认使用当前目录下的 dm.ini 文件,如果当前目录不存在 dm.ini 文件,则无法启动;
3. Dmserver 启动时可以指定-noconsole 参数。如果以此方式启动,则无法通过在控制台中输入服务器命令。 
当不确定启动参数的使用方法时,可以使用 help 参数,将打印出格式、参数说明和使用示例。使用方法如下: 
dmserver help 
当以控制台方式启动 Dmserver 时,用户可以在控制台输入一些命令,服务器将在控制台打印出相关信息或执行相关操作。

命令行方式和其他两种方式的区别:
命令行方式默认也是将数据库启动到open状态,但也可以在启动时指定启动到mount状态,从而可以维护开文件、进程归档配置、数据库普通模式或主备机模式切换等操作。在进行备份恢复时也常用命令行模式启动。


8.许可证(License) 的安装:
用户安装DM时,如果有授权License文件,指定key file 导入相应的许可证(License)。License的载体是一个加密文件dm.key,内容是达梦公司对用户使用 DM 软件的授权。
DM 软件安装后,如果需要得到更多授权的用户,则需要停止服务后替换dm.key文件。

如果下载的试用版,无授权License文件,可以不指定,达梦数据库试用期限为一年,官网下载安装包已经把开始时间和截止时间内置好了,官网定期更新安装包版本。
查看什么时候到期(EXPIRED_DATE为截止日期):
select * from v$license;


9.卸载数据库
用户在DM安装目录下,找到卸载程序uninstall.sh来执行卸载。
#执行卸载脚本命令行卸载需要添加参数-i
cd /opt/dm/dmdbms/
./uninstall.sh -i
1)运行卸载程序,按照提示输入Y进行卸载
2)显示卸载进度。如果是在Linux(Unix)系统下,使用非root用户卸载完成时,终端提示“请以root系统用户执行命令”。用户需要手动执行相关命令。


10.创建数据库用户

disql SYSDBA/SYSDBA@192.168.1.10:5236
CREATE TABLESPACE USER_TBS DATAFILE '/opt/dm/dmdbms/data/testdb/my_temp01.dbf' SIZE 10240;
ALTER TABLESPACE USER_TBS ADD DATAFILE '/opt/dm/dmdbms/data/testdb/my_temp02.dbf' SIZE 10240;

CREATE TABLESPACE USER_IDX DATAFILE '/opt/dm/dmdbms/data/testdb/my_idx01.dbf' SIZE 4096;
ALTER TABLESPACE USER_IDX ADD DATAFILE '/opt/dm/dmdbms/data/testdb/my_idx02.dbf' SIZE 4096;

CREATE USER DAMENG IDENTIFIED BY "DAMENG123"  DEFAULT TABLESPACE "USER_TBS" DEFAULT INDEX TABLESPACE "USER_IDX";

用户授权:

GRANT DBA TO DAMENG;

如果不想授予DBA权限,则可以根据实际情况授予相关权限,例如:

GRANT CREATE TABLE,SELECT TABLE,UPDATE TABLE,INSERT TABLE to DAMENG;

#切换到DAMENG用户创建表

CONNECT DAMENG/DAMENG123

CREATE TABLE  TEST01(
    ID bigint not null, 
    NAME  varchar(255) null,
    CONSTRAINT  PK_TEST01  PRIMARY KEY (ID)
);
COMMIT;

INSERT INTO TEST01 VALUES (1, 'aa');
INSERT INTO TEST01 VALUES (2, 'bb'), (3, 'cc'), (4, 'dd');
COMMIT;

SELECT * FROM TEST01;


如果要创建多个数据库实例的话,可以 dminit 继续初始化其他实例 & dm_service_installer.sh 注册对应的数据库服务。
注意:初始化数据库时端口(PORT_NUM)不能冲突,否则会导致注册数据库服务后、启动数据库服务时报错。

[root@localhost root]# cd /opt/dm/dmdbms/bin/
[root@localhost bin]# ./dminit help
[root@localhost bin]# ./dminit PATH=/opt/dm/dmdbms/data DB_NAME=utf8db INSTANCE_NAME=dmsrvinst02 PORT_NUM=5237 CHARSET=1 LENGTH_IN_CHAR=1
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
......
 log file path: /opt/dm/dmdbms/data/utf8db/utf8db01.log
 log file path: /opt/dm/dmdbms/data/utf8db/utf8db02.log
write to dir [/opt/dm/dmdbms/data/utf8db].
create dm database success. ......

指定的目录下会自动生成 utf8db 数据库目录
注意:如果不是dmdba用户、而是 root 用户初始化操作,还需要修改生成的数据库目录用户组属性,否则后面注册服务后启动服务会因为没有权限而失败。
[root@localhost bin]# chown dmdba:dinstall -R /opt/dm/dmdbms/data/utf8db
[root@localhost bin]# ls -l /opt/dm/dmdbms/data/utf8db
[root@localhost bin]# cd $DM_HOME/script/root
[root@localhost root]# ls -l
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini  /opt/dm/dmdbms/data/utf8db/dm.ini -p dmsrvinst02

注册后的数据库服务名为:DmService+INSTANCE_NAME

[root@localhost root]# service  DmServicedmsrvinst02 start
[root@localhost root]# service  DmServicedmsrvinst02 status
[root@localhost root]# systemctl  status DmServicedmsrvinst02.service
[root@localhost root]# netstat -an |grep 5237

[root@localhost root]# disql SYSDBA/SYSDBA@localhost:5237
SQL> SELECT * FROM V$VERSION;

LINEID     BANNER                   
---------- -------------------------
1          DM Database Server 64 V8 
2          DB Version: 0x7000c
used time: 3.442(ms). Execute id is 53500.
SQL> 
SQL> SELECT UNICODE FROM dual;

LINEID     UNICODE    
---------- -----------
1          1
used time: 0.585(ms). Execute id is 53501.
SQL> 
SQL> SELECT * FROM V$PARAMETER WHERE NAME LIKE '%LENGTH_IN_CHAR%';

LINEID     ID          NAME           TYPE      VALUE SYS_VALUE FILE_VALUE DESCRIPTION                                              
---------- ----------- -------------- --------- ----- --------- ---------- ---------------------------------------------------------
1          630         LENGTH_IN_CHAR READ ONLY 1     1         0          Column max length in CHAR or BYTE, 0: in BYTE, 1: in CHAR
used time: 4.297(ms). Execute id is 53502.
SQL> 
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值