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

相关文章
相关标签/搜索