oracle Redhat64 安裝錯誤3


問題描述
/usr/bin/ld: cannot find -lxxx
其中xxx即表示函式庫文件名稱,其命名規則是:lib+庫名(即xxx)+.so
可能原因: 

1 安裝了,但相對應的lib版本不兼容
——我們需要的是libjpeg.so.8.0但安裝的是libjpeg.so.6.0,
——或者是需要arm平台上的lib,但我們安裝的是X86架構的,或反之本來是要編譯arm平台上的卻忘了指定交叉編譯器
——我們需要32位但我們安裝的是64位的
2 安裝了,版本也對了,但lib(.so.version-num)的symbolic link 不正確,沒有連結到正確的函式庫文件(.so)
——我們需要的是libjpeg.so.8.0,也安裝上了,但是實際使用時我們是查找的libjpeg.so,就需要相應的一個名為libjpeg.so的link 指向libjpeg.so.8.0
3 目錄中確實沒有相對應的lib
——系統中沒有安裝相對應的lib
——安裝了,但不在這個目錄且不在環境變量中
遇到此類問題的解決思路:
一、先詳細了解問題,注意看錯誤的詳細信息以進一步確定,若出現類似下面提示: 
/usr/bin/ld: skipping incompatible /usr/local/jpeg-6b when searching for -libjpeg.so
問題:版本不兼容
1、32位 與 64位 沖突問題
案例:
解決 yum provides libX11.so
libX11-devel-1.3-2.el6.x86_64 : Development files for libX11
Repo : base
Matched from:
Filename : /usr/lib64/libX11.so
解決:
yum install libX11-devel-1.3-2.el6.x86_64
安裝 x86_64 兼容包

 

2、平台不兼容ARM X86 

案例:
很可能是編譯是忘了指定交叉編譯工具
make CC=arm-xilinx-linux-gnueabi-gcc
或者手動修改Makefile中的CC
3、版本號不對
安裝新的版本(一般會有具體的提示,要求是什么版本)
二、若非版本問題
進入相關目錄查看是否是lib(.so.version-num)的symbolic link 不正確,並建立鏈接
案例:
cd /usr/lib
ln -s libjpeg.so.6 libjpeg.so
 
三、真的沒有要找的libxxx.so
1、安裝了但不在系統變量所設的目錄
修改Makefile 在編譯選項中添加Lyourlibpath
案例:
修改plugins/input_uvc/Makfile

修改
CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC

CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC-I/home/wu/jpeg-6b/jpeg/include 

 

修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

$(CC) $(CFLAGS) -ljpeg -L/home/wu/jpeg-6b/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

 

 

2、沒安裝
安裝相關庫 
先用yum 或apt-get search以確定庫的確切名稱
然后安裝 
案例: 
sudo yum search libxtst-dev
sudo yum install libxtst-devel   
此問題所感
俗話說:對症下葯,連別人是什么病都不知道,就開始給人開葯方豈不可笑?

 

解決問題前先花時間研究問題。每個問題都有很多中可能的原因,以上這個簡單的例子就可以說明問題,善於從一些錯誤提示和相關內容的字里行間去深入問題, 對問題了解的越清楚,就越有利於定位問題,定位的越准就越利於快速解決問題。

 

 

############################

64位的centos下安裝oracle10g安裝找不到libgcc_s , 原因是沒有32位的gcc,找一個32位的,放到/usr/lib下就行了。

 

上幾天在安裝oracle數據庫時出現錯誤提示,通過查詢解決了相關問題,在此做記錄備查;

  安裝平台:

  硬件:HP DL385 G7

  軟件:Liux 5.4(RHEL_5.4 x86_64)

  安裝過程:

  在安裝過程中,出現如下提示:

安裝oracle報錯

經查詢log日志如下:

 

INFO: mv -f /opt/oracle/product/10.2.0/db_1/bin/ctxlc /opt/oracle/product/10.2.0/db_1/bin/ctxlcO

 

INFO: mv ctxlc /opt/oracle/product/10.2.0/db_1/bin/ctxlc

 

INFO: chmod 751 /opt/oracle/product/10.2.0/db_1/bin/ctxlc

 

