oracle relink重連結初識之一

wisdomone1發表於2017-05-29
分析結論
1,oracle relink就是


Oracle 軟體是以物件檔案(.o檔案),歸檔檔案(.a檔案)形式釋出的,最後以壓縮的 jar 格式提供。然後在安裝過程中,這些物件檔案被在作業系統級別“relink”,建立可執行檔案。這使得 Oracle 可以與 OS 系統庫提供的函式形成可靠的整合。通常,relinking 過程中,當前的可執行檔案被重新命名和儲存,而新的可執行檔案被生成。一旦新的可執行檔案出現,並且你成功的測試過這些新的可執行檔案工作正常,就可以刪除 ORACLE_HOME/bin 目錄下的舊的可執行檔案。每個舊的可執行檔案的檔名上都會附加一個‘O’,例如,’exp’重新命名為’expO’


2,可見


可知 :
   A,ORACLE軟體是以O檔案即物件檔案,歸檔檔案即A檔案形式釋出出來


   B,最後以壓縮JAR格式提供


   C, 上述只是釋出且提供,而我們拿到釋出的介質還要安裝,這這些O檔案即物件檔案,還在要作業系統級別RELINK,用於建立可執行檔案
       作用就是把ORACLE軟體與作業系統的系統庫提供的函式進行整合


   D,所以每次重新RELINK時,舊的可執行檔案會重新命名 :可執行檔案O


   E,所以舊的可執行檔案可以安全刪除,前提是新的可執行檔案測試透過  




3,上述檔案在   $ORACLE_HOME/bin




4,relink在oracle_home/bin


5,relink的引數


[oracle@old1 bin]$ ./relink -help
No valid parameter
\nparameters: all, oracle, network, client, client_sharedlib interMedia,\n\tctx, precomp, utilities, oemagent, ldap




6,relink相關的檔案型別


* .c   (原始碼)
* .o   (物件檔案)
* .a   (歸檔檔案)
* .so 或 .sl on HP/UX (PA-RISC) (庫檔案)


7,如下是各種物件檔案和歸檔檔案在 Oracle Home 中所處的目錄:


- /lib


- /usr/lib


- $ORACLE_HOME/lib


- $ORACLE_HOME/rdbms/lib


- $ORACLE_HOME//lib


在 $ORACLE_HOME/rdbms/lib 或者 $ORACLE_HOME/lib 目錄中有一個檔案叫做 sysliblist,它列出了其它需要包括的庫檔案的列表。


示例:


[oracle@old1 ~]$ cd $ORACLE_HOME/lib
[oracle@old1 lib]$ ls -l sys*
-rw-r--r--  1 oracle oinstall 25 Mar 27  2004 sysliblist
[oracle@old1 lib]$ more sysliblist 
-ldl -lm -lpthread -lnsl
[oracle@old1 lib]$ 




8, 為什麼需要 Oracle Home relinking?


為了將 Oracle 提供的物件檔案與 OS 系統庫檔案連結,需要執行 Oracle Home relinking.Relinking 確保了與 OS 系統庫檔案提供的函式的可靠整合。


 


在如下情況下 relinking 會自動發生:


使用 Oracle Universal Installer ( OUI ) 安裝 Oracle Database
透過 Oracle Universal Installer ( OUI ) 安裝 Oracle Database Patchset
使用“opatch 工具”安裝 Oracle Database Patch
Relinking 也可以手動執行。




9,relink ORACLE單獨的元件
[oracle@old1 ~]$ sqlplus


SQL*Plus: Release 9.2.0.4.0 - Production on Sun May 28 06:26:14 2017


Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Enter user-name: 


[oracle@old1 ~]$ cd /u01/app/oracle/product/9.2.0.4/db_1/sqlplus/lib
[oracle@old1 lib]$ make -f ins_sqlplus.mk  install


