在linux环境下全程使用命令行方式安装和初始化一个数据库,并注册服务后,以服务的方式启动。要求:
- 初始化一个实例名为DMOA,库名为DMOA,端口号为5234,页大小为16,字符集为gb18030,大小写敏感为是的库
- 使用disql新建一个名称为DMDBA的用户,设置密码为dameng_dba,并授予dba角色权限
- 使用disql新建一个名为TS_DMOA的表空间,新建一个名为DMOA的用户,并设置密码为dameng_oa,设置该用户的默认表空间为TS_DMOA。并授予resource角色权限
- 使用DMOA用户新建表USERS,并插入数据,然后查询确认数据已经入库
1,配置linux环境
1.1,安装vmware
使用的安装包:VMware-workstation-full-16.1.1-17801498.exe
修改安装路径为:D:\VMware
1.2,新建kylin虚拟机
使用的光盘映像文件:Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso
修改安装路径为:D:\xuniji\kylin
修改虚拟机设置,内存设置为8G(4G在安装过程中会报错内存不足),处理器内核总数为8(不确定更小时会不会安装失败),硬盘设置为60G(20G会报错),网络适配器为NAT模式
1.3,配置网络环境
由于dm8安装过程需要保持网络通畅,所以需要保证虚拟机能上网
1.3.1,设置VMware网络信息
打开VMware,右键【编辑】,点开【虚拟网络编辑器】,查看虚拟机网卡信息,发现VMnet1是仅主机模式,VMnet8是NAT模式,说明虚拟机上网使用的网卡是VMnet8,对应的子网地址是192.168.37.0
修改NAT设置,网关为192.168.37.2
修改DHCP设置,网段为128-254
1.3.2,设置主机网络信息
打开【设置】-【网络和Internet】-【高级网络设置】,点击下拉箭头,【查看其它属性】,点击右拉箭头
点击两个【编辑】,将网络信息设置为与虚拟机kylin同一个子网(192.168.37.0)的对应信息。
IP分配方式改为手动,网关改为192.168.37.2,掩码为255.255.255.0,DNS服务器改为114.114.114.114和8.8.8.8(备用)
win+R,cmd,打开命令行,输入ipconfig,检查VMware相关网卡的IP地址
1.3.3,设置虚拟机网络信息
Ctrl+Alt+T,打开命令行,输入ip addr,发现kylin虚拟机使用的网卡是ens33
查看ens33的配置文件
cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
编辑配置文件ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=5e29dcab-2abd-4fd9-a2e7-d3f03984630a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.37.131
PREFIX=24
NETMASK=255.255.255.0
GATEWAY=192.168.37.2
DNS1=114.114.114.114
DNS2=8.8.8.8
IPV6_PRIVACY=no
修改添加一些重要的参数,其中IPADDR设置为步骤(1)中设置的DHCP网段128-254中的任意值,此处取为192.168.37.131
1.3.4,更新网络
输入service network restart重启网络,输入vi /etc/resolv.conf查看DNS服务器配置,如果没有自动更新,可以手动添加
测试一下是否有网,能ping通就说明网络配置成功
有时候得加www才能ping通,是域名解析的问题,网没问题
2,安装前准备
2.1,安装vmware-tools
点击vmware workstation--虚拟机--安装vmware tools
会自动下载压缩包,然后在文件夹里面鼠标右键解压缩,进入对应解压缩后的文件夹,在命令行运行输入./vmware-install.pl运行启动程序,然后全部默认回车,安装完成。
2.2,设置共享文件夹
在主机上选定文件夹share作为与虚拟机的共享文件夹
右键--属性--共享--高级共享
在vmware上点击虚拟机--设置--选项--共享文件夹
设置完成后,可以在/mnt/hgfs目录下看到share文件夹,里面可以看到主机上的文件
2.3,创建安装用户
如果使用 root 系统用户进行安装,DM 安装程序将更改安装目录的所有者。可分为 以下几种情况: 1) 系统中存在 dmdba 系统用户 DM 将更改安装目录的所有者为 dmdba 系统用户,更改所有组为 dmdba 系统用户的 默认组。 2) 系统中不存在 dmdba 系统用户,但存在 dinstall 组 DM 将创建 dmdba 系统用户,并设置 dmdba 系统用户默认组为 dinstall。DM 将更 改安装目录所有者为 dmdba,更改所有组为 dinstall。 3) 系统中不存在 dmdba 系统用户,也不存在 dinstall 组 DM 将创建 dmdba 系统用户和 dinstall 组,并设置 dmdba 系统用户默认组为 dinstall。DM 将更改安装目录所有者为 dmdba,更改所有组为 dinstall。
故,不建议用户使用 root 系统用户进行安装,同样也不建议用户使用 root 系统用户初始化和运行 DM 数据库系统和客户端工具。
创建安装用户组 dinstall
groupadd -g 12349 dinstall
创建安装用户 dmdba
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
设置用户登录密码
赋予dmdba用户root权限,先修改sudoers文件写权限,修改后改回只读权限
ls -l /etc/sudoers
chmod u+w /etc/sudoers
vi /etc/sudoers
chmod 440 /etc/sudoers
在/etc/sudoers文件中root位置下面添加一行,和root的写得一样就行
2.4,修改系统资源限制
还是需要先修改文件的权限为可读写,编辑之后再改为只读。
使用 root 用户打开 /etc/security/limits.conf
文件进行修改,命令如下:
vi /etc/security/limits.conf
在最后需要添加如下配置:
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
运行ulimit -a命令查看系统资源限制,重启前vs重启后
有时候重启了,但是资源限制没有更新,可以手动修改(最大打开文件、内存不够等容易报错)
ulimit -n 65536
ulimit -e 20
ulimit -l 16384
ulimit -u 65536
ulimit -a
修改完成之后的系统资源限制
2.5,关闭防火墙
一定要关闭防火墙,在部署单机的时候没关好像没啥影响,但是部署实时主备时,没关就不能正常运行,因为监视器没办法收到守护进程的广播,没办法将主备库加入守护组中。
关闭防火墙
systemctl stop firewalld
关闭防火墙开机自启动
systemctl disable firewalld
3,安装dm8
解压缩安装包,在linux中指挂载iso文件
mkdir /mnt/cdrom
mount /mnt/hgfs/share/dm8_20230105_x86_kylin10_64.iso /mnt/cdrom
在\mnt\cdrom目录下可以看到解压后的文件,安装手册和安装程序DMInstall.bin
3.1,图形化安装
要提前开启图形化界面的权限
xhost +
echo $DISPLAY
su - dmdba
export DISPLAY=:0.0
如果希望通过其它机器调用该图形化界面需设置 export DISPLAY=调用图形化机器的IP:0.0,例如,数据库安装机器 IP 为 10.10.12.25,需要在 IP 为 192.132.32.12 的机器上调用图形化界面,需要设置 export DISPLAY=192.132.32.12:0.0
然后在命令行运行bin文件 ,然后和windows上安装的步骤和界面完全一样,参考笔记http://t.csdnimg.cn/cAnwd
su dmdba
./DMInstall.bin
3.2,命令行安装
在命令行运行bin文件,加参数-i表示以命令行形式安装
cd /mnt/cdrom
su dmdba
./DMInstall.bin -i
安装路径选择之前创建用户dmdba时候的授权路径
在命令行参数问答安装结束后,单独要求以root权限执行某些命令
记住自己的安装目录,此处是默认的/home/dmdba/dmdbms
3.3,静默安装
在某些特殊应用场景,用户可能需要非交互式的、通过配置文件进行 DM 的安装,这种情况可以采用以下静默安装的方式,提前将需要的参数写入配置文件,然后执行对应安装命令。
以下为可供参考的完整的配置文件,存放路径为/home/dmdba/auto_install.xml,具体的参数尤其是不可为空的参数根据需要进行修改。
<?xml version="1.0"?>
<DATABASE>
<!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。-->
<LANGUAGE>zh</LANGUAGE>
<!--安装程序的时区配置,缺省为+08:00,取值范围:-12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!-- key 文件路径 -->
<KEY></KEY>
<!--安装程序组件类型,取值范围:0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户端。缺省为 0。 -->
<INSTALL_TYPE>0</INSTALL_TYPE>
<!--安装路径,不允许为空。 -->
<INSTALL_PATH>/home/dmdba/dmdbma</INSTALL_PATH>
<!--是否初始化库,取值范围:Y/N、y/n,不允许为空。 -->
<INIT_DB>y</INIT_DB>
<!--数据库实例参数 -->
<DB_PARAMS>
<!--初始数据库存放的路径,不允许为空 -->
<PATH>/home/dmdba/dmdbms/dm8</PATH>
<!--初始化数据库名字,缺省为 DAMENG,不超过 128 个字符 -->
<DB_NAME>DMOA</DB_NAME>
<!--初始化数据库实例名字,缺省为 DMSERVER,不超过 128 个字符 -->
<INSTANCE_NAME>DMOA</INSTANCE_NAME>
<!--初始化时设置 dm.ini 中的 PORT_NUM,缺省为 5236,取值范围:1024~65534 -->
<PORT_NUM>5234</PORT_NUM>
<!--初始数据库控制文件的路径,文件路径长度最大为 256 -->
<CTL_PATH></CTL_PATH>
<!--初始化数据库日志文件的路径,文件路径长度最大为 256,LOG_PATH 值为空则使用缺省值,如果使用非默认值 LOG_PATH 节点数不能少于 2 个 -->
<LOG_PATHS>
<LOG_PATH>
</LOG_PATH>
</LOG_PATHS>
<!--数据文件使用的簇大小,取值范围:16 页、32 页,缺省为 16 页 -->
<EXTENT_SIZE>16</EXTENT_SIZE>
<!--数据文件使用的页大小,取值范围:4K、8K、16K、32K,缺省为 8K -->
<PAGE_SIZE>16</PAGE_SIZE>
<!--日志文件使用的簇大小,缺省为 256,取值范围为 64~2048 之间的整数 -->
<LOG_SIZE>256</LOG_SIZE>
<!--标识符大小写敏感。取值范围:Y/N y/n 1/0,缺省为 Y -->
<CASE_SENSITIVE>Y</CASE_SENSITIVE>
<!--字符集选项,缺省为 0。0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR -->
<CHARSET>0</CHARSET>
<!--规定 VARCHAR 对象长度的单位。取值范围:0,1。1:所有 VARCHAR 类型对象的长度以字符为单位;0:有 VARCHAR 类型对象的长度以字节为单位。缺省为 0。 -->
<LENGTH_IN_CHAR>0</LENGTH_IN_CHAR>
<!--字符类型在计算 HASH 值时所采用的 HASH 算法类别。取值范围 0,1。0:原始 HASH算法;1:改进的 HASH 算法。缺省为 1。 -->
<USE_NEW_HASH>1</USE_NEW_HASH>
<!--初始化时设置 SYSDBA 的密码,缺省为 SYSDBA,长度在 9 到 48 个字符之间 -->
<SYSDBA_PWD></SYSDBA_PWD>
<!--初始化时设置 SYSAUDITOR 的密码,缺省为 SYSAUDITOR,长度在 9 到 48 个字符之间 -->
<SYSAUDITOR_PWD></SYSAUDITOR_PWD>
<!--初始化时设置 SYSSSO 的密码,缺省为 SYSSSO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSSSO_PWD></SYSSSO_PWD>
<!--初始化时设置 SYSDBO 的密码,缺省为 SYSDBO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSDBO_PWD></SYSDBO_PWD>
<!--初始化时区,默认是东八区。格式为:正负号小时:分钟,取值范围:-12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!--是否启用页面内容校验,取值范围:0,1,2。0:不启用;1:简单校验;2:严格校验(使用 CRC16 算法生成校验码)。缺省为 0 -->
<PAGE_CHECK>0</PAGE_CHECK>
<!--设置默认加密算法,不超过 128 个字符 -->
<EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME>
<!--设置默认 HASH 算法,不超过 128 个字符 -->
<EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME>
<!--设置根密钥加密引擎,不超过 128 个字符 -->
<EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME>
<!--全库加密密钥使用的算法名。算法可以是 DM 内部支持的加密算法,或者是第三方的加密算法。默认使用"AES256_ECB"算法加密,最长为 128 个字节 -->
<ENCRYPT_NAME></ENCRYPT_NAME>
<!--用于加密服务器根密钥,最长为 48 个字节 -->
<USBKEY_PIN></USBKEY_PIN>
<!--设置空格填充模式,取值范围:0,1,缺省为 0 -->
<BLANK_PAD_MODE>0</BLANK_PAD_MODE>
<!--指定 system.dbf 文件的镜像路径,缺省值为空 -->
<SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH>
<!--指定 main.dbf 文件的镜像路径,缺省值为空 -->
<MAIN_MIRROR_PATH></MAIN_MIRROR_PATH>
<!--指定 roll.dbf 文件的镜像路径,缺省值为空 -->
<ROLL_MIRROR_PATH></ROLL_MIRROR_PATH>
<!--是否是四权分立,取值范围:0,1。0:不使用;1:使用。缺省为 0。仅在安全版本下可见和可设置。-->
<PRIV_FLAG>0</PRIV_FLAG>
<!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为 257(含结束符),不包括文件名-->
<ELOG_PATH></ELOG_PATH>
</DB_PARAMS>
<!--是否创建数据库实例的服务,取值范围: Y/N y/n,不允许为空,不初始化数据库将忽略此节点。非 root 用户不能创建数据库服务。 -->
<CREATE_DB_SERVICE>Y</CREATE_DB_SERVICE>
<!--是否启动数据库,取值范围: Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
<STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE>
</DATABASE>
使用预定义的配置文件安装数据库,需要root权限执行
sudo ./DMInstall.bin -q /home/dmdba/auto_install.xml
4,数据库使用
linux中图形化安装和使用与windows类似,若需要主动打开配置助手,需要提前打开图形界面权限。(之后再补充相关过程)
静默安装可以在配置文件中直接预置参数,故只记录命令行安装方式下的使用步骤。
4.1,创建实例
dminit 是 DM 数据库初始化工具,可以利用 dminit 工具提供的各种参数,创建出满足用户需要的数据库实例,该工具位于安装目录的/bin 目录下。此处是/home/dmdba/dmdbms/bin
使用命令查看全部参数信息
./dminit HELP
运行dminit程序时,KEYWORD是dminit 参数关键字,多个参数之间排列顺序无影响,参数之间使用空格间隔。
dminit KEYWORD=value { KEYWORD=value }
例如,初始化一个数据库实例名为DMOA,库名为DMOA,数据库服务器监听端口号为5234,数据文件使用的页大小为16,字符集为gb18030,大小写敏感为是的库。
./dminit PATH=/home/dmdba/dmdbms/DMOA INSTANCE_NAME=DMOA DB_NAME=DMOA PORT_NUM=5234 PAGE_SIZE=16 CHARSET=0 CASE_SENSITIVE=Y
提示创建成功
4.2,开启服务器
4.2.1,前台启动
直接运行./dmserver start命令是会报错的,因为需要选定数据库实例,将实例的配置文件dm.ini作为启动命令的参数
之前实例化的库DMOA的安装路径是/home/dmdba/dmdbms/DMOA/DMOA,所以可以在对应位置找到,也可以直接在文件夹里面搜索出来
启动服务器
./dmserver /home/dmdba/dmdbms/DMOA/DMOA/dm.ini
然后会提示 SYSTEM IS READY,但是不会退出这条命令,过一会又打印了一堆校验信息
因为这是前台启动方式,如果需要运行其他命令需要新开一个命令行窗口
输入exit才会关闭服务器
4.2.2,后台启动
想要使用命令行在后台启动服务器,需要将服务器启动的程序注册为系统服务,这样就可以在后台不间断地运行。用户注册数据库服务可以通过图形化界面和命令行两种方式。
4.2.2.1,命令行方式注册
运行脚本文件dm_service_installer.sh来注册系统命令,查看一下可选参数
其中,-t,服务类型,dmserver,表示注册服务器系统命令
-p,服务名后缀,DMOA,则最终注册的系统服务名字为DmServiceDMOA
-dm_ini,配置文件路径,/home/dmdba/dmdbms/DMOA/DMOA/dm.ini,数据库实例对应的配置文件
运行脚本注册服务
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/DMOA/DMOA/dm.ini -p DMOA
必须要su root切换到系统用户,不然会报错
命令没错,但是没注册成功,提示了一下正确用法(不知道为啥)
重新执行了一遍,就成功了
在/home/dmdba/dmdbms/bin目录下可以看到新注册的服务,即可以运行的脚本
将该系统服务脚本复制到系统文件目录下
cp /home/dmdba/dmdbms/bin/DmServiceDMOA /etc/rc.d/init.d/DmServiceDMOA
然后创建符号链接,便于系统调用
ln -s /etc/rc.d/init.d/DmServiceDMOA /etc/rc.d/rc0.d/K02DmServiceDMOA
ln -s /etc/rc.d/init.d/DmServiceDMOA /etc/rc.d/rc1.d/K02DmServiceDMOA
ln -s /etc/rc.d/init.d/DmServiceDMOA /etc/rc.d/rc2.d/S98DmServiceDMOA
ln -s /etc/rc.d/init.d/DmServiceDMOA /etc/rc.d/rc3.d/S98DmServiceDMOA
ln -s /etc/rc.d/init.d/DmServiceDMOA /etc/rc.d/rc4.d/S98DmServiceDMOA
ln -s /etc/rc.d/init.d/DmServiceDMOA /etc/rc.d/rc5.d/S98DmServiceDMOA
ln -s /etc/rc.d/init.d/DmServiceDMOA /etc/rc.d/rc6.d/K02DmServiceDMOA
启动服务
查看线程,dm.ini文件正在运行,说明服务器已经启动
4.2.2.2,图形化界面注册*
mv /home/dmdba/dmdbms/bin/DmServiceDMOA.service /usr/lib/systemd/system/DmServiceDMOA.service
systemctl enable DmServiceDMOA.service
systemctl start DmServiceDMOA.service
(还未解决)
4.3,使用disql登录
4.3.1,查看disql命令格式
进入对应的目录,安装目录/bin
使用命令查看全部参数信息
./disql -h
4.3.2,预定义用户
现有的预定义用户包括:
- SYS:系统内置用户,不允许登录。常用的数据字典表信息在该用户下。
- SYSDBA:系统管理员,拥有几乎所有权限(除数据库审计和强制访问控制之外的权限)
- SYSAUDITOR:系统审计管理员,具有审计相关权限。
- SYSSSO:系统安全管理员,具有强制访问控制等权限;
- SYSDBO:安全版本才有的用户,安全对象操作员。
4.3.3,登录
现在因为是第一次用disql命令,只能使用默认的预定义用户,可以登录进入之后再用SQL命令新建用户,然后切换用户,所以这里的用户名和密码直接使用默认的SYSDBA
./disql SYSDBA/SYSDBA@192.168.37.131:5234
使用disql命令进入SQL交互查询工具,但是需要按照格式要求输入命令
如果用户名/密码错误,就会提示socket连接失败
4.4,执行SQL命令
- SQL命令有严格的语法规则,每一条语句要添加分号;结尾
- (1)使用disql新建一个名称为DMDBA的用户,设置密码为dameng_dba,并授予dba角色权限
-
create user DMDBA identified by dameng_dba; grant dba to DMDBA;
- (2)使用disql新建一个名为TS_DMOA的表空间,新建一个名为DMOA的用户,并设置密码为dameng_oa,设置该用户的默认表空间为TS_DMOA,并授予resource角色权限
-
CREATE TABLESPACE TS_DMOA DATAFILE '/home/dmdba/dmdbms/DMOA/DMOA/TS_DMOA.DBF' SIZE 128; create user DMOA identified by dameng_oa; alter user DMOA identified by dameng_oa default tablespace TS_DMOA; grant resource to DMOA;
(3)使用DMOA用户新建表USERS,并插入数据,然后查询确认数据已经入库
使用login命令进行用户切换
服务名需要一起输入IP地址:端口,这里是192.168.37.131:5234,不然会socket连接失败
输入上一步创建的用户名和密码,其余无特殊要求的可以直接回车
查看当前用户名,DMOA已经登录成功
select user();
新建表,插入数据,查询数据
CREATE TABLE USERS(NUMBER CHAR(10), NAME CHAR(10), PASSWORD CHAR(10));
INSERT INTO USERS(NUMBER,NAME,PASSWORD) VALUES('10086', 'TOM', '1234');
SELECT * FROM USERS;
5,小结
在linux上面安装dm8比在windows上面复杂许多,但是对我来说其中耽误时间最多的步骤不是在安装数据库,而是使用vmware搭建linux虚拟机环境并配置网络环境,是因为对linux操作不熟练,以及上网搜答案也不太熟练。关于dm单机安装的教程、文档、笔记很多,但是良莠不齐,因为每个人的环境和遇到的问题都不一样,所以今后要更加细心耐心,思考每一个步骤的原理,知其然更知其所以然,不能急于求成。感觉要多卸载安装几次才能比较熟练。
虚拟机虽然用起来麻烦,但是一个大优点就是可以保存快照,这样可以随时切换状态,万一搞崩了还能回滚,全部弄完之后看起来像流程图,也能看清楚整个安装过程的关键节点。