ssh -X,轉發x11。在ssh中運行服務器上的程序,程序在服務器上跑,界面在客戶端上顯示。html
最合適安裝的oracle 11g的操做系統是RHEL五、SUSE Enterprise和oracle linux。
虛擬機RHEL 5.4安裝oracle 11g很是順利。但RHEL5.4太老了,諸多不便。java
可是直接在ubuntu上安裝,會這樣:
linux
看來是桌面太新了,那就用ssh -X,遠程顯示安裝。我這裏用了xming在windows上遠程顯示,還能夠用RHEL 5.4等等。ios
【1】下載。c++
【1.1】ubuntu-gnome-14.04.5
http://cdimage.ubuntu.com/ubuntu-gnome/releases/14.04.5/release/ubuntu-gnome-14.04.5-desktop-amd64.isogit
【1.2】ORACLE 11g
12c Release 1於2013年6月發佈,11G於2007年7月發佈
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.htmlsql
【1.3】JDK
ORACLE 11G的安裝和運行須要JRE,我直接下載了目前最新的JDK1.8.102
http://www.oracle.com/technetwork/java/javase/downloadsshell
【1.4】舊版libstdc++5
gcc-3.3對應的libstdc++5,老舊的oracle 11g須要的,文件名libstdc++5_3.3.6-25ubuntu1_amd64.deb。這是ubuntu 12.04上的包。
http://packages.ubuntu.com/precise/amd64/libstdc++5/download
ubuntu 14.04上也有個libstdc++5的包,但其實和這個不同的。數據庫
【1.5】xmingubuntu
可選,在windows上顯示X11窗口程序
https://sourceforge.net/projects/xming/
【1.6】secureCRT或PUTTY
一樣可選,遠程安裝SSH客戶端。
【2】安裝ubuntu並準備安裝oracle
我實際上是先用vmware把ubuntu安裝到硬盤主分區,平時直接啓動ubuntu,安裝oracle的時候,又在windows上用vmware跑ubuntu的。
虛擬機配置:4G內存,30G硬盤。兩塊網卡,一塊NAT,一塊HostOnly。
ubuntu的安裝過程就略去了。根分區=26G,SWAP=4G。用戶名jacob,hostname=ubuntu。
注意hostname必定不能有下劃線,不然安裝oracle的過程當中會報錯的。
【2.1】軟件安裝
CTRL+ALT+T打開一個終端。
apt-get update apt-get upgrade apt-get install open-vm-tools open-vm-tools-desktop open-vm-tools-dkms apt-get install synaptic vim build-essential libncurses5-dev nfs-kernel-server nautilus-open-terminal samba libusb-dev bison byacc flex libtool libreadline-dev texi2html manpages-posix-dev texinfo gawk gperf automake p7zip-full libc6-dev-i386 unrar git unixodbc-dev libaio-dev expat openssh-server rpm
【2.2】修改/bin/sh
ubuntu默認的shell是dash,不少腳本都不兼容
sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh
【2.3】設置網絡
在vmware中設置兩張網卡是個人我的習慣,
打開vmware network editer,在hostonly(vmnet1)上禁用DHCP,IP段192.168.183.0。NAT(vmnet8)的IP段爲192.168.196.0,啓用DHCP。
在windows上將經過hostonly網卡訪問ubuntu,ubuntu經過NAT訪問因特網。在沒有外網時依然能夠工做。
/etc/network/interfaces.d/hostonly。
iface eth1 inet static address 192.168.183.63 netmask 255.255.255.0 gateway 192.168.183.1
/etc/network/interfaces.d/nat
iface eth0 inet dhcp
要重啓生效了。
若是你一直用圖形界面,那麼你能夠直接在圖形界面上設置網卡——可是沒了圖形界面,網卡配置也沒了!!!! 很不喜歡ubuntu的這種作法。
【2.3】建立oracle用戶
這步可選。使用專用的用戶來安裝和運行是個好習慣。
sudo addgroup oinstall sudo addgroup dba sudo useradd -g oinstall -G dba -m -s /bin/bash oracle sudo passwd oracle
重啓或註銷ubuntu,以oracle用戶登陸gnome桌面。
windows上打開secrutCRT,設置容許x11轉發。
而後用oracle用戶,ssh登陸ubuntu,以便自動生成~/.Xauthority文件。
或者在其餘linux上用ssh -X oracle@192.168.183.63,也是同樣的。
【2.4】建立oracle 11g安裝目錄
sudo mkdir /opt/oracle sudo mkdir /opt/oraInventory sudo chown -R oracle:oinstall /opt/oracle sudo chown -R oracle:oinstall /opt/oraInventory
【2.5】設置環境變量
這一步必定不要少,安裝和運行都須要
用oracle用戶修改/home/oracle/.bash_profile
export ORACLE_SID=orcl export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
【2.6】舊版libstdc++5
這是爲了解決【3.3.5】中相似於 找不到memcpy@GLIBCxxxx 這樣的問題的
sudo dpkg -i ~/Downloads/libstdc++5_3.3.6-25ubuntu1_amd64.deb
【2.7】JDK
將下載的JDK放入ubuntu中,解壓、設置環境變量。
jacob@Ubuntu:~/buildspace$ tar xf jdk-8u102-linux-x64.tar.gz jacob@Ubuntu:~/buildspace$ sudo -s [sudo] password for jacob: root@Ubuntu:~/buildspace# mv jdk1.8.0_102/ /opt/ root@Ubuntu:~/buildspace# vim /etc/profile.d/jdk.sh
/etc/profile.d/jdk.sh的內容爲
#!/bin/bash PATH=$PATH:/opt/jdk1.8.0_102/bin
新打開的終端中就會生效。
【2.8】解壓oracle 11g安裝文件
將下載的文件複製粘貼到ubuntu中。
unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip
將會解壓出database文件夾。
【2.9】軟連接
sudo ln -s /usr/bin/awk /bin/awk sudo ln -s /usr/bin/rpm /bin/rpm sudo ln -s /usr/bin/basename /bin/basename sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/.
這一步必定要作,oracle 11g的安裝程序比較死板,只會用絕對路徑來找文件。
不作這一步的話,就會出現【3.3.1】、【3.3.2】、【3.3.5】的問題
【3】安裝
【3.1】在SSH中啓動安裝程序。
【3.1.1】用oracle用戶ssh登陸。
若是你的ubuntu系統語言是中文,臨時將環境變量設置成英文吧,避免中文亂碼
export LANG=en_US
【3.1.2】在windows上啓動xming。
【3.1.3】啓動安裝程序。
稍等一下子,安裝界面就在windows上彈出來了。
【3.2】依賴
step 18/21,必定有不少依賴條件不知足。
其中runlevel是由於ubuntu使用upstarts替代了之前的sysv init方式,
kernel parameters可用sysctl來設置,
軟件包則是由於oracle 11g的安裝程序是用rpm(應該是吧)來檢測的,而ubuntu倒是apt軟件包管理,找不到是正常的,缺乏的軟件包在已經在【2.1】中安裝過了。
點擊 ,會彈出一個對話框,讓你用root用戶執行 /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh ,該腳本會修改/etc/sysctl.conf等文件。
照作後點ok從新檢查,會發現內核參數還有3個沒知足的,不用管它,點選,而後下一步便可。
semmni彷佛是內核變化引發的,網上有人用fedora也出這個現象。
【3.3】出錯處理
安裝過程的界面操做就略過了。說一下出錯處理。安裝進度到68%時出錯
【3.3.1】libpthread_nonshared.a
查看對話框中的日誌文件(注意文件名包含安裝時間),shift+g翻到文件尾,:q退出
less /opt/oraInventory/logs/installActions2016-09-13_01-56-50PM.log
錯誤緣由爲
INFO: /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a
這是沒有作給庫目錄作軟鏈接形成的,見【2.9】,完成軟鏈接就好了。
【3.3.2】undefined reference to `nnfyboot'
INFO: /opt/oracle/product/11.2.0/dbhome_1/lib//libagtsh.so: undefined reference to `nnfyboot'
這也是沒有作【2.9】形成的
網上說的補救方法:
$ln -s $ORACLE_HOME/lib/libclient10.a $ORACLE_HOME/lib/libagtsh.a $ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so.1.0
試過了,無效,只能刪除已經安裝的文件,重來!
rm -rf /opt/oracle/* rm -rf /opt/oraInventroy/*
【3.3.3】
日誌:
INFO: /usr/bin/ld: warning: libstdc++.so.5, needed by /opt/oracle/product/11.2.0/dbhome_1/ctx/lib//libsc_ex.so, not found (try using -rpath or -rpath-link) /opt/oracle/product/11.2.0/dbhome_1/ctx/lib/libwv_core.so: undefined reference to `operator delete(void*)@GLIBCPP_3.2' /opt/oracle/product/11.2.0/dbhome_1/ctx/lib/libwv_core.so: undefined reference to `std::ios_base::Init::~Init()@GLIBCPP_3.2' /opt/oracle/product/11.2.0/dbhome_1/ctx/lib/libwv_core.so: undefined reference to `vtable for __cxxabiv1::__si_class_t INFO: ype_info@GLIBCPP_3.2' /opt/oracle/product/11.2.0/dbhome_1/ctx/lib//libsc_ex.so: undefined reference to `__gxx_personality_v0@CXXABI_1.2' /opt/oracle/product/11.2.0/dbhome_1/ctx/lib/libsc_ch.so: undefined reference to `__gxx_personality_v0' /opt/oracle/product/11.2.0/dbhome_1/ctx/lib/libwv_core.so: undefined reference to `vtable for __cxxabiv1::__class_type_info@GLIBCPP_3.2' /opt/oracle/product/11.2.0/dbhome_1/ctx/lib/libwv_core.so: undefined reference to `__cxa_pure_virtual@CXXABI_1.2' /opt/oracle/product/1 INFO: 1.2.0/dbhome_1/ctx/lib/libwv_core.so: undefined reference to `std::ios_base::Init::Init()@GLIBCPP_3.2'
緣由和解決方法:
沒有執行【2.6】,安裝後重試便可。
【3.3.4】undefined reference to `B_DestroyKeyObject'
日誌:
nmectlt.c:(.text+0x91): undefined reference to `B_DestroyKeyObject'
這一步在ubuntu上是必定會出的,解決方法:
sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
【3.3.5】error: /lib64/libgcc_s.so.1: No such file or directory
日誌:
INFO: gcc: error: /lib64/libgcc_s.so.1: No such file or directory INFO: /opt/oracle/product/11.2.0/dbhome_1/bin/genorasdksh: Failed to link liborasdkbase.so.11.1
緣由:
仍是【2.9】,鏈接後重試便可
【3.3.6】undefined reference to `lnxren'
kdxd4.c:(text.hot+0x2467): undefined reference to `lnxren'
解決方法:
sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
【3.3.7】undefined reference to `procr_get_last_error'
日誌:
INFO: le/product/11.2.0/dbhome_1//lib//libhasgen11.so: undefined reference to `procr_terminate'
/opt/oracle/product/11.2.0/dbhome_1//lib//libhasgen11.so: undefined reference to `procr_close_key'
/opt/oracle/product/11.2.0/dbhome_1//lib//libhasgen11.so: undefined reference to `procr_enum_subkey'
/opt/oracle/product/11.2.0/dbhome_1//lib//libhasgen11.so: undefined reference to `procr_delete_key_ext'
/opt/oracle/product/11.2.0/dbhome_1//lib//libhasgen11.so: undefined reference to `procr_open_key_ext'
/opt/oracle/prod
INFO: uct/11.2.0/dbhome_1//lib//libhasgen11.so: undefined reference to `procr_get_last_error'
INFO: collect2: error: ld returned 1 exit status
INFO: make[1]: *** [getcrshome] Error 1
INFO: make[1]: Leaving directory `/opt/oracle/product/11.2.0/dbhome_1/srvm/lib'
解決:
sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk
【3.3.8】undefined reference to `ons_subscriber_status'
日誌:
nsgcs.c:(.text+0x58c): undefined reference to `ons_subscriber_status'
解決:
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
【3.4】安裝完成
別忘了用root用戶執行下腳本。
【4】啓動數據庫
剛剛安裝完的時候,數據已經啓動了.之後手動啓動數據庫,須要用oralce用戶進入sqlplus(oracle的命令行客戶端)啓動
查看監聽器的狀態
之後用這個啓動監聽器
lsnrctl start
【4.1】出錯
【4.1.1】啓動sqlplus時出現 net service name is incorrectly specified
ORA-12162: TNS:net service name is incorrectly specified
緣由是:沒有設置ORACLE_SID環境變量
安裝完成後,刪除安裝文件,/分區共佔用12GB。
參考:http://www.linuxidc.com/Linux/2013-02/79079.htm 做者lvstone 必須說一句,這個網站會惡習不改地從別人的博客盜文章,之前連名字都不給寫上,如今也是沒有出處連接。我本身也被盜過,不知是否是該高興……
http://makina-corpus.com/blog/metier/archives/howto-install-oracle-11g-ubuntu-linux-1204-precise-pangolin-64bits