今天来和大家分享一下自己安装oracle11g的过程。你可能会说“为什么是11g?”,很简单,因为我的书就是对11g写的。先在windows 10上安装了(书上就是在windows平台上操作的),但是安装过后不知道什么原因,系统竟然莫名蓝屏一次,虽然以后没有了这种现象,但还是很不爽。于是决定换个平台。
不换不知道,换了才知道在Linux上安装是多麻烦。和windows上的疯狂next完全不同,好多库得自己下载,而且oracle官方就没有支持ubuntu,所以就更增加了操作复杂度,本来想两天怎么我也能入个门吧,但是偏偏两天时间全部用在了配置环境上。好在有前人的经验,但好多东西到现在我也不是很明白怎么回事,虽然安装算是成功了,但是安装过程跳过了一个错误,会有什么影响我也不知道,也没有相关文章解决这个错误,所以暂时先放一下这个错误。
好多东西刚开始没有办法弄的特别明白。就像第一遍学C,你问我指针是什么,我可能会告诉你就是个地址啊,但是你如果问我void (p)(int ()(int), int**);p是个什么,鬼知道是个什么东西。这东西是我看了好多本书之后我才弄明白是什么意思,每个阶段都会有自己的疑惑,所以不懂的我就先放下,等看完大致了解了轮廓再看能不能解决。
本来这种问题我是不愿意写的,但是想想如果没有前辈留下的笔记,我至今也安装不好这个环境、于是我决定把安装过程记录下来,如果能帮到遇到同样问题的你,我万分荣幸。我计划用4篇来写这个问题。好了,废话不多说了,开始我们今天的第一个任务——安装。
首先交代环境:Ubuntu16.04 LTS 64位,保证你的主机是可以联网的。
注意:1.因为oracle安装程序是用JAVA写的,所以需要预先安装JRE,也可以直接安装JDK,具体安装过程这里不做过多描述,我电脑上有,所以就不用安装了。
2.这个垃圾东西需要swap空间,很烦人,所以你需要建立一个swap文件(如果已经有了swap分区,那么就不用了)
dd if=/dev/zero of=/tmp/swapfree bs=32k count=65515 #(count是分区数量,swap大小=bs*count,增加2G)
mkswap /tmp/swapfree # (格式化交换分区文件)
swapon /tmp/swapfree # (启用交换分区文件)
swapon –s # (显示swap状态)
#修改/etc/fstab,让系统每次启动都把/tmp/swapfree作为swap使用,增加下面一行:
/tmp/swapfree swap swap defaults 0 0
下面来安装:
1.将系统的更新安装上
sudo apt-get update
sudo apt-get dist-upgrade
2.如果使用的Ubuntu不是桌面版(如Ubuntu server),由于Oracle安装需要用到图形界面,所以需要安装桌面程序:
sudo apt-get install gnome-core
3.安装Oracle所需的依赖包,注意好多库是Red-Hat才有的(Ubuntu不叫这个名字),所以是安装不上的,所以你也不用纠结,保证能安装上的都安装上就可以(最后的错误可能和这个有关):
sudo apt-get install automake
sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install bzip2
sudo apt-get install elfutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install libstdc++5
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibc
4.创建用户(此步可省略,直接使用当前的用户即可,下面的安装过程都是以不执行这一步为准的)
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -g dba -d /opt/oracle -s /bin/bash oracle
sudo passwd oracle #下面会输入密码,记住这个密码哦
5.检查系统变量
/sbin/sysctl -a | grep sem /sbin/sysctl -a | grep shm /sbin/sysctl -a | grep file-max /sbin/sysctl -a | grep aio-max /sbin/sysctl -a | grep ip_local_port_range /sbin/sysctl -a | grep rmem_default /sbin/sysctl -a | grep rmem_max /sbin/sysctl -a | grep wmem_default /sbin/sysctl -a | grep wmem_max
6.修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件(下面是例子):
fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576
然后执行下面的命令,立即生效
sudo sysctl -p
7.添加对oracle用户的内核限制在 /etc/security/limits.conf 文件中增加以下数据
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240
8.查看/etc/pam.d/login,增加以下行(有了就不用增加了):
session required pam_limits.so
同样检查/etc/pam.d/su,没有以下行就自己加上:
ession required pam_limits.so
9.创建需要的文件夹(用于安装oracle)并设置其所有权:
mkdir -p /opt/oracle
mkdir -p /opt/oraInventory
chown -R oracle:oinstall /opt/oracle
chown -R oracle:oinstall /opt/oraInventory
10.oracle本身并不支持ubuntu来安装,所以要进行欺骗oracle的安装程序:
sudo mkdir /usr/lib64
sudo ln -s /etc /etc/rc.d
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
sudo echo ‘Red Hat Linux release 5′ > /etc/redhat-release
11.在命令行下面输入下面的命令:
sudo xhost +
su - oracle
切换为oracle用户。
12.我们编辑oracle用户的 .bash_profile文件。
vi .bash_profile #也可以写在.bashrc文件中
在文件中输入如下的内容:
#Oracle #这个写刚刚创建的文件夹 export ORACLE_BASE=/opt/oracle #这个后面可以随便填写 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 #数据库的sid export ORACLE_SID=orcl export ORACLE_UNQNAME=orcl #默认字符集 export NLS_LANG=.AL32UTF8 #环境变量 export PATH=${PATH}:${ORACLE_HOME}/bin/;
13.
下载Oracle安装程序(推荐windows下使用迅雷下载,因为这样是用p2p直接download,而不用登录oracle账户):
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
下载Linux x86的那两个文件(64位系统就下Linux x86-64),解压后得到database文件夹。
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
14.下面我们就来安装了
cd database
chmod 777 runInstaller
./runInstaller
15.图形安装界面的第一步是填写电子邮件,但是填完可能会出错:Unexpected error occurred while validating inputs at state 'getOCMDetails'。这是由于缺少pdksh依赖包,简单的解决办法是不填写邮件地址,不勾选下面的复选框,直接下一步,弹出提示后点 ‘Yes’就能直接进入下一步了。完美的解决办法可以到网上去看。
然后和windows平台上一样,不停的“next”就可以了
需要注意的就是第6步的时候会发现所有的检查几乎都会failed,而且next也没有办法点击,这个时候我们点击“复选框”“ignore all”(好像是这个),然后就可以next了,参考文章里是这么写的:图形界面下进行依赖检查的时候会列出很多依赖检查失败了,无法进入下一步了,此时选中右上角的‘忽略所有’就可以进入下一步了。
16.然后就是安装过程,安装过程会出现几个错误,这里大致说一下
(1)安装到68%时的错ins_ctx.mk的错误提示,直接contiue跳过去,百度一下知道:应该是上面没有安装glibc-devel导致的,但这是Red-Hat才有的包,具体可以参考http://www.ha97.com/4850.html里面的描述。如果你用CentOS来安装你会发现问题少了许多。这里我们直接跳过,目前我没有发现什么不对劲。
(2)然后我们遇到第二个问题(大致是下面的格式,图片是参考文章里的):
Exception String: Error in invoking target 'agent nmhs' of makefile '/opt/oracle/product/11.2.0/dbhome/sysman/lib/ins_emagent.mk'.
See '/opt/oraInventory/logs/installActions2016-12-23_10-33-22AM.log' for details.
我们新开一个终端,登录oracle用户。下输入下面的命令:
sed -i 's/^\s*\$(MK_EMAGENT_NMECTL)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
然后点击“Retry”继续安装
(3)然后出现了下面的这个错误(大致是下面的格式,图片是参考文章里的):
Error in invoking target 'all_no_orcl ihsodbc' of makefile '/opt/oracle/rdbms/lib/ins_rdbms.mk'.
See '/opt/oracle/oraInventory/logs/installActions2016-12-23_10-40-59AM.log' for details,
解决办法:
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh
sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk
然后在图形界面点击‘Retry’就能继续安装了。
19.最后应该就顺利完成了,按照安装程序提示最后执行两个脚本:
sudo /opt/oracle/oraInventory/orainstRoot.sh
sudo /opt/oracle/Oracle11g/product/11.2.0/dbhome_1/root.sh
就完成了全部的安装。可以通过https://localhost:1158/em进行网络访问了。
最后卸载oracle的方法:
g.卸载Oracle的方法:
$ORACLE_HOME/bin/localconfig delete
rm -rf $ORACLE_BASE/*
rm -f /etc/oraInst.loc /etc/oratab
rm -rf /etc/oracle
rm -f /etc/inittab.cssd
rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv
rm -rf $ORCLE_HOME
参考文章:
http://www.linuxidc.com/Linux/2015-03/115264.htm
http://www.iteye.com/topic/1134519
http://blog.csdn.net/idber/article/details/9039857/
https://my.oschina.net/farces/blog/279434