INFO: gcc -m32 -o ctxhx -L/opt/oracle/product/10.2.0/db_1/ctx//lib32/ -L/opt/oracle/product/10.2.0/db_1/lib32/ -L/opt/oracle/product/10.2.0/db_1/lib32/stubs/  /opt/oracle/product/10.2.0/db_1/ctx/lib/ctxhx.o -L/opt/oracle/product/10.2.0/db_1/ctx/lib/ -ldl -lm -lctxhx -Wl,-rpath,/opt/oracle/product/10.2.0/db_1/ctx/lib -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10  `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` 

 

INFO: /usr/bin/ld: crt1.o: No such file: No such file or directory

collect2: 

INFO: ld returned 1 exit status

make: *** [ctxhx] Error 1

 

INFO: End output from spawned process.

INFO: ----------------------------------

INFO: Exception thrown from action: make

Exception Name: MakefileException

Exception String: Error in invoking target 'install' of makefile '/opt/oracle/product/10.2.0/db_1/ctx/lib/ins_ctx.mk'. See '/opt/oracle/oraInventory/logs/installActions2011-12-19_04-13-15PM.log' for details.

Exception Severity: 1

INFO: The output of this make operation is also available at: '/opt/oracle/product/10.2.0/db_1/install/make.log'

INFO: 

經查是由於缺少:glibc-devel包原因,查詢並安裝相關包:glibc-devel-2.5-42.i386(如果是64位的操作系統,則安裝glibc-devel-2.5-42.x86_64數據包)

 

后繼續安裝,后出現提示:Error in invoking target 'agent nmo nmb' of makefile '/opt/oracle/product/10.2.0/db_1/sysman/lib/ins_sysman.mk',See 

'/opt/oracle/oraInvetory/logs/InstallAction2011-12-19_04-13-15PM.log' for details.

后繼續搜索,發現是由於缺少:libaio-devel包引起的,安裝:libaio-devel-0.3.106-3.2.i386  libaio-devel-0.3.106-3.2.x86_64包后,問題解決。

相關網址:http://blog.sina.com.cn/s/blog_65f2d7050100pybr.html

該網址有相關命令:rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' +命令  可用來查詢系統是否已經安裝該命令,及命令版本等信息,比較有效。

 

 

錯誤信息與以上帖子描述一致,但是glibc-devel已經安裝,所以並沒有解決我的問題,后來想到在~oracle/.bash_profile中有沒有LD_LIBRARY_PATH變量,其中的路徑有/usr/lib, 但是我locate了一下缺少的crt1.o,是在/usr/lib64中,於是將/usr/lib64加入該變量,看看是否可以解決該問題

應該是已經解決了,或者直接在bash中執行export LD_LIBRARY_PATH=XXXXX:/usr/lib64:/usr/lib

 

但是又出現一個問題:

INFO: gcc -o /opt/oracle/product/10.2.0/db_1/sysman/lib/nmccollector -L/opt/oracle/product/10.2.0/db_1/lib/ -L/opt/oracle/product/10.2.0/db_1/sysman/lib/ `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -Wl,-rpath,/opt/oracle/product/10.2.0/db_1/lib -lm `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm -L/opt/oracle/product/10.2.0/db_1/lib -Wl,-export-dynamic /opt/oracle/product/10.2.0/db_1/sysman/lib/snmccolm.o /opt/oracle/product/10.2.0/db_1/sysman/lib/libnmccol.a /opt/oracle/product/10
INFO: .2.0/db_1/sysman/lib/libnmcbuf.a /opt/oracle/product/10.2.0/db_1/sysman/lib//libnmadbg.a /opt/oracle/product/10.2.0/db_1/rdbms/lib/libdsga10.a /opt/oracle/product/10.2.0/db_1/lib/libserver10.a /opt/oracle/product/10.2.0/db_1/lib/libclntsh.so `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm

