此文章是在AIX操作系统正确安装了CDE前提下进行进行说明的。 在安装了Oracle的服务器上运行dbca 命令,报错: [oracle@stone_db ~]$ dbca Exception in thread "main" [oracle@stone_db ~]$ [oracle@stone_db ~]$ export DISPLAY=1921.68.1.210:0.0 [oracle@stone_db ~]$ dbca Exception in thread "main" 其实不止是执行dbca会报错,只要执行需要弹出图形窗口的命令都会有这样的问题。 大部分情况下我们会认为是DISPLAY变量的问题,但是也不尽然,我们查看一下dbca的log 日志: [oracle@stone_db scripts]$ cd $ORACLE_HOME/cfgtoollogs/dbca [oracle@stone_db dbca]$ ls trace.log [oracle@stone_db dbca]$ cat trace.log java.lang.UnsatisfiedLinkError:/home/Oracle_app_10204/jdk/jre/lib/i386/libawt.so: libXp.so.6: cannot openshared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1503) at java.lang.Runtime.loadLibrary0(Runtime.java:788) at java.lang.System.loadLibrary(System.java:834) at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38) atsun.awt.DebugHelper.<clinit>(DebugHelper.java:29) at java.awt.Component.<clinit>(Component.java:506) at oracle.sysman.assistants.util.wizard.WizardObject.<init>(WizardObject.java:64) at oracle.sysman.assistants.dbca.ui.DBCAWizard.<init>(DBCAWizard.java:425) at oracle.sysman.assistants.dbca.ui.UIHost.<init>(UIHost.java:214) at oracle.sysman.assistants.dbca.ui.InteractiveHost.<init>(InteractiveHost.java:54) at oracle.sysman.assistants.dbca.Dbca.getHost(Dbca.java:160) at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:94) at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:180) 原因很明显缺包: libXp.so.6: cannot open shared object file:No such file or directory 验证一下包: [oracle@stone_db dbca]$ rpm -qa|grep libXp libXpm-devel-3.5.5-3 libXpm-3.5.5-3 安装libXp : [root@stone_db Server]# ll -rwxrwSrwx 1 root root 22996 2007-07-26libXp-1.0.0-8.1.el5.i386.rpm -rwxrwSrwx 1 root root 15262 2007-07-26libXp-devel-1.0.0-8.1.el5.i386.rpm [root@stone_db Server]# rpm -ivh libXp*.rpm warning: libXp-1.0.0-8.1.el5.i386.rpm:Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:libXp ########################################### [ 50%] 2:libXp-devel ########################################### [100%] [root@stone_db Server]# rpm -qa|grep libXp libXpm-devel-3.5.5-3 libXp-1.0.0-8.1.el5 libXpm-3.5.5-3 libXp-devel-1.0.0-8.1.el5 再次执行dbca成功: [root@stone_db ~]# xhost + access control disabled, clients canconnect from any host [root@stone_db ~]# su - oracle [oracle@stone_db ~]$ export DISPLAY=192.168.1.210:0.0 [oracle@stone_db ~]$ dbca 另外一种情况就是不缺包,用oracle用户直接登录可以执行dbca顺利打开图形窗口。用root登录xshell然后执行xhost +, 再切换su - oracle 改变用户身份,结果执行dbca不能打开图形窗口。 用root登录CDE, bash-3.2# xhost + access control disabled, clients can connect from any host bash-3.2# su - oracle [oracle@aix275 ~]# dbca DISPLAY not set. Set DISPLAY environment variable, then re-run. [oracle@aix275 ~]# who root tty0 Jul 08 06:32 root pts/0 Jul 08 05:49 (192.168.1.210) oracle pts/1 Jul 08 05:56 (192.168.1.210) root pts/2 Jul 08 05:58 (192.168.1.210) root dtremote Jul 08 06:34 (192.168.1.210:0) root pts/3 Jul 08 06:34 (192.168.1.210:0.0) root pts/4 Jul 08 00:53 (192.168.1.210) [oracle@aix275 ~]# export DISPLAY=192.168.1.210:0.0 [oracle@aix275 ~]# dbca 正常打开图形窗口。 但是在xshell下,执行同样步骤却不能打开图形窗口。 查看trace.log文件发现DISPLAY变量设置的不正确,不能使用192.168.1.210:0.0 [oracle@aix ~]# cat /database/product/10.2.0/db_1/cfgtoollogs/dbca/trace.log java.lang.InternalError: Can't connect to X11 window server using '192.168.1.210:0.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:175) at java.lang.Class.forName1(Native Method) at java.lang.Class.forName(Class.java:180) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment (GraphicsEnvironment.java:91) at java.awt.Font.initializeFont(Font.java:333) at java.awt.Font.<init>(Font.java:368) at oracle.ewt.lwAWT.LWComponent.<clinit>(Unknown Source) at oracle.sysman.assistants.util.wizard.WizardObject.<init>(WizardObject.java:64) at oracle.sysman.assistants.dbca.ui.DBCAWizard.<init>(DBCAWizard.java:425) at oracle.sysman.assistants.dbca.ui.UIHost.<init>(UIHost.java:214) at oracle.sysman.assistants.dbca.ui.InteractiveHost.<init>(InteractiveHost.java:54) at oracle.sysman.assistants.dbca.Dbca.getHost(Dbca.java:160) at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:94) at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:180) 后来打开多个图形终端,然后用who命令查看。 [root@aix /]# who root tty0 Jul 08 06:32 root pts/0 Jul 08 05:49 (192.168.1.210) oracle pts/1 Jul 08 05:56 (192.168.1.210) root pts/2 Jul 08 05:58 (192.168.1.210) root dtremote Jul 08 06:34 (192.168.1.210:0) root pts/3 Jul 08 06:34 (192.168.1.210:0.0) root dtremote Jul 08 00:53 (192.168.1.210:1) oracle dtremote Jul 08 06:44 (192.168.1.210:2) oracle dtremote Jul 08 06:51 (192.168.1.210:3) 通过观察不难发现一个规律,也就是第一个打开的图形终端为IP:0,在里面执行dbca弹出的图形窗口为IP:0.0。 第二个打开的图形窗口占用的终端序号为IP:1,在其内部执行dbca命令弹出窗口则为IP:1.0。后面打开的终端以此类推序号。 那么我们打开的Xshell其实也是一个终端,只不过平时占用的是字符终端,当我们执行dbca的时候会弹出图形窗口, 因此这个时候也会占用一个图形终端序号,经上述推理,也就很容易在Xshell终端设置正确的DISPLAY参数了, 也就是看一下我们要打开的是占用第几个图形终端,假定为n,那么我们设置 DISPLAY参数值就为“打开终端所在计算机的IP:n-1.0”。 那么回过头来再想一下,为什么用oracle用户直接登录就不存在任何题呢,而用root用户登录再su到oracle用户身份就出 现这个报错呢。其实很简单,我们不论用哪个用户身份登录到一个终端的时候执行echo DISPLAY发现默认设置好了一个值就 是localhost:n.0,当我们切换用户身份以后再执行echo DISPLAY发现这个值不见了,此时就需要我们认为设定这个值了,指定 在哪个终端打开图形窗口。 回想一下网上的帖子设置的DISPLAY参数都是IP:0.0,也就是在打开的第一个图形终端里设置的,或者是在没有打开图形 终端时在命令行终端里设置的情况。
Exception in thread “main” 终极解决方案
来源:这里教程网
时间:2026-03-03 13:58:08
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 突击部队拼多多
突击部队拼多多
26-03-03 - 表空间报错ORA-01157,ORA-01110
表空间报错ORA-01157,ORA-01110
26-03-03 - [20190728]分析函数LAST_VALUE.txt
[20190728]分析函数LAST_VALUE.txt
26-03-03 - SharePlex for Oracle and Kafka 8.6.x 升级 9.2.3
- DBASK问答集萃第五期
DBASK问答集萃第五期
26-03-03 - Oracle nvarchar2错误
Oracle nvarchar2错误
26-03-03 - Oracle ACE,一段不可思议的旅程
Oracle ACE,一段不可思议的旅程
26-03-03 - ORA-04021: timeout occurred while waiting to lock object
- 管理(004):密码文件 & 用户
管理(004):密码文件 & 用户
26-03-03 - java.lang.IllegalArgumentException:There is no column named SYS_NC00010$
