1.1 安装依赖,创建用户和目录
参考http://www.cnblogs.com/gaojun/archive/2012/11/22/2783257.html
yum -y install binutils rpm -ivh compat-libstdc++-33-3.2.3-61.x86_64.rpm yum -y install elfutils-libelf yum -y install elfutils-libelf-devel yum -y install elfutils-libelf-devel-static yum -y install gcc yum -y install gcc-c++ yum -y install glibc yum -y install glibc-common yum -y install glibc-devel yum -y install glibc-headers yum -y install glibc-headers yum -y install ksh yum -y install libaio yum -y install libaio-devel yum -y install libgcc yum -y install libgomp yum -y install libstdc++ yum -y install libstdc++-devel yum -y install make yum -y install sysstat yum -y install unixODBC yum -y install unixODBC-devel
groupadd dba groupadd oper groupadd oinstall useradd -g oinstall -G dba oracle mkdir -p /opt/oracle/product mkdir -p /opt/oracle/product/OraHome mkdir -p /opt/oraInventory mkdir -p /opt/oracle/oradata mkdir -p /var/opt/oracle chown -R oracle.oinstall /opt/oracle chown -R oracle.oinstall /opt/oracle/oradata chown -R oracle.oinstall /opt/oracle/product/OraHome chown -R oracle.dba /opt/oraInventory chown oracle.dba /var/opt/oracle chmod -R 775 /opt/oracle chmod -R 755 /var/opt/oracle
1.2 修改系统参数文件,设置环境变量
1.2.1 修改系统参数:vim /etc/sysctl.conf,添加下列内容,并运行sysctl -p 使之生效
fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586
1.2.2 修改系统资源限制Shell Limits,提高软件的运行效率:vim /etc/security/limits.conf,添加:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
1.2.3 vim /etc/pam.d/login,添加:
session required /lib/security/pam_limits.so
session required pam_limits.so
1.2.4 vim /etc/profile,添加:
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
1.2.5 修改oracle用户的环境变量,su - oracle; vim .bash_profile,并source生效
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/OraHome export ORACLE_SID=orcl export ORACLE_OWNER=oracle export ORACLE_TERM=vt100 export ORA_NLS33=$ORACLE_HOME/nls/admin/data LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib export CLASSPATH export PATH=$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
然后便是解压下载的oracle安装包,以oracle用户运行database中的 ./runInstaller安装脚本,但是会出现错误提示:
[oracle@localhost database]$ ./runInstaller 正在启动 Oracle Universal Installer... 检查临时空间: 必须大于 120 MB。 实际为 32007 MB 通过 检查交换空间: 必须大于 150 MB。 实际为 2047 MB 通过 检查监视器: 监视器配置至少必须显示 256 种颜色 >>> 无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了 DISPLAY 变量。 未通过 <<<< 未通过某些要求检查。必须先满足这些 要求, 然后才能继续安装,
这里敲黑板了,因为oracle安装时要打开图形界面,但在xshell中是不行的,所以需要安装vnc服务,
2. 安装VNC
参考https://blog.csdn.net/wlzjsj/article/details/52149547
yum -y install xhost yum -y install tigervnc tigervnc-server yum install -y gnome*
配置vncserver config:vim /etc/sysconfig/vncservers
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/[email protected] VNCSERVERS="1:root" VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost" VNCSERVERS="2:oracle" VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
运行vncserver后会在用户目录下创建一个.vnc目录,编辑里面的xstartup文件
#!/bin/sh #unset SESSION_MANAGER #unset DBUS_SESSION_BUS_ADDRESS #exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & startkde & gnome-session &
记得关闭防火墙:
iptables -F
然后运行vncserver,根据它返回的序号,使用本地vncciewer连接,端口就是5900加上返回的序号
这里的5905中的5就是vncserver反馈的启动序号,密码可以自己设置一下就可以了。但是登上之后会发现都是乱码。
2.1 VNC 乱码问题
这个就是要安装一些语言支持的rpm包,但是怎么装都会提示缺少依赖
参考http://www.bubuko.com/infodetail-196827.html 其中有一句话说的很好,可以跳过rpm脚本的依赖检查错误直接安装
yum -y install libXp.so.6 yum -y install libpopt.so.0 rpm -ivh --nodeps chkfontpath-1.10.1-1.1.i386.rpm rpm -ivh ttmkfdir-3.0.9-23.el5.x86_64.rpm rpm -ivh fonts-chinese-3.02-12.el5.noarch.rpm rpm -ivh fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm
2.2 VNC打开oracle安装界面问题
通过上面的VNC客户端连接上之后,打开命令终端,切换到oracle用户运行./runInstaller,但是依然会有错误提示:
unable to open display ...
网上有很多人说方法,觉得还是百度经验说到点子上了https://jingyan.baidu.com/article/cbf0e5009ace292eaa2893f4.html
1.以root用户执行xdpyinfo,纪录下name of display后面的值,比如我上面的值是5
2.执行 xhost +
3.su - oracle
4.export DISPLAY=:5.0 //就是上面root记下的值
5.执行xdpyinfo可以出现display的信息了
然后执行./runInstaller就会出现oracle的安装提示框了:
就不一个个贴图了,过程需要填的一些值,与上面设置的环境变量保持一致就好:
oracle base: /opt/oracle software location: /opt/oracle/product/OraHome Inventory Directory: /opt/oralnventory oraInventory Group Name: oinstall Database Administrator(OSDBA) Group: dba Database Operator(OSOPER) Group: oinstall
3.安装过程中的检查失败问题
3.1 swap size 检查失败问题
参考:https://blog.csdn.net/hzh839900/article/details/79215703 ,在原来的基础上添加一个2G的交换区:
cd /tmp dd if=/dev/zero of=swapfree bs=32k count=65515 mkswap swapfree swapon swapfree vim /etc/fstab /tmp/swapfree swap swap defaults 0 0 //添加
然后check again
3.2 提示semmni的值为0以及缺少一些依赖包
但是在root用户下执行sysctl -p可以看到其实值已经设置成128了,另外对于缺少的依赖,网上有人说是由于centos 7用的版本高了,所以oracle检查不到,所以就怀疑是oracle的安装程序自己的检查脚本有问题了,所以勾上右上角的ignore All,继续往下走就行了。
3.3
Error in invoking target 'agent nmhs' of makefile ...
参考:https://blog.csdn.net/ghostliming/article/details/51566562 可以解决
最后:
4.配置监听和创建数据库实例
参考https://www.cnblogs.com/anzerong2012/p/7940850.html
还是用vnc客户端登录,以oracle用户运行netca,这一步还是比较容易,照图说明就行了,注意填的值与自己配的环境变量要保持一致。
5.oracle启动问题
oracle用户下执行sqlplus / as sysdba后进入sql命令状态,输入startup
5.1
ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/11.1.0/db_1/dbs/initorc11g.ora'
参考http://blog.itpub.net/128333/viewspace-1026068/
在/opt下 find -name init.ora.*,可以找到这么一个文件,然后我copy到目录/opt/oracle/product/OraHome/dbs下,记得重命名为initorc11g.ora
5.2
ORA-00845: MEMORY_TARGET not supported on this system
参考https://www.linuxidc.com/Linux/2012-12/76976.htm
大意是:在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错,所以可以增加/dev/shm
mount -o remount,size=16G /dev/shm vi /etc/fstab #添加一行 tmpfs /dev/shm tmpfs defaults,size=16g 0 0
5.3
ORA-01102: cannot mount database in EXCLUSIVE mode
参考https://www.cnblogs.com/fengqingtao/archive/2011/09/28/2194691.html,可以解决,具体原因没深究
/sbin/fuser -k lkTEST /sbin/fuser -u lkTEST
5.4 乱码问题,一堆问号我是把/opt/oracle/product/OraHome/dbs/initorcl.ora 就是刚才拷贝的那个文件中的nls_language由SIMPLIFIED CHINESE改成了AMERICAN就好了,觉得问题并没有解决,可能是我安装oracle选择的字符集有问题,我记得还特意选择了utf8,但是中文还是有乱码。
6.客户端安装及连接问题
6.1 Oracle Client安装报错:引用数据不可用于验证此操作系统分发的先决条件
参考http://www.zhimengzhe.com/shujuku/Oracle/345523.html,添加win10支持
6.2 监听启动错误
TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 111: Connection refused
参考https://www.cnblogs.com/xing901022/p/3895719.html,检查/etc/hosts文件,localhost只保留127.0.0.1一个映射
127.0.0.1 localhost
6.3
[oracle@bogon ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 21-JUN-2018 09:50:55 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.141.21)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 21-JUN-2018 09:44:27 Uptime 0 days 0 hr. 6 min. 53 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /opt/oracle/product/OraHome/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/bogon/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.141.21)(PORT=1521))) The listener supports no services The command completed successfully
当中的
The listener supports no services
参考https://blog.csdn.net/jar_java/article/details/51188687,还是通过vnc登录,进行网络配置,oracle用户运行netmgr
添加一个database,再说一遍sid及oracle home要与环境变量及initctl.ora中的值保持一致,然后退出保存就好。
6.4
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
添加好之后6.3的提示可能会换成这个上面这句话,
参考https://blog.csdn.net/csdnones/article/details/72903344,不能直接解决,但思路是一样的,也查看提示中的Listener Log File:/opt/oracle/diag/tnslsnr/bogon/listener/alert/log.xml
找到一句话:
<txt> 21-JUN-2018 09:44:58 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=bogon)(USER=oracle))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=186646784)) * status * 0 </txt>
于是我在/etc/hosts中添加一行映射:
127.0.0.1 localhost 192.168.141.21 bogon
然后再重新启动lsnrctl start ,查看状态会看到已经是ready了。
最后,终于可以通过plsql正常连接和操作了。
总结,虽然安装前已经做好了心理准备,但遇到的问题还是出乎意料的多,即便最终装完可以正常使用了,还是有些问题不太确定,毕竟自己对linux和oracle的认识还很浅,只是凭着安装过程的笔记和收藏的博文回忆出这次oracle安装过程及遇到的一些问题,并不代表下次安装就能一帆风顺不出现其他问题,就当作为一个经验借鉴吧,遇到问题解决问题就好。
参考文章:
1. http://www.cnblogs.com/gaojun/archive/2012/11/22/2783257.html
2. https://blog.csdn.net/wlzjsj/article/details/52149547
3. http://www.bubuko.com/infodetail-196827.html
4. https://jingyan.baidu.com/article/cbf0e5009ace292eaa2893f4.html
5. https://blog.csdn.net/hzh839900/article/details/79215703
6. https://blog.csdn.net/ghostliming/article/details/51566562
7. https://www.cnblogs.com/anzerong2012/p/7940850.html
8. http://blog.itpub.net/128333/viewspace-1026068/
9. https://www.linuxidc.com/Linux/2012-12/76976.htm
10. https://www.cnblogs.com/fengqingtao/archive/2011/09/28/2194691.html
11. http://www.zhimengzhe.com/shujuku/Oracle/345523.html
12. https://www.cnblogs.com/xing901022/p/3895719.html
13. https://blog.csdn.net/jar_java/article/details/51188687
14. https://blog.csdn.net/csdnones/article/details/72903344