INFO: make[1]: Leaving directory `/opt/oracle/product/10.2.0/db_1/sysman/lib'

INFO: /opt/oracle/product/10.2.0/db_1/sysman/lib/snmccolm.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status

INFO: make[1]: *** [/opt/oracle/product/10.2.0/db_1/sysman/lib/nmccollector] Error 1
make: *** [nmccollector] Error 2

INFO: End output from spawned process.
INFO: ----------------------------------

 

ps:這個錯誤 /home/oracle/database/product/10.2.0/db_1/sysman/lib/snmccolm.o: could not read symbols: File in wrong format
可以忽略,看起來是10.2.0.1安裝介質的BUG,那個snmccolm.o是IA32架構的。可以忽略,安裝完成后打10.2.0.3補丁即可解決。

 

創建實例時出現下面的錯誤:

ORA-27125: unable to create shared memory segment

【轉】http://www.eygle.com/rss/20111202.html

 

在某些操作系統上,當啟動數據庫或者創建數據庫時都可能出現ORA-27125錯誤,我在Oracle Linux 6上安裝Oracle 10.2.0.1,創建數據庫時就遇到了這個錯誤。

這個錯誤的解決就是修改 /proc/sys/vm/hugetlb_shm_group 文件。
以下是老楊提到過的一個問題,解決方法相同:

幫客戶解決一個Linux上數據庫無法啟動的問題。
客戶的Linux 5.6 x86-64環境,安裝數據庫后,啟動數據庫報錯:ORA-27125。
Oracle文檔上關於ORA-27125錯誤的描述為:
ORA-27125: unable to create shared memory segment
Cause: shmget() call failed
Action: contact Oracle support
查詢了一下,發現問題和linux上的hugetbl有關。
解決方法也很簡單,首先檢查oracle用戶的組信息:
[oracle@yans1 ~]$ id oracle
uid=500(oracle) gid=502(oinstall) groups=502(oinstall),501(dba)
[oracle@yans1 ~]$ more /proc/sys/vm/hugetlb_shm_group
0

下面用root執行下面的命令,將dba組添加到系統內核中:

# echo 501 > /proc/sys/vm/hugetlb_shm_group
然后啟動數據庫,問題消失。
那么hugetlb_shm_group組是什么呢?以下是解釋:
hugetlb_shm_group contains group id that is allowed to create SysV shared memory segment using hugetlb page

這里反復提到了HugePage,以下是關於HugePage的說明和解釋:

When a process uses some memory, the CPU is marking the RAM as used by that process. For efficiency, the CPU allocate RAM by chunks of 4K bytes (it's the default value on many platforms). Those chunks are named pages. Those pages can be swapped to disk, etc.

Since the process address space are virtual, the CPU and the operating system have to remember which page belong to which process, and where it is stored. Obviously, the more pages you have, the more time it takes to find where the memory is mapped. When a process uses 1GB of memory, that's 262144 entries to look up (1GB / 4K). If one Page Table Entry consume 8bytes, that's 2MB (262144 * 8) to look-up.

Most current CPU architectures support bigger pages (so the CPU/OS have less entries to look-up), those are named Huge pages (on Linux), Super Pages (on BSD) or Large Pages (on Windows), but it all the same thing.

另在安裝過程中遇到的操作系統驗證錯誤,可以通過如下方式解決:
在Linux系統中安裝oralce的過程中,如果Linux發行版本不是oracle的推薦版本,可能會報如下錯誤,導致runInstaller無法完成:
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Failed <<<<

遇到這個問題,可以通過如下三種方式解決

1、修改Linux的發行標記

如在redhat-5上安裝oracle的時候,需要將文件 '/etc/redhat-release'的內容由
Red Hat Enterprise Linux Server release 5 (Tikanga)

修改為Oracle支持的版本
Red Hat Enterprise Linux Server release 4 (Tikanga)

2、runInstaller的時候加上-ignoreSysPreReqs參數,如:
./runInstaller -ignoreSysPreReqs

3.修改oraparam.ini的參數
增加你的系統版本號

###################################################

 

關閉和開啟Oracle數據庫
關閉
#su - oracle
$lsnrctl stop
$sqlplus '/as sysdba'
sql>shutdown immediate


啟動
#su - oracle
$lsnrctl start
$sqlplus '/as sysdba'

sql>startup

 

15、其他關閉和開啟Oracle數據庫的方法

 

15.1、在 Linux 系統下安裝完數據庫之后,會在$ORACLE_HOME/bin 下生成 dbstart 和 dbshut 腳
本,這兩個腳本可以簡便地實現啟動和關閉數據庫。
這兩個腳本運行時會讀取/etc/oratab 文件,在這個文件里指定了需要啟動和關閉的 SID(相應 SID 那行的最后一個字符是 Y 而不是 N)
每次生成一個新的數據庫實例,都要在這里作修改
 
15.2、dbstart、dbshut 中的 listener_home的路徑要修改為ORACLE_HOME
 
15.3、這樣就可以簡單的使用 dbstart、dbshut 關閉和開啟Oracle數據庫
 
 
#######################sqlplus "/as sysdba"提示如下異常:##############
ORA-12162: TNS:net service name is incorrectly specified
指定ORACL_SID變量為當前的實例,如export ORACLE_SID=orcl


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM