前言:作为一个对数据库知识一无所知的小白,仅凭对计算机的热爱开始学习数据库知识。算下来学习数据库已有2个多月的时间,从刚开始不知道什么是数据库,翻书本查概念,慢慢地对数据库有了大致了解之后,开始尝试安装、使用,遇到了问题,就在网上查、群里问,后来有幸参加了达梦的DCA认证培训,也更系统地了解了数据库知识,就这样一步步地开始了我的达梦数据库学习之路。下面列举了我在初学达梦数据库安装及使用过程中所遇到的一些典型问题及解决方式,可能问题比较简单,亦或是解决方式比较复杂,但也真心希望能对各位零基础初学者学习达梦数据库提供帮助。(达梦技术社区 达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

达梦数据库安装及使用环境:VMware Workstation 16.x(虚拟机)、CentOS 7.4.1708(操作系统)

问题1:安装时提示无法执行二进制文件。

问题描述:针对不同的安装环境,需要有对应该环境的数据库安装包,如果安装包与安装环境不匹配,就会报错“无法执行二进制文件”。

null

解决方式:

执行命令行操作

cat /etc/issue

查看操作系统版本

cat /proc/cpuinfo

查看CPU信息

cat /proc/meminfo

查看内存信息

cat /proc/version

查看内核信息

问题2:dmdba用户安装过程中调不出图形化界面。

问题描述:对于达梦数据库的初学者来说,图形化安装是最容易接受和上手的安装方式。(同时也建议大家在熟练掌握图形化操作后继续学习命令行操作)

null

解决方式:

执行命令行操作

xhost +

使用root用户执行该命令,提示“access control disabled, clients can connect from any host”即可进入下一步

echo $DISPLAY

查看root用户下的DISPLAY变量,一般为“:0”(但也可能为其它)

echo $DISPLAY

切回至dmdba用户执行该命令,查看dmdba用户下的DISPLAY变量

export DISPLAY=:0

视第②步查询的DISPLAY变量为准

问题3:安装过程中提示文件打开数过小。

问题描述:安装过程中可能会出现下图中的警告,这个警告不会影响图形化安装界面的打开,但可能会造成安装或后续数据库运行过程中的报错,为了避免出现此类错误,建议安装之前修改。

null

解决方式一:

执行命令行操作

vi /etc/security/limits.conf

使用root用户编辑limits.conf配置文件

dmdba soft nofile 65536

dmdba hard nofile 65536

在文件末尾加上左侧列内容,此设置只针对dmdba用户生效,用*代替dmdba即可设置对所有用户生效

注:该方式修改文件打开数永久生效(建议使用此方式)

解决方式二:

执行命令行操作

ulimit -n 65536

临时修改文件打开数

注:该方式修改文件打开数只针对该终端会话窗口生效

问题4:配置环境变量。

问题描述:配置环境变量是为了当每次使用达梦数据库工具时不用进入tool目录下执行命令使用,建议在使用数据库之前进行环境变量的配置。

null

解决方式:

执行命令行操作

cd /home/dmdba

使用dmdba用户进入到/home/dmdba目录下

export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"

修改.bash_profile文件,在文件末尾加上左侧列内容

source .bash_profile

必须执行此步骤,否则配置的环境变量不生效

问题5:赋予dmdba用户具有操作安装目录/dm8的权限(修改所属组)。

问题描述:当使用图形化界面安装数据库过程中提示“没有权限写入文件,请选择正确路径”时,代表dmdba用户没有操作安装目录/dm8的权限。

null

解决方式:

执行命令行操作

chown -R dmdba:dinstall /dm8

使用root用户执行该命令

注:命令行中的“-R”代表级联操作,表示dmdba用户不仅对/dm8目录有操作权限,而且对/dm8目录下的子目录也同样具有操作权限

问题6:创建 SOCKET 连接失败。

问题描述:当数据库实例创建完成后,一般会先在终端会话窗口进行数据库连接测试,查看是否能正常连接数据库。如遇“创建 SOCKET 连接失败”提示时表明数据库实例服务未正常启动。

null

解决方式一:

执行命令行操作

./dmservice.sh

使用root用户启动DM服务查看器查看达梦数据库实例服务是否启动

注:图形化界面启停数据库实例服务必须在root用户下操作,否则将提示“当前用户不是root,不能修改自启动服务运行状态”

解决方式二:

执行命令行操作

systemctl status DmServiceDMSERVER.service

使用root用户在终端会话窗口查看数据库实例运行状态

systemctl start DmServiceDMSERVER.service

使用命令行方式启动数据库实例服务

问题7:如何开启归档日志。

问题描述:达梦数据库在建库过程中没有选项来直接开启归档日志,必须后期手动开启归档日志,所以建议在初始化数据库后立即开启归档,若后续数据库发生故障时,可以将数据库恢复至指定时间点或最新状态。

null

解决方式一:

图形化界面操作

数据库服务器→管理服务器→系统管理:转换为配置状态→归档配置:打开归档、添加归档日志文件→系统管理:转换为打开状态

使用DM管理工具进行开归档

解决方式二:

执行SQL语句

alter database mount;

将数据库转换为配置状态

alter database add ARCHIVELOG 'type=local, dest=/dm8/arch, file_size=64,space_limit=10240';

添加归档日志文件

alter database ARCHIVELOG;

打开归档

alter database open;

将数据库转换为打开状态

问题8:修改联机日志文件提示大小无效。

问题描述:在创建数据库实例时默认生成2个联机日志文件(默认大小为256M),当我们在使用数据库过程中若需要修改联机日志文件大小时,修改后的文件大小不能小于之前文件大小,否则会报错。

null

解决方式:

执行SQL语句

alter database RESIZE logfile 'DAMENG01.log' TO 500;

修改联机日志文件大小

注:添加、修改联机日志文件时,大小不需要带单位,默认单位为M,且联机日志文件只能改大、不能改小

问题9:创建用户时提示“密码不符合复杂度规则”。

问题描述:数据库实例创建完成后若修改了口令策略,且在创建用户时设置的用户密码不满足该口令策略,就会报错,无法继续创建用户。

null

解决方式:

执行SQL语句

select * from v$dm_ini t where t.para_name like 'PWD_POLICY';

查看当前口令策略

0 无策略

1 禁止与用户名相同

2 口令长度不小于 9

4 至少包含一个大写字母(A-Z)

8 至少包含一个数字(0-9)

16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)