rm -f sqlplus
/bin/chmod 755 /u01/app/oracle/product/9.2.0.4/db_1/bin/demobld
/bin/chmod 755 /u01/app/oracle/product/9.2.0.4/db_1/bin/demodrop
/bin/chmod 755 /u01/app/oracle/product/9.2.0.4/db_1/bin/helpins
/bin/chmod 755 /u01/app/oracle/product/9.2.0.4/db_1/bin/pupbld
Linking sqlplus
rm -f sqlplus
gcc -o sqlplus -L/u01/app/oracle/product/9.2.0.4/db_1/sqlplus/lib/ -L/u01/app/oracle/product/9.2.0.4/db_1/lib/ -L/u01/app/oracle/product/9.2.0.4/db_1/lib/stubs/  /u01/app/oracle/product/9.2.0.4/db_1/sqlplus/lib/s0afimai.o -lsqlplus -lclntsh  `cat /u01/app/oracle/product/9.2.0.4/db_1/lib/ldflags`    -lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lnro9 `cat /u01/app/oracle/product/9.2.0.4/db_1/lib/ldflags`    -lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lclient9  -lvsn9 -lwtc9 -lcommon9 -lgeneric9 -lwtc9 -lmm -lnls9  -lcore9 -lnls9 -lcore9 -lnls9 -lxml9 -lcore9 -lunls9 -lnls9 `cat /u01/app/oracle/product/9.2.0.4/db_1/lib/ldflags`    -lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lnro9 `cat /u01/app/oracle/product/9.2.0.4/db_1/lib/ldflags`    -lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9 -ln9 -lnl9 -lclient9  -lvsn9 -lwtc9 -lcommon9 -lgeneric9  -ltrace9 -lnls9  -lcore9 -lnls9 -lcore9 -lnls9 -lxml9 -lcore9 -lunls9 -lnls9 -lclient9  -lvsn9 -lwtc9 -lcommon9 -lgeneric9 -lnls9  -lcore9 -lnls9 -lcore9 -lnls9 -lxml9 -lcore9 -lunls9 -lnls9   `cat /u01/app/oracle/product/9.2.0.4/db_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/9.2.0.4/db_1/lib:/lib:/usr/lib -lm -lpthread   `cat /u01/app/oracle/product/9.2.0.4/db_1/lib/sysliblist` -ldl -lm -lpthread 
mv -f /u01/app/oracle/product/9.2.0.4/db_1/bin/sqlplus /u01/app/oracle/product/9.2.0.4/db_1/bin/sqlplusO
mv -f /u01/app/oracle/product/9.2.0.4/db_1/sqlplus/lib/sqlplus /u01/app/oracle/product/9.2.0.4/db_1/bin/sqlplus
/bin/chmod 751 /u01/app/oracle/product/9.2.0.4/db_1/bin/sqlplus


[oracle@old1 lib]$ sqlplus


SQL*Plus: Release 9.2.0.4.0 - Production on Sun May 28 06:27:50 2017


Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Enter user-name: 




10,  診斷 relinking 問題的工具有哪些?


A ) nm


用來列出在一個 .o、.a 和二進位制檔案中的所有符號。常用於找出符號是在哪裡定義的。常用命令是:


            


    nm | grep
其中是你要檢查的庫的名字,是你實際搜尋的符號的名字。


 


 B) ar


建立和維護庫和 .o 檔案的歸檔。使用這個命令你可以將 .o 檔案分組到一個單獨的歸檔,用來建立可執行程式。它被用來從一個單獨的歸檔庫中插入,刪除和取代物件。


 


C) Symfind


如下位置有一個指令碼可用:


$ORACLE_HOME/bin/symfind :
在 Oracle 的共享物件中找到一個符號。這個指令碼基本上執行了上面2個命令。










分析明細


1,作業系統版本
[oracle@old1 bin]$ more /etc/redhat-release 
Red Hat Enterprise Linux AS release 4 (Nahant Update 6)
[oracle@old1 bin]$ 


2,切換到ORACLE_HOME/bin
[oracle@old1 ~]$ cd $ORACLE_HOME/bin
[oracle@old1 bin]$ 


3,檢視當前目錄的O字尾的檔案
[oracle@old1 bin]$ ls -l *O
-rwxr-xr-x  1 oracle oinstall        0 Feb 26  2004 csscanO
-rwxr-xr-x  1 oracle oinstall   187440 Apr 22  2004 ctxloadO
-rwxr-xr-x  1 oracle oinstall   661323 Apr 22  2004 ctxsrvO
-rwxr-xr-x  1 oracle oinstall    35024 Apr 22  2004 cursizeO
-rwxr-xr-x  1 oracle oinstall    19261 Apr 22  2004 dbfsizeO
-rwxr-xr-x  1 oracle oinstall   397984 Apr 22  2004 dbvO
-rwxr-xr-x  1 oracle oinstall        0 Feb 29  2004 dgmgrlO
-rwxr-xr-x  1 oracle oinstall   608869 Apr 22  2004 expO
-rwxr-xr-x  1 oracle oinstall    34444 Apr 26  2004 extprocO
-rwxr-xr-x  1 oracle oinstall        0 Feb 29  2004 hsallociO
-rwxr-xr-x  1 oracle oinstall        0 Feb 29  2004 hsdepxaO
-rwxr-xr-x  1 oracle oinstall        0 Feb 29  2004 hsotsO
-rwxr-xr-x  1 oracle oinstall   269977 Apr 22  2004 impO
-rwxr-xr-x  1 oracle oinstall   395978 Apr 22  2004 kgmgrO
-rwxr-xr-x  1 oracle oinstall    22495 Apr 22  2004 loadpspO
-rwxr-xr-x  1 oracle oinstall    19389 Apr 22  2004 maxmemO
-rwxr-xr-x  1 oracle oinstall 11452427 Apr 24  2004 migO
-rwxr-xr-x  1 oracle oinstall        0 Feb 26  2004 nidO
-rwxr-xr-x  1 oracle oinstall        0 Feb 26  2004 nmumigr8O
-rw-r--r--  1 oracle oinstall        0 Feb 26  2004 onrsdO
-rwsr-s--x  1 oracle oinstall 62255897 May 28 04:09 oracleO
-rwxr-xr-x  1 oracle oinstall    25023 Apr 26  2004 orapwdO
-rwxr-xr-x  1 oracle oinstall 10280659 Apr 22  2004 rmanO
-rwxr-xr-x  1 oracle oinstall   671466 Apr 22  2004 sqlldrO
-rwxr-xr-x  1 oracle oinstall   700268 Apr 22  2004 sqlplusO
-rwxr-xr-x  1 oracle oinstall   125368 Apr 22  2004 tkprofO
-rw-r--r--  1 oracle oinstall        0 Feb 26  2004 tnspingO
-rw-r--r--  1 oracle oinstall        0 Feb 26  2004 trcrouteO
-rwxr-xr-x  1 oracle oinstall    27408 Apr 22  2004 tstshmO
-rwxr-xr-x  1 oracle oinstall  5661753 Apr 22  2004 wrapO
[oracle@old1 bin]$ 


4,可知每個ORACLE工具皆有2個對應檔案,一為自己,二為自己加O
[oracle@old1 bin]$ ls -l csscan*
-rwxr-xr-x  1 oracle oinstall 162948 Apr 22  2004 csscan
-rwxr-xr-x  1 oracle oinstall      0 Feb 26  2004 csscanO


5,經查 oracle mos 文章 Relinking Oracle Home 常見問題 (?文件 ID 2048232.1)
什麼是對 Oracle Home 庫的 relinking?


Oracle 軟體是以物件檔案(.o檔案),歸檔檔案(.a檔案)形式釋出的,最後以壓縮的 jar 格式提供。然後在安裝過程中,這些物件檔案被在作業系統級別“relink”,建立可執行檔案。這使得 Oracle 可以與 
OS 系統庫提供的函式形成可靠的整合。通常,relinking 過程中,當前的可執行檔案被重新命名和儲存,而新的可執行檔案被生成。一旦新的可執行檔案出現,並且你成功的測試過這些新的可執行檔案工作正常,就可以刪除 ORACLE_HOME/bin 目錄下的舊的可執行檔案。每個舊的可執行檔案的檔名上都會附加一個‘O’,例如,’exp’重新命名為’expO’。


可知 :
   A,ORACLE軟體是以O檔案即物件檔案,歸檔檔案即A檔案形式釋出出來


   B,最後以壓縮JAR格式提供


   C, 上述只是釋出且提供,而我們拿到釋出的介質還要安裝,這這些O檔案即物件檔案,還在要作業系統級別RELINK,用於建立可執行檔案
       作用就是把ORACLE軟體與作業系統的系統庫提供的函式進行整合


   D,所以每次重新RELINK時,舊的可執行檔案會重新命名 :可執行檔案O


   E,所以舊的可執行檔案可以安全刪除,前提是新的可執行檔案測試透過    


6,測試relink,可知relink在$ORACLE_HOME/bin下
[oracle@old1 bin]$ pwd
/u01/app/oracle/product/9.2.0.4/db_1/bin
[oracle@old1 bin]$ ls -l relink
-rwxr-xr-x  1 oracle oinstall 6454 Feb 26  2004 relink
[oracle@old1 bin]$ 


7,檢視relink的用法,其的引數可以為 oracle,client,and so on
[oracle@old1 bin]$ ./relink -help
No valid parameter
\nparameters: all, oracle, network, client, client_sharedlib interMedia,\n\tctx, precomp, utilities, oemagent, ldap
[oracle@old1 bin]$ 


8,relink的詳細執行過程可以定位到一個日誌中
可以像如下這樣使用 unix 的重定向特性收集手動 relinking 日誌:


$  $ORACLE_HOME/bin/relink all
 輸出會被寫在 $ORACLE_HOME/install/relink.log 檔案中










9,如下為ORACLE MOS文章 Relinking Oracle Home 常見問題 (文件 ID 2048232.1) 相關內容






文件內容
用途
問題和答案
  1)  什麼是 relinking?
  2)  什麼是對 Oracle Home 庫的 relinking?
  3)  為什麼需要 Oracle Home relinking?
  4)  什麼時候需要手動的 relinking?
  5)  在 OS 升級,降級,打補丁或者解除安裝補丁之後,是否需要 relinking?
  6)  如何 relink Oracle Home?
  7)  Relinking 日誌在哪裡?
  8)  手動 relinking 有哪些已知問題?
  9)  如何診斷 relinking 問題?
  10)  診斷 relinking 問題的工具有哪些?
  11)  Windows 上是否發生 relinking?
  已知問題
  1) AIX 作業系統
  2) Solaris 作業系統
參考
適用於:


Oracle Database - Enterprise Edition - 版本 9.2.0.1 到 12.1.0.2 [發行版 9.2 到 12.1]
Generic UNIX
用途


 這篇文件闡述了在 Oracle Home 上執行 relinking 的常見問題,文件中的概念適用於 RDBMS Home。


提問,獲得幫助,並分享您對於這篇文件的經驗。


您是否希望與其他 Oracle 客戶、Oracle 員工和業內專家進一步探討此主題?


請點選這裡進入Oracle 社群(中文)。
請點選這裡進入My Oracle Support 社群的資料庫安裝/升級(英文)主頁發現更多的話題和討論。


問題和答案


1)  什麼是 relinking?


任何語言所預定義的函式都被定義在那種語言的庫檔案中,必須編譯程式碼來建立一個二進位制格式的檔案(物件檔案)。這個物件檔案然後被連線到 OS 的庫檔案來建立一個可執行檔案。成功的連結應使得所有的函式定義都能被找到,連結從它的元件中生成一個可執行檔案。在這個語境中連結(linking)和 relinking 意義相同,可以互換。可執行檔案都會從預編譯元件中建立起來。


 


Relinking 過程中涉及的檔案型別有:


* .c   (原始碼)
* .o   (物件檔案)
* .a   (歸檔檔案)
* .so 或 .sl on HP/UX (PA-RISC) (庫檔案)








2)  什麼是對 Oracle Home 庫的 relinking?


Oracle 軟體是以物件檔案(.o檔案),歸檔檔案(.a檔案)形式釋出的,最後以壓縮的 jar 格式提供。然後在安裝過程中,這些物件檔案被在作業系統級別“relink”,建立可執行檔案。這使得 Oracle 可以與 OS 系統庫提供的函式形成可靠的整合。通常,relinking 過程中,當前的可執行檔案被重新命名和儲存,而新的可執行檔案被生成。一旦新的可執行檔案出現,並且你成功的測試過這些新的可執行檔案工作正常,就可以刪除 ORACLE_HOME/bin 目錄下的舊的可執行檔案。每個舊的可執行檔案的檔名上都會附加一個‘O’,例如,’exp’重新命名為’expO’。


提供物件檔案的優點是它減小了補丁和包的大小;不提供完整的庫檔案和程式,而是隻釋出物件檔案,之後與 OS 庫檔案連結來生成可執行檔案。


 


 如下是各種物件檔案和歸檔檔案在 Oracle Home 中所處的目錄:


- /lib


- /usr/lib


- $ORACLE_HOME/lib


- $ORACLE_HOME/rdbms/lib


- $ORACLE_HOME//lib


在 $ORACLE_HOME/rdbms/lib 或者 $ORACLE_HOME/lib 目錄中有一個檔案叫做 sysliblist,它列出了其它需要包括的庫檔案的列表。


 


 


3)  為什麼需要 Oracle Home relinking?


為了將 Oracle 提供的物件檔案與 OS 系統庫檔案連結,需要執行 Oracle Home relinking.Relinking 確保了與 OS 系統庫檔案提供的函式的可靠整合。


 


在如下情況下 relinking 會自動發生:


使用 Oracle Universal Installer ( OUI ) 安裝 Oracle Database
透過 Oracle Universal Installer ( OUI ) 安裝 Oracle Database Patchset
使用“opatch 工具”安裝 Oracle Database Patch
Relinking 也可以手動執行。


 


 


4)  什麼時候需要手動的 relinking?


在如下情況下需要手動 relinking:


A)  在 OS 升級之後,通常 OS 供應商會保證作業系統庫檔案完整性,因此,除非有特殊說明,不需要重新安裝或者 relink Oracle 軟體。


“然而,Oracle 推薦在 OS 升級後對 Oracle Home 的庫執行手動的 relinking”。


B)   在作業系統安裝了補丁之後(推薦)。


C)   Oracle Home 的安裝過程的 relinking 階段出現錯誤或者警告。


D)   安裝一個 RDBMS 補丁在 relinking 階段失敗。


E)   應用報錯說 RDBMS home 缺失庫檔案。


F)   診斷 RDBMS Home 二進位制可執行程式(binary)的問題。


G)  在手動修改 RDBMS home 的二進位制可執行程式的許可權之後。


H)  驗證 Oracle Home 二進位制可執行程式的完整性。


I)  重置 Oracle Home 二進位制可執行程式的許可權。


J)  重新建立 Oracle Home 二進位制可執行程式。


 


 


5)  在 OS 升級,降級,打補丁或者解除安裝補丁之後,是否需要 relinking?


是的。Oracle 推薦在在 OS 升級,降級,打補丁或者解除安裝補丁,或者任何影響 OS 庫行為的改變之後,對 Oracle Home 二進位制可執行程式執行手動的 relinking。成功的 relinking 代表 Oracle 可執行程式被妥當的連結到 OS 庫。


 


6)  如何 relink Oracle Home?


下面是 relink Oracle Home 二進位制執行程式的步驟:


A) 設定環境變數


在連結時需要設定如下環境變數:


DISPLAY
TERM or ORACLE_TERM
ORACLE_HOME
PATH 中包含 $ORACLE_HOME/bin
LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/lib
SHLIB_PATH $ORACLE_HOME/lib:/usr/lib (只適用於HP-UX)
B) 驗證 umask 值是否為 022,如果 umask 值不正確,設定 umask 為 022(執行命令“umask 022”)


C) 停止所有訪問這個 Oracle Home 的 Oracle 例項,監聽和 sqlplus。若是 AIX OS,以 root 使用者執行 slibclean,等待5分鐘後再次執行 slibclean。


即使有其它資料庫啟動和執行中,執行 slibclean 也是安全的。如下文件提供了更多細節:


Note 435071.1 Can Slibclean command be Executed when the Database is up and running?


D) 以 Oracle 使用者執行如下命令:


$ORACLE_HOME/bin/relink
可以新增的引數有:


"all ", " oracle " , " network",  "client" , "client_sharedlib" , "interMedia" , "precomp" , "utilities ", "oemagent",  "ldap"。


可以像如下這樣使用 unix 的重定向特性收集手動 relinking 日誌:


$  $ORACLE_HOME/bin/relink all
 輸出會被寫在 $ORACLE_HOME/install/relink.log 檔案中。


E)  11GR2 上可用的其它選項。


11.2.0.1 以上版本的資料庫有另一個選項是使用“ Oracle Universal Installer  “來執行 relinking,如下所示:


Runinstaller 可以使用如下選項:


  -relink:在 oracle home 上執行 relink 動作。


使用:-relink -maketargetsxml [-makedepsxml ] [name=value]


例子:


$ORACLE_HOME/oui/bin/runInstaller -relink -waitForCompletion -maketargetsxml  $ORACLE_HOME/inventory/make/makeorder.xml  -logLocation $ORACLE_HOME/install ORACLE_HOME=$ORACLE_HOME > $ORACLE_HOME/install/relink.log 2>&1
參考


Note 883299.1   Oracle 11gR2 Relink New Feature






F) Relinking 獨立的元件


你可以隨時使用‘MAKE’檔案並提供一個合適的 link_option 來手動的 relink 任何一個可執行程式或者所有的可執行程式:


            


make -f
要 relink 一個可執行程式,需使用軟體的所有者登陸到系統來執行上述命令。這個命令在 所在的 LIB 目錄中執行,即,


         


$ORACLE_HOME//lib
其中可以是 oracle,forms45 或 reports30 等等。




[oracle@old1 db_1]$ ls -l
total 192
drwxr-xr-x  10 oracle oinstall 4096 May 28 04:08 Apache
drwxr-xr-x   5 oracle oinstall 4096 May 28 04:08 assistants
drwxr-xr-x   5 oracle oinstall 4096 May 28 04:08 BC4J
drwxr-xr-x   2 oracle oinstall 4096 May 28 04:28 bin
drwxr-xr-x  10 oracle oinstall 4096 May 28 04:09 ctx
drwxr-xr-x   4 oracle oinstall 4096 May 28 04:08 cwmlite
drwxr-xr-x   2 oracle oinstall 4096 May 28 04:09 dbs
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 demo
drwxr-xr-x   6 oracle oinstall 4096 May 28 04:09 dm
drwxr-xr-x  10 oracle oinstall 4096 May 28 04:08 ds
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:28 install
-rw-r--r--   1 oracle oinstall   18 May 28 04:07 install.platform
drwxr-xr-x   8 oracle oinstall 4096 May 28 04:29 inventory
drwxr-xr-x   8 oracle oinstall 4096 May 28 04:09 javavm
drwxr-xr-x   5 oracle oinstall 4096 May 28 04:08 jdbc
drwxr-xr-x   9 oracle oinstall 4096 May 28 04:08 jdk
drwxr-xr-x   2 oracle oinstall 4096 May 28 04:09 jlib
lrwxrwxrwx   1 oracle oinstall   25 May 28 04:08 JRE -> /u01/app/oracle/jre/1.4.2
drwxr-xr-x   6 oracle oinstall 4096 May 28 04:08 jsp
drwxr-xr-x  16 oracle oinstall 4096 May 28 04:09 ldap
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:09 lib
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:09 lib32
drwxr-xr-x   5 oracle oinstall 4096 May 28 04:09 md
drwxr-xr-x  14 oracle oinstall 4096 May 28 04:28 network
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 oci
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 ocommon
drwxr-xr-x   5 oracle oinstall 4096 May 28 04:08 ocs4j
drwxr-xr-x   6 oracle oinstall 4096 May 28 04:09 olap
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 oracm
drwxr-xr-x   4 oracle oinstall 4096 May 28 04:08 oracore
drwxr-xr-x  13 oracle oinstall 4096 May 28 04:08 ord
drwxr-xr-x   8 oracle oinstall 4096 May 28 04:09 otrace
drwxr-xr-x   4 oracle oinstall 4096 May 28 04:08 owm
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 pfs
drwxr-xr-x   9 oracle oinstall 4096 May 28 04:09 plsql
drwxr-xr-x   9 oracle oinstall 4096 May 28 04:08 precomp
drwxr-xr-x  15 oracle oinstall 4096 May 28 04:09 rdbms
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 relnotes
-rwxr-xr-x   1 oracle oinstall 5880 May 28 04:28 root.sh
-rw-r--r--   1 oracle oinstall    0 Feb 26  2004 root.sh.old
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 slax
drwxr-xr-x   7 oracle oinstall 4096 May 28 04:08 soap
drwxr-xr-x   5 oracle oinstall 4096 May 28 04:08 sqlj
drwxr-xr-x   9 oracle oinstall 4096 May 28 04:09 sqlplus
drwxr-xr-x   4 oracle oinstall 4096 May 28 04:08 srvm
drwxr-xr-x   8 oracle oinstall 4096 May 28 04:09 syndication
drwxr-xr-x  10 oracle oinstall 4096 May 28 04:09 ultrasearch
drwxr-xr-x   3 oracle oinstall 4096 May 28 04:08 wwg
drwxr-xr-x   8 oracle oinstall 4096 May 28 04:08 xdk
[oracle@old1 db_1]$ 




[oracle@old1 sqlplus]$ pwd
/u01/app/oracle/product/9.2.0.4/db_1/sqlplus
[oracle@old1 sqlplus]$ ls -l lib
total 56
-rw-r--r--  1 oracle oinstall 43662 Apr  9  2004 env_sqlplus.mk
-rw-r--r--  1 oracle oinstall  1125 Apr  8  2004 ins_sqlplus.mk
-rw-r--r--  1 oracle oinstall  1432 Jan 22  2004 s0afimai.o
-rw-r--r--  1 oracle oinstall  1296 Jan 22  2004 safiimfg.o


[oracle@old1 sqlplus]$ make -help
Usage: make [options] [target] ...
Options:
  -b, -m                      Ignored for compatibility.
  -B, --always-make           Unconditionally make all targets.
  -C DIRECTORY, --directory=DIRECTORY
                              Change to DIRECTORY before doing anything.
  -d                          Print lots of debugging information.
  --debug[=FLAGS]             Print various types of debugging information.
  -e, --environment-overrides
                              Environment variables override makefiles.
  -f FILE, --file=FILE, --makefile=FILE
                              Read FILE as a makefile.
  -h, --help                  Print this message and exit.
  -i, --ignore-errors         Ignore errors from commands.
  -I DIRECTORY, --include-dir=DIRECTORY
                              Search DIRECTORY for included makefiles.
  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no arg.
  -k, --keep-going            Keep going when some targets can't be made.
  -l [N], --load-average[=N], --max-load[=N]
                              Don't start multiple jobs unless load is below N.
  -n, --just-print, --dry-run, --recon
                              Don't actually run any commands; just print them.
  -o FILE, --old-file=FILE, --assume-old=FILE
                              Consider FILE to be very old and don't remake it.
  -p, --print-data-base       Print make's internal database.
  -q, --question              Run no commands; exit status says if up to date.
  -r, --no-builtin-rules      Disable the built-in implicit rules.
  -R, --no-builtin-variables  Disable the built-in variable settings.
  -s, --silent, --quiet       Don't echo commands.
  -S, --no-keep-going, --stop
                              Turns off -k.
  -t, --touch                 Touch targets instead of remaking them.
  -v, --version               Print the version number of make and exit.
  -w, --print-directory       Print the current directory.
  --no-print-directory        Turn off -w, even if it was turned on implicitly.
  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
                              Consider FILE to be infinitely new.
  --warn-undefined-variables  Warn when an undefined variable is referenced.


This program built for x86_64-redhat-linux-gnu
Report bugs to
[oracle@old1 sqlplus]$ 




7)  Relinking 日誌在哪裡?






在 Oracle Home 安裝或者 Patchset 安裝的連結操作時


Oracle Home 二進位制可執行程式的安裝的 relinking 日誌在如下檔案:


$ORACLE_HOME/install/make.log






手動 relinking


手動 relinking 日誌可以使用 unix 重定向特性收集:


$  $ORACLE_HOME/bin/relink all >> relink.out




10)  診斷 relinking 問題的工具有哪些?


A ) nm


用來列出在一個 .o、.a 和二進位制檔案中的所有符號。常用於找出符號是在哪裡定義的。常用命令是:


            


    nm | grep
其中是你要檢查的庫的名字,是你實際搜尋的符號的名字。


 


 B) ar


建立和維護庫和 .o 檔案的歸檔。使用這個命令你可以將 .o 檔案分組到一個單獨的歸檔,用來建立可執行程式。它被用來從一個單獨的歸檔庫中插入,刪除和取代物件。


 


C) Symfind


如下位置有一個指令碼可用:


$ORACLE_HOME/bin/symfind :
在 Oracle 的共享物件中找到一個符號。這個指令碼基本上執行了上面2個命令。




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-2140033/,如需轉載,請註明出處,否則將追究法律責任。

相關文章