DM 管理工具(Manager)是数据库自带的图形化工具,可方便快捷的对数据进行管理,简化 DBA 对数据库的日常运维操作要求。
但是在linux 环境可能会遇到启动图形管理工具失败,下面就将遇到的报错信息和解决办法进行分享,希望对能遇到同样问题的同学有所帮助。
1.报错信息如下
通过vnc view登录系统,切换到dmdba用户,在DM8部署目录/dm8/tool目录,启动图形管理工具,无法正常显示图形,报错如下:
[dmdba@owumvyu4iuuzaxxp-0001 tool]$ ./manager
(Manager:2755): GLib-GObject-WARNING **: 11:08:55.040: invalid (NULL) pointer instance
(Manager:2755): GLib-GObject-CRITICAL **: 11:08:55.040: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(Manager:2755): Gtk-CRITICAL **: 11:08:55.040: IA__gtk_settings_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gtk-WARNING **: 11:08:55.047: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Manager:2755): Gtk-WARNING **: 11:08:55.047: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_display: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_display_get_pointer: assertion 'GDK_IS_DISPLAY (display)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_monitor_at_point: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gtk-WARNING **: 11:08:55.047: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_n_monitors: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gtk-WARNING **: 11:08:55.047: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_monitor_geometry: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_default_colormap: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_colormap_get_visual: assertion 'GDK_IS_COLORMAP (colormap)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_default_colormap: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
(Manager:2755): Gdk-CRITICAL **: 11:08:55.047: IA__gdk_window_new: assertion 'GDK_IS_WINDOW (parent)' failed
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fa5ac76a597, pid=2755, tid=0x00007fa5d8477700
#
# JRE version: OpenJDK Runtime Environment (8.0_332-b09) (build 1.8.0_332-b09)
# Java VM: OpenJDK 64-Bit Server VM (25.332-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libgdk-x11-2.0.so.0+0x7b597] gdk_window_enable_synchronized_configure+0x7
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /dm8/tool/hs_err_pid2755.log
#
# If you would like to submit a bug report, please visit:
# https://github.com/adoptium/adoptium-support/issues
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
./manager: line 20: 2755 Aborted (core dumped) "$JAVA_HOME/bin/java" -Xms256m -Xmx2048m -XX:+PerfDisableSharedMem -DDM_HOME="$DM_HOME" -Djava.library.path="$DM_HOME/bin" -Ddameng.log.file="$TOOL_HOME/log4j.xml" -DeclipseHome="$TOOL_HOME" -Dosgi.nl="$INSTALL_LANGUAGE" -Ddameng.dts.explorer.root="$TOOL_HOME/workspace/local/dts" -Ddameng.isql.explorer.root="$TOOL_HOME/workspace/local/isql" -Duse_bak2=true -Dgrant_vti_role=false -Dapp.name=manager -jar "$TOOL_HOME/plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar" -os linux -ws gtk -arch x86_64 -showsplash "$TOOL_HOME/manager.bmp" -data "$TOOL_HOME/workspace/manager" -product com.dameng.manager.product -name Manager
[dmdba@owumvyu4iuuzaxxp-0001 tool]$
报错提示“Screen for GtkWindow not set; you must always set a screen for a GtkWindow before using the window”,原因是没有设置DISPLAY变量导致。
DISPLAY环境变量作用说明:
在Linux/Unix类操作系统GUI应用程序使用X Window系统(X Window System),它旨在允许多个用户使用窗口化的应用程序通过网络访问计算机。 DISPLAY环境变量用来设置将图形显示到何处。
2.查看dmdba用户 DISPLAY变量
在dmdba用户查看DISPLAY变量值:
[root@owumvyu4iuuzaxxp-0001 ~]# su - dmdba
Last login: Sat Jun 24 11:10:12 CST 2023 on pts/1
[dmdba@owumvyu4iuuzaxxp-0001 ~]$ echo $DISPLAY
[dmdba@owumvyu4iuuzaxxp-0001 ~]$
显示在dmdba用户无DISPLAY变量值。
3.root用户查看DISPLAY变量
查看root用户DISPLAY值:
[root@owumvyu4iuuzaxxp-0001 ~]# echo $DISPLAY
:5
[root@owumvyu4iuuzaxxp-0001 ~]#
执行xhost +命令:
[root@owumvyu4iuuzaxxp-0001 ~]# xhost +
access control disabled, clients can connect from any host
[root@owumvyu4iuuzaxxp-0001 ~]#
显示"access control disabled, clients can connect from any host,意思是关闭访问授权,允许任何主机访问本地X服务器。
xhost命令作用说明:
xhost命令是X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示。
命令 | 说明 |
---|---|
+ | 关闭访问授权,允许任何主机访问本地X服务器 |
4.切换dmdba用户设置DISPLAY变量
在dmdba用户通过export设置DISPLAY变量值和root用户DISPLAY变量值一致。
[dmdba@owumvyu4iuuzaxxp-0001 ~]$ export DISPLAY=:5
[dmdba@owumvyu4iuuzaxxp-0001 ~]$ echo $DISPLAY
:5
[dmdba@owumvyu4iuuzaxxp-0001 ~]$
执行xhost +命令,允许任何主机访问本地X服务器:
[dmdba@owumvyu4iuuzaxxp-0001 ~]$ xhost +
access control disabled, clients can connect from any host
5.启动DM8 图形管理工具
通过dmdba用户在/dm8/tool目录执行./manager启动DM图形管理工具:
[dmdba@owumvyu4iuuzaxxp-0001 ~]$ cd /dm8/tool
[dmdba@owumvyu4iuuzaxxp-0001 tool]$ ./manager
DM8管理工具图形启动成功:
关于达梦数据库更多学习内容,欢迎访问达梦社区:
https://eco.dameng.com