注:设置的系统口令策略只对创建新用户时生效

问题10:用户密码多次输入错误导致用户被锁定。

问题描述:默认用户登录失败三次用户会被锁定,锁定时间为1分钟,因此建议创建完用户之后记录好密码。

null

null

解决方式一:

执行SQL语句

alter user TEST ACCOUNT unlock;

解锁用户

alter user TEST ACCOUNT lock;

锁定用户

解决方式二:

图形化界面操作

用户→管理用户→选择要解锁/锁定的用户→右键解锁/锁定

使用DM管理工具登录SYSDBA用户进行设置

用户→管理用户→选择要解锁/锁定的用户→右键修改→资源限制

此界面可设置用户的登录失败次数、口令锁定期等

问题11:收回用户权限时提示回收权限无效。

问题描述:当赋予对象权限使用了WITH GRANT OPTION(权限传递)时,若不选择级联回收该对象的权限,就会提示“回收权限无效”。

null

解决方式:

执行SQL语句

revoke SELECT on dba_tablespaces from HR CASCADE;

在回收对象权限时加上“CASCADE”为级联回收

问题12:新建外键约束时提示“引用约束不匹配”。

问题描述:新建外键约束时,被引用表未选择主键。

null

解决方式:

执行SQL语句

alter table "SYSDBA"."EMPLOYEES" add constraint foreign key("DEPARTMENT_ID") references "SYSDBA"."DEPARTMENTS"("DEPARTMENT_ID");

新建外键约束时引用的外键一定要是被引用表的主键

问题13:关于数据库的备份还原恢复。(※)

问题描述:数据库的备份还原是学习数据库的重中之重,需要着重花费心思去学习、练习。

null

物理备份:直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。

逻辑备份:利用 dexp 导出工具,将指定对象(数据库级、用户级、模式级、表级)的数据导出到文件的备份方式。

冷备:DMAP服务打开,数据库实例服务关闭。

热备:DMAP服务打开,数据库实例服务打开,数据库开启归档模式。

null

图1 DM控制台工具进行数据库备份(脱机备份)

null

图2 DMRMAN工具进行数据库全量备份(脱机备份)

null

图3 DM管理工具进行数据库/表空间备份(联机备份)

null

图4 DISQL工具进行数据库全量/增量备份(联机备份)

null

图5 逻辑全库导出(联机备份)

null

图6 逻辑全库导入(要求数据库为启动状态,同时需注意源库、目标库大小写敏感问题)

null

图7 DM控制台工具进行数据库/表空间还原(脱机还原)

null

图8 DM控制台工具进行数据库/表空间恢复

null

图9 DMRMAN工具进行数据库全库还原/恢复

null

图10 DM控制台工具更新DB_MAGIC(不更新无法正常启动数据库)

null

图11 DMRMAN工具更新DB_MAGIC

以上,欢迎各位大佬批评指正,也希望在今后的学习过程中与各位共同进步。

(达梦技术社区 达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