OS:OEL4
DB:oracle 9.2.0.4
在OEL4上安裝完數據庫,執行dbca進行建庫,到最後點finish時,窗口並沒有彈出新的窗口,而是沒有任何反映,看一下命令行,報如下錯誤:
[oracle@oel4 ~]$ dbca
java.io.IOException: Bad file descriptor
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:194)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:408)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:450)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at oracle.sysman.assistants.util.sqlEngine.SQLEngine$ErrorStreamReader.r
un(SQLEngine.java:1985)
at java.lang.Thread.run(Thread.java:534)
-------------省略------------
在MOS上找到文檔 316746.1,說是gcc/g++編譯出了問題,查找安裝期間的make.log日誌文件,可以看到如下類似信息:
/usr/bin/ld: skipping incompatible /usr/lib/gcc-lib/i386-redhat-linux/2.96/libgcc.a when searching for -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc-lib/i386-redhat-linux/2.96/libgcc.a when searching for -lgcc
/usr/bin/ld: warning: i386 architecture of input file `/usr/lib/gcc-lib/i386-redhat-linux/2.96/crtbegin.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `/usr/lib/gcc-lib/i386-redhat-linux/2.96/crtend.o' is incompatible with i386:x86-64 output
上面大致信息就是gcc調用時遇到了不兼容。
Oracle給出的方案爲修改系統原有的gcc & g++,將其改名,起到“欺騙的作用”,然後進行relink all操作如下:
[root@oel4 bin]# pwd
/usr/bin
[root@oel4 bin]# mv gcc gcc.script
[root@oel4 bin]# mv g++ g++.script
[root@oel4 bin]# ln -s gcc32 gcc
[root@oel4 bin]# ln -s g++32 g++
[root@oel4 bin]# su - oracle
[oracle@oel4 ~]$ cd $ORACLE_HOME/bin
[oracle@oel4 bin]$ pwd
/oracle/product/9.2.0/bin
[oracle@oel4 bin]$ relink all >relink.txt 2>&1
[oracle@oel4 bin]$
再次執行dbca,正常進行數據庫的創建。