达梦数据库使用过程中各种问题解决办法
近期,在学习和使用达梦的过程中遇到了各种各样的问题,关于安装的,关于运维的,关于使用的,将一些常见问题集中起来,也是自学,也是分享。
测试环境
操作系统 中标麒麟6
达梦数据库 7
01
问题一 以图形界面
安装数据库软件时报错
现象描述
用图形界面形式安装数据库遇到报错,显示报错信息如下:
[dmdba@localhost mnt]$ ./DMInstall.bin
解压安装程序…
No protocol specified
Exception in thread “main” org.eclipse.swt.SWTError: No more handles [gtk_init_check failed]
at org.eclipse.swt.SWT.error(SWT.java:4109)
at org.eclipse.swt.widgets.Display.createDisplay(Display.java:902)
at org.eclipse.swt.widgets.Display.create(Display.java:890)
at org.eclipse.swt.graphics.Device.(Device.java:154)
at org.eclipse.swt.widgets.Display.(Display.java:499)
at org.eclipse.swt.widgets.Display.(Display.java:490)
at org.eclipse.swt.widgets.Display.getDefault(Display.java:1693)
at org.eclipse.swt.widgets.Shell.(Shell.java:260)
at org.eclipse.swt.widgets.Shell.(Shell.java:358)
at org.eclipse.jface.window.Window.createShell(Window.java:487)
at org.eclipse.jface.window.Window.create(Window.java:430)
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
at org.eclipse.jface.window.Window.open(Window.java:790)
at com.dameng.install.ui.MainApplication.run(Unknown Source)
at com.dameng.install.ui.MainApplication.main(Unknown Source)
[dmdba@localhost mnt]$
问题原因
当前操作系统的登录用户应该为非dmdba用户,如果在当前会话中启用图形界面需要将图形界面权限放开。
解决方法
切换到root用户后在命令行中输入xhost +,可以使得dmdba可以调用图形界面进行安装。
02
问题二 DM数据库遇到
“无效的表名或视图名”报错
现象描述
在操作DM时遇到报错,错误信息提示为“无效的表或视图名”。无论是查询tab2还是TAB2都是报错。
问题原因
出现这种情况大概率是表名(或是字段名)的大小写问题,这一点需要注意,因为dmserver处理的字段名都是默认大写,无论是查询还是新建,服务器默认都转为大写储存。当时这种机制设计是为了用户在创建和访问数据库对象时,不需要考虑对象名称的大小写问题,统一用大写的方式处理。若需要用小写或如驼峰式的方式命名,则需要用双引号将需要以原本的方式保存的字符引用在内。
而如果运用管理工具进行对象创建或者修改的时候会将对象名以双引号引用,这时创建的对象名是以原本的大小写形式存储下来的,为了是使得用户输入的形式与实际储存形式一致。在这种情况下会出现如果在管理工具的环境下创建的名称若是以小写输入,会以小写的形式存储下来,而再用命令行进行查询的时候若以相同的小写形式查询,则会出现“无效的表或视图名”的错误出现。
解决方法
在管理界面新建表或是视图或是字段时,使用大写字母。查询时,表名为大写字母例如:select * from TAB2。或是如果确实需要使用小写的表名,可以加上双引号。
例如:select * from test.“tab2”;
为了避免这种问题,在管理工具中创建对象名以大写形式创建,而在用DDL语句创建对象名或者进行查询的时候则抛弃双引号引用的方式。
另外还有一种可能性是数据库中确实不存在所查询的表,需要对于表名进行进一步的确认。
03
问题三 利用DMRMAN备份时
出现“管道连接失败”的错误信息
现象描述
如下图中,备份时出现故障“管道连接失败”是怎么回事,应该如何解决?
问题原因
遇到这种问题时的场景,一般是安装时在完成安装之前没有注册dmap服务,这样的情况下需要去注册并启动dmap服务;也有可能是dmap服务被意外关闭,这种情况下启动dmap服务即可。
解决方法
1、重启dmap服务
若没有注册dmap服务,有三种启动方式可供参考:
1.前台启动dmap
前台启动dmap,在安装路径下的bin目录下,用./dmap即可启动dmap服务,但在前台启动的方式下,关闭启动的当前窗口,dmap即会被关闭。
2.后台启动dmap
以这种方式启动dmap,在关闭当前窗口后dmap服务不会被关闭。
3.通过脚本注册dmap服务,用服务方式启动
利用脚本进行dmap服务注册并启动,在完整的软件安装过程中,在完成安装前原本应该以root身份运行脚本来注册启动dmap的。脚本在$DM_HOME//root目录下。