目录
所需软件
虚拟机:VMWare15
操作系统:中标麒麟Linux7
软件:达梦数据库DM8
驱动:ODBC-2.3.0
准备工作
一、将dm8和odbc复制到/opt文件夹
步骤:
(1)在虚拟机的桌面上创建dm8file文件夹(名称自定),并赋予权限,用于临时存储文件
chmod 777 '/home/kylin7/桌面/dm8file'
(2)将dm8和odbc复制到此文件夹(建议安装vmtools后右键复制文件到虚拟机中)
(3)使用命令,将dm8file中的文件复制到/opt下
[root@localhost ~]# cd '/home/kylin7/桌面/dm8file'
[root@localhost ~]# cp dm8_setup_rh7_64_ent_8.1.1.88_20200629.iso /opt/dm8_setup_rh7_64_ent_8.1.1.88_20200629.iso
[root@localhost ~]# cp unixODBC-2.3.0.tar.gz /opt/unixODBC-2.3.0.tar.gz
复制完成后如下:
二、检查glibc所需环境配置
步骤:
使用命令,检查glibc的环境是否已经配置
[root@localhost ~]# rpm -qa|grep glibc
结果如下:
glibc-common-2.17-222.el7.ns7.01.x86_64
glibc-devel-2.17-222.el7.ns7.01.x86_64
glibc-headers-2.17-222.el7.ns7.01.x86_64
glibc-2.17-222.el7.ns7.01.x86_64
三、配置DM工具路径(可选)
在安装完成数据库之后,即完成图形化操作(二)后,可以将dm8的工具路径添加到配置文件中,便于直接操作
步骤:
(1)在dmdba下,打开.bash_profile,并配置bin和tool路径
[dmdba@localhost ~]$ vi .bash_profile
当前的文档内容:(已经存在的文档内容)
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export DM_HOME="/dm8"
增加如下代码:
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
将配置文件生效:
[dmdba@localhost ~]$ source .bash_profile
图形化操作
一、创建账户和文件夹,并配置文件打开参数
1.创建dmdba账户
(1)创建dinstall组
[root@localhost ~]# groupadd dinstall
(2)创建dmdba用户
[root@localhost ~]# useradd -g dinstall dmdba
(3)查看dmdba用户信息
[root@localhost ~]# id dmdba
结果:
uid=1001(dmdba) gid=1002(dinstall) 组=1002(dinstall)
(4)更改dmdba用户密码
[root@localhost ~]# passwd dmdba
2.创建安装所需的文件夹
(1)创建dm8文件夹
[root@localhost ~]# mkdir /dm8
(2)将dm8文件夹赋于的mdba的操作权限
[root@localhost ~]# chown dmdba:dinstall /dm8
(3)修改文件打开数
[root@localhost ~]# vi /etc/security/limits.conf
在limits.conf中增加下列代码
dmdba soft nofile 10240
dmdba hard nofile 65536
二、安装达梦数据库DM8
(1)将dm8软件挂载在/mnt文件夹下
[root@localhost ~]# mount /opt/dm8_setup_rh7_64_ent_8.1.1.88_20200629.iso /mnt
结果:
mount: /dev/loop0 写保护,将以只读方式挂载
(2)切换到dmdba用户
[root@localhost ~]# su - dmdba
(3)安装数据库软件
[dmdba@localhost ~]$ cd /mnt
[dmdba@localhost mnt]$ ./DMInstall.bin
启动图形化界面安装:
这里因为是开发版,没有key文件;如果是正式版本的,可以选择key文件
可以根据需要选择安装的类型,这里选择典型安装即可
这里注意,需要安装到自己创建的文件夹下
这里需要开启另一个终端窗口,使用root执行脚本
执行脚本指令
[root@localhost ~]# /dm8/script/root/root_installer.sh
结果:
移动 /dm8/bin/dm_svc.conf 到/etc目录
修改服务器权限
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
这里点击取消,稍后执行初始化操作
三、初始化数据库实例
(1)直接打开图形化界面
[dmdba@localhost ~]$ dbca.sh
(2)进行图形化操作
注意检查数据库存放位置
填写数据库名称、实例名和端口号
注意参数要求
设置口令,这里设置的是:Dameng123
这里同样需要使用root执行一些脚本
(3).设置兼容sqlserver
打开控制台工具,显示图形化界面:
[dmdba@localhost ~]$ console
找到兼容性选项,将其修改为兼容sqlserver
根据后面的注释,修改兼容性参数
(4)设置密码策略
根据后面的策略说明,进行设置
指令设置:(sql查询窗口)
sp_set_para_value(1,'PWD_POLICY',7)
至此,数据库实例初始化完成
四、创建表空间
注意:下列图形化界面操作使用SYSDBA用户登陆
(1)打开达梦数据库的管理工具,开启图形化界面:
[dmdba@localhost ~]$ manager
(2)链接上面创建的数据库,注意端口号不要写错:
设置表空间的参数时,需要注意各个参数的配置
至此,表空间设置完成
五、创建用户
注意:下列图形化界面操作使用SYSDBA用户登陆
(1)使用指令开启DM管理工具的图形化界面
[dmdba@localhost ~]$ manager
(2)创建用户并填写信息
根据要求填写用户信息,这里的密码为:Dameng123
(3)创建角色并填写信息
授予角色权限
(4)将对应角色授予给DMTEST
授予查询dba_tablespaces的权限
图形化界面操作:
在 对象权限-SYS-视图-系统视图中,找到 DBA_TABLESPACES,选择 select 权限
sql语句操作:
grant select on sys.dba_tablespaces TO dmtest;
六、创建表
注意:下列图形化界面操作使用DMTEST用户登陆
(1)使用DMTEST用户登陆,密码是:Dameng123
创建表的位置在 模式-用户名-表 下
(2)创建DEPT表(先创建这个表,便于之后的外键关联)
注意主键的设置、数据类型设置、非空设置、精度设置等
(3)创建EMP表
注意数据的设置,需要关联DEPT表的主键作为外键
(4)将EMP表和DEPT表进行外键约束
选择外键列,选择参照列
设置完成后,可以查看设置的约束属性
如果创建完成表之后,没有创建外键,则可以通过下列方式创建:
(这里是EMP表的外键引用DEPT表的主键)
七、数据导入
(1)使用终端,切换到dmdba用户,使用DMTEST,密码Dameng123,连接5238上的数据库
[dmdba@localhost ~]$ disql DMTEST/Dameng123@localhost:5238
(2)使用start指令,将sql数据插入到表中
SQL> start /opt/script1.sql
插入后可以使用图形化界面查看,结果如下
直接使用图形化界面操作如下:
(1)打开script1.sql文件,直接全选+复制数据
(2)粘贴到DM管理工具中的查询窗口中,并执行
八、数据库备份
备份之前的准备:
1、在初始化完成数据库实例后,建议直接打开归档设置,便于备份后可以恢复到之前任意时间的数据
(1)切换到dmdba下,打开DM管理工具的图形化界面
[dmdba@localhost ~]$ manager
(2)登陆SYSDBA账号,开启归档设置
注意:在打开归档设置之前,需要将数据库的状态设置为“配置”状态
先点击配置,然后点击转换按钮
最后,别忘记将配置状态修改为打开状态
2-1【冷备份】、 备份之前需要关闭数据库实例
(1)切换到root下,在/dm8/tool下启动数据库服务的图形化界面
[root@localhost tool]# ./dmservice.sh
(2)关闭需要备份的数据库实例
正式备份操作
(1)在终端中开启控制台工具的图形化界面
[dmdba@localhost ~]$ console
(2)选择 备份还原 ,选择 新建备份功能
设置需要备份的路径、名称和备份的类型
备份完成后,即可查看到备份的信息
2-2【热备份】.不需要关闭数据库实例
(1)进入DM管理工具,选择 备份-库备份
(2)设置备份名称和备份路径
3.设置代理环境
4.设置定时任务,在每周日的22点进行完全备份
5.设置定时任务,在周一到周六的22点进行增量备份
九、执行脚本删除数据文件
调用script2.sh,删除表空间
执行如下指令删除:
[dmdba@localhost opt]$ ./script2.sh
存在的问题:
(1)-bash: ./script2.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
这个问题是因为script2.sh在windows系统下进行编译,所以文件中存在\r\n字符,需要转换成\n
解决方案:
使用vi打开script2.sh
使用如下指令修改:
:set ff=unix
:wq
(2)不存在DmServiceDBSERVER数据库实例
由于之前在创建实例时,原先的实例名称为:DmServiceDMSERVER,后来修改实例名称为:DmServiceDBSERVER,可以使用vi命令,修改script2.sh文件中的实例名称
执行脚本完成后,需要将数据进行还原,还原成之前的数据
(1)打开控制台工具界面,进入“还原”界面
选择之前备份文件的目录,执行库还原
(2)还原完毕之后,选择“恢复”功能
恢复类型选择指定归档恢复,选择之前设置归档的目录
(3)完成恢复之后,选择“更新DB_MAGIC”的功能
执行更新DB_MAGIC的操作
十、数据库逻辑导出
使用SYSDBA登陆数据库,在数据库上右键,选择导出
十一、创建视图
登陆DMTEST账号,使用sql语句添加视图
(1)创建VIEW_HIREDATE,存放数据
create or REPLACE VIEW VIEW_HIREDATE AS SELECT * FROM DMTEST.EMP where DMTEST.EMP.HIRE_DATE >= TO_DATE('2006-01-01','YYYY-MM-DD') AND DMTEST.EMP.HIRE_DATE <= TO_DATE('2009-01-01','YYYY-MM-DD');
(2)创建VIEW_SALARY,存放数据
create or REPLACE VIEW VIEW_SALARY AS SELECT e.DEPT_ID,avg(e.salary) AS avgs FROM DMTEST.EMP e GROUP BY e.DEPT_ID HAVING avg(e.SALARY)>12000;
十二、添加索引
这里使用DMTEST账号登陆
(1)在模式中,找到相应的表,新建索引
(2)填写需要设置索引的信息
十三、安装ODBC驱动
安装驱动需要处于root下,执行下列指令操作
[root@localhost ~]# cd /opt
[root@localhost opt]# tar -xvf unixODBC-2.3.0.tar.gz
[root@localhost opt]# cd /opt/unixODBC-2.3.0
[root@localhost unixODBC-2.3.0]# ./configure
[root@localhost unixODBC-2.3.0]# make
[root@localhost unixODBC-2.3.0]# make install
配置odbc驱动,用于链接dm8数据库
[root@localhost unixODBC-2.3.0]# odbcinst -j
[root@localhost unixODBC-2.3.0]# cd /usr/local/etc
(1)配置odbc.ini
[root@localhost etc]# vim odbc.ini
添加以下内容
[dm8]
Description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5238
(2)配置odbcinst.ini
[root@localhost etc]# vim odbcinst.ini
添加以下内容
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
DRIVER = /dm8/bin/libdodbc.so
配置完成后,测试能否连接到达梦数据库
[dmdba@localhost ~]$ isql dm8 -v
链接成功的结果如下:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
问题如下:
在链接数据库时,显示[01000][unixODBC][Driver Manager]Can’t open lib
‘/dm8/bin/libdodbc.so’ : file not found
解决方案:
(1)使用如下命令查看是否未找到so文件的依赖性
[root@localhost etc]# ldd /dm8/drivers/odbc/libdodbc.so
显示如下:
linux-vdso.so.1 => (0x00007ffcb2594000)
libdmdpi.so => not found
libdmfldr.so => not found
libdmelog.so => not found
libdmutl.so => not found
libdmclientlex.so => not found
libdmos.so => not found
libdmcvt.so => not found
libdmstrt.so => not found
librt.so.1 => /lib64/librt.so.1 (0x00007fc57b95e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc57b742000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc57b53e000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fc57b237000)
libm.so.6 => /lib64/libm.so.6 (0x00007fc57af35000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc57ab68000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc57a952000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc57bd91000)
(2)因为libdmapi.so未找到,推测为环境变量的问题,修改环境变量
[dmdba@localhost ~]$ vi .bash_profile
修改后:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"
export DM_HOME="/dm8"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
修改完成后,使用如下代码使环境变量生效
source .bash_profile
(3)修改后,检查是否存在依赖关系
[dmdba@localhost ~]$ ldd /dm8/bin/libdodbc.so
显示如下:
linux-vdso.so.1 => (0x00007ffcb91f5000)
libdmdpi.so => /dm8/bin/libdmdpi.so (0x00007f679bd00000)
libdmfldr.so => /dm8/bin/libdmfldr.so (0x00007f679b00c000)
libdmelog.so => /dm8/bin/libdmelog.so (0x00007f679ae06000)
libdmutl.so => /dm8/bin/libdmutl.so (0x00007f679abf5000)
libdmclientlex.so => /dm8/bin/libdmclientlex.so (0x00007f679a9a2000)
libdmos.so => /dm8/bin/libdmos.so (0x00007f679a777000)
libdmcvt.so => /dm8/bin/libdmcvt.so (0x00007f679a097000)
libdmstrt.so => /dm8/bin/libdmstrt.so (0x00007f6799e83000)
librt.so.1 => /lib64/librt.so.1 (0x00007f6799c7b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6799a5f000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f679985b000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f6799554000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6799252000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6798e85000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6798c6f000)
libdmmem.so => /dm8/bin/libdmmem.so (0x00007f6798a62000)
libdmcalc.so => /dm8/bin/libdmcalc.so (0x00007f67987f2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f679cb71000)
问题答疑
一、无法打开图形化界面
(1)在dmdba用户下,检查图形化界面是否正确
[dmdba@localhost mnt]$ xhost +
正确结果:
access control disabled, clients can connect from any host
错误结果:
xhost: unable to open display ""
解决方案:
[dmdba@localhost mnt]$ export DISPLAY=:0
特殊问题:(考试的虚拟机上,需要查看root下的DISPLAY类型是什么,根据此类型进行设置)
export DISPLAY=:2
结果:
如果仍然不行进行图形化操作,则切换到root下,检查图形化并执行此命令
注意:此操作为临时性的,当从root切换到dmdba时,需要重新设置
二、无法直接调用脚本
如果无法直接输入脚本或者指令调用相应的功能,则需要进行路径的配置:
解决请方案:
请查看准备工作3中的操作并进行路径配置
三、创建数据库时显示打开文件数需要调整
解决方案:
查看图形化操作(一)中第二部分的第三小节,增大打开文件数参数
四、数据库不能自动提示
在数据库查询数据时,不能自动提示函数信息和表的信息,需要手动编写
解决方案:
(1)打开窗口-选项界面
(2)修改编辑器中的语法检查和输入助手功能