eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« Oracle10gR2中一些新特性 | Blog首页 | GreenBrowser开源 »

Oracle9i安装make错误解决一例
modb.pro

今天一个朋友装Oracle的时候出现错误,请求帮忙诊断。
检查了一下发现错误主要是:
ld: fatal: file /dev/zero: mmap anon failed: Resource temporarily unavailable
以下是一个解决的过程供参考:
1.登陆主机
检查make日志,从中可以得到具体的错误信息。
SunOS 5.8

login: oracle9
Password: 
Last login: Wed Aug  3 14:11:50 from 172.16.34.231
Sun Microsystems Inc.   SunOS 5.8       Generic Patch   October 2001

/opt/oracle9/>ls
Apache         dbs            jar            lib            oci            otrace         slax           tg4ingr
BC4J           demo           javavm         lib32          ocommon        oui            soap           tg4sybs
JRE            dm             jdbc           local.cshrc    ocs4j          owm            sqlj           tg4tera
assistants     doc            jdk            local.login    oem_webstage   plsql          sqlplus        ultrasearch
bin            ds             jlib           local.profile  olap           precomp        srvm           wwg
classes        hs             jre            md             oraInventory   rdbms          syndication    xdk
ctx            install        jsp            mgw            oracore        relnotes       sysman
cwmlite        inventory      ldap           network        ord            root.sh        tg4ifmx
/opt/oracle9/>which make
/usr/local/bin/make
/opt/oracle9/>which gcc
/usr/local/bin/gcc
/opt/oracle9/>cd install
/opt/oracle9/install>ls
make.log        shiphome.build  utl
/opt/oracle9/install>vi make.log
"make.log" 477 行,87097 字符 

/bin/chmod 751 /opt/oracle9/bin/isqlplus
/usr/ccs/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/opt/oracle9

 - Linking Oracle
rm -f /opt/oracle9/rdbms/lib/oracle
/usr/ccs/bin/ld   -o /opt/oracle9/rdbms/lib/oracle -L/opt/oracle9/rdbms/lib/ 
-L/opt/oracle9/lib/ -dy /opt/oracle9/lib/WS6U2/lib/v9/crti.o 
/opt/oracle9/lib/WS6U2/lib/v9/crt1.o  /opt/oracle9/rdbms/lib/opimai.o 
/opt/oracle9/rdbms/lib/ssoraed.o /opt/oracle9/rdbms/lib/
ttcsoi.o  /opt/oracle9/lib/nautab.o /opt/oracle9/lib/naeet.o 
/opt/oracle9/lib/naect.o /opt/oracle9/lib/naedhs.o 
/opt/oracle9/rdbms/lib/config.o  -lserver9 -lodm9  -lskgxp9 -lskgxn9 -lclient9  -lvsn9 -lwtcserver9  
-lcommon9 -lgeneric9 /opt/oracle9/rdbms/lib/defopt.
o  -lknlopt `if /usr/ccs/bin/ar tv /opt/oracle9/rdbms/lib/libknlopt.a | 
grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap9" ;
fi` `if /usr/ccs/bin/ar tv /opt/oracle9/rdbms/lib/libknlopt.a | grep dmwdm.o > 
/dev/null 2>&1; then echo "-ldm9"; fi`  -lslax9 -lpls9 -lplp9 -lserver9 -lclient9  
-lvsn9 -lwtcserver9  -lcommon9 -lgeneric9  -lknlopt -lslax9 -lpls9 -lplp9 -ljox9 -lserver9  
-locijdbcst9 -lwwg9  `cat /opt/oracle9/lib/ldflags`    -lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 
-ln9 -lnl9 -lnro9 `cat /opt/oracle9/lib/ldflags`-lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lmm -lnls9  
-lcore9 -lnls9 -lcore9  -lnls9 -lxml9 -lcore9 -lunls9 -lnls9 `cat /opt/oracle9/lib/ldflags`   
-lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lnro9 `cat /opt/oracle9/lib/ldflags`  
-lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9  -ltrace9 -lnls9  -lcore9 -lnls9 -lcore9 
-lnls9 -lxml9 -lcore9 -lunls9 -lnls9 `if /usr/ccs/bin/ar tv /opt/oracle9/rdbms/lib/libknlopt.a | 
grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo9"; fi` -lctxc9 -lctx9 -lzx9 -lg
................
ld: 致命的: 文件/dev/zero: 不能打开mmap文件: 资源暂时不可用*** Error code 1
make: Fatal error: Command failed for target `/opt/oracle9/rdbms/lib/oracle'
~
~
~
~
~
:q
/opt/oracle9/install>which ld
/usr/ccs/bin/ld

我们发现,主要信息为:
ld: 致命的: 文件/dev/zero: 不能打开mmap文件: 资源暂时不可用
2.寻找解决办法
只要找到问题,通常解决起来就容易的多了。
到Metalink或Google搜索,都会发现此类错误多数是由于内存或Swap区不足引起的。
检查系统Swap区:
/opt/oracle9/rdbms/lib>df -k
文件系统              千字节    用了    可用 容量      挂接在
/dev/dsk/c0t0d0s0    2055463  425139 1568661    22%    /
/dev/dsk/c0t0d0s6    13108204 6130169 6846953    48%    /usr
/proc                      0       0       0     0%    /proc
fd                         0       0       0     0%    /dev/fd
mnttab                     0       0       0     0%    /etc/mnttab
/dev/dsk/c0t0d0s5    3045503  227250 2757343     8%    /var
swap                   81656      16   81640     1%    /var/run
/dev/dsk/c0t0d0s3    13108204 9764721 3212401    76%    /home
/dev/dsk/c0t0d0s4    6097950 4544543 1492428    76%    /opt
swap                  594984  513344   81640    87%    /tmp


发现空闲空间只有80M左右,删除部分文件后重新编译:
/opt/oracle9/rdbms/lib>/usr/ccs/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/opt/oracle9

 - Linking Oracle 
rm -f /opt/oracle9/rdbms/lib/oracle
/usr/ccs/bin/ld   -o /opt/oracle9/rdbms/lib/oracle -L/opt/oracle9/rdbms/lib/ -L/opt/oracle9/lib/ 
....
mv -f /opt/oracle9/bin/oracle /opt/oracle9/bin/oracleO
mv /opt/oracle9/rdbms/lib/oracle /opt/oracle9/bin/oracle
chmod 6751 /opt/oracle9/bin/oracle
/opt/oracle9/rdbms/lib>


编译成功通过。

历史上的今天...
    >> 2018-08-03文章:
    >> 2012-08-03文章:
    >> 2011-08-03文章:
    >> 2010-08-03文章:
    >> 2009-08-03文章:
    >> 2007-08-03文章:
           Eygle的个人简历
    >> 2006-08-03文章:

By eygle on 2005-08-03 18:56 | Comments (1) | FAQ | 364 |

1 Comment

在Oracle的安装指南中,一般都说明了temp要有多大,可以通过设置TEMP和TMP_DIR环境变量来改temp的路径,我在安装时经常设这两个变量,到Oracle所在的一个子目录,就不用担心这个了.


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com