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