ubuntu 14.04.5上ssh -X安裝oracle 11g

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

相關文章
相關標籤/搜索