從服務器構建說起(四).Linux下安裝配置Oracle

從服務器構建說起(四).Linux下安裝配置Oracle

草木瓜

20070417

一、序


早在《虛擬機RedHatLinux9安裝Oralce92全過程》一文中,(鏈結:http://blog.csdn.net/liwei_cmg/archive/2006/05/28/759286.aspx)
就詳細說明了Linux環境安裝Oracle的過程。不過再次嘗試去發現了不少漏洞和新問題,
不得不感嘆Linux安裝配置Oracle的複雜性。本文平臺RedHat 企業版4+Oracle 9.2.0.4
服務器構建系列:http://blog.csdn.net/liwei_cmg/category/227512.aspx


二、修正錯誤

在《虛擬機RedHatLinux9安裝Oralce92全過程》一文中,提到:

[注意事項]
1.最好在Windows下解壓縮出cpio文件,Winrar支持gz格式。經測試,Linux下執
行gunzip速度太慢。

這是十分不妥的!一方面Windows下Winrar解壓縮速度,比起PC Server SCIS,實
在太慢了。另一方面解壓縮出的安裝文件,在Linux下安裝會有大量問題,每遇到
完全大寫的文件,就提示沒有權限操作。後來在Linux解壓安裝未發生任何問題。

後分析,當時得出這個結論原因是虛擬機的性能比較低,主觀臆斷而已。

三、安裝與配置中新的問題

除了以上的嚴重錯誤,其他安裝過程是沒有任何問題的。
本次安裝,只建立了一個oracle用戶和對應組,組名也爲oracle。

第一個問題:
在訪問Windows共享資源時,smbmount不能打開端口,即mount -t smbfs無效。
原因是Windows機器開了防火牆,禁止了相關端口。

第二個問題:
圖形化安裝過程,提示不能創建文件,無相關權限,這是由於在Windows下對
gz文件做了解壓縮,後來在Linux gunzip即可。

第三個問題:
首次安裝,設置oraInventory目錄,系統提示用root執行orainstRoot.sh。如果此
後有問題終止安裝後,重裝發現oraInventory目錄不能更改。原因是存在/etc/oraInst.loc
文件。刪除後,即可進行設置更改

第四個問題:

Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target install of makefile /home/oracle/ora9/oracle/plsql/lib/ins_plsql.mk

編譯make -f ins_plsql.mk提示什麼找不到對應的glic2.3 ...

這個問題是由於Oracle安裝要求低版本的gcc,原來在虛擬機安裝的gcc版本是3.2.2
可以通過,這個企業版本Linux的gcc是3.4.4,後來發現存在/usr/bin/gcc32,將
mv /usr/bin/gcc /usr/bin/gccnew
mv /usr/bin/gcc32 /usr/bin/gcc
再進行安裝,沒有任何問題,不過安裝之後須要改回原樣。


第五個問題:
使用dbca時創建數據庫時,最後一步出現錯誤:
home/oracle/ora9/oracle/bin/dbca: line 124: 31614 Segmentation fault $JRE_DIR/bin/jre -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS

修改dbca,將最後一行改爲:
# Run DBCA
$JRE_DIR/bin/jre -native -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
fi

即添加了一個native參數即可。


四、數據庫的導入導出

這裏採用imp,exp進行針對性的數據導入導出。

1.建立bat文件(expdata.bat),至於bat用法可help 命令查詢幫助。內容如下:

copy E:/backup/*.* E:/old_backup
del /q E:/backup/*.*
oracle_bakup.vbs


2.VB Script 腳本 oracle_bakup.vbs:

Option Explicit
On Error Resume Next

Dim fname, cmd
Dim WshShell

Set WshShell = CreateObject("WScript.Shell")

fname = Date
cmd = "exp log=e:/" & fname & ".log file=e:/" & fname & "_.dmp parfile=exp.txt"

WshShell.run cmd
Set WshShell = Nothing
'WScript.Echo cmd

3.exp.txt文件內容:

userid=test/test@zjyx68
buffer=209715200
tables=
(
CNT_INFO,
CNT_OPERATOR
)
compress=yes
consistent=no
grants=yes
indexes=yes
rows=yes
constraints=yes

三個文件均在同一目錄,雙擊執行bat即可,這裏需要着重說明的是:

A.字符集的一致性(字符集的經典文章《Oracle字符集問題總結》http://blog.csdn.net/liwei_cmg/archive/2006/06/04/772674.aspx)

B.導入導入段的客戶端版本和服務器版本的兼容性,如在9.2客戶端導出9.0數據庫
再導入時會出現如下錯誤:

. importing CUSTOM's objects into CUSTOM
IMP-00017: following statement failed with ORACLE error 922:
"CREATE TABLE "LIWEI_TEST" ("NAME" VARCHAR2(10)) PCTFREE 10 PCTUSED 40 INIT"
"RANS 1 MAXTRANS 255 STORAGE(INITIAL 524288 FREELISTS 1 FREELIST GROUPS 1) T"
"ABLESPACE "CUSTOM" NOLOGGING NOCOMPRESS"
IMP-00003: ORACLE error 922 encountered
ORA-00922: missing or invalid option
Import terminated successfully with warnings.

即使創建相關表結構,使用ignore參數仍然出錯,將相關語句放在sqlplus執行
會提示NOCOMPRESS爲無效選項,這裏推測還是版本的兼容性問題,即保證向下兼容。

如用9.2客戶端導出9.0數據庫,提示
EXP-00056: ORACLE error 942 encountered
ORA-00942: table or view does not exist
EXP-00000: Export terminated unsuccessfully

後使用9.0客戶端導入導出,則無任何問題。

C.導入導出的buffer十分重要,如果內存夠大,儘量設置大一些,尤其是在導出
的情況,否則頻繁的磁盤IO會導致導入導出十分緩慢。

D.對於Package Function Procedure Sequence DBLink之類的導出,實際上就
導出創建語句,可以使用PL/SQL進行操作,導入時只須執行導入的.sql文件即可。


五、最後的說明

相關的系列文章到此就結束了,總體看來十分瑣碎,然解決起來通常令人頭疼 。
故用了大量篇幅羅列記錄,以備查閱。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章