Centos 7.9.2009 安装 oracle11g

words: 2.7k    views:    time: 13min

centos版本:7.9.2009
oracle版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit

1. 准备

首先安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

然后创建用户和目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

修改系统参数 /etc/sysctl.conf,添加下列内容,并运行sysctl -p 使生效

1
2
3
4
5
6
7
8
9
10
11
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

修改系统资源限制 /etc/security/limits.conf,添加:

1
2
3
4
oracle           soft    nproc   2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

修改 /etc/pam.d/login,添加:

1
2
session required /lib/security/pam_limits.so
session required pam_limits.so

修改 /etc/profile,添加:

1
2
3
4
5
6
7
8
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

修改oracle用户的环境变量 .bash_profile,并source生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# .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安装脚本,但是会出现错误提示:

1
2
3
4
5
6
7
8
9
10
11
[oracle@localhost database]$ ./runInstaller 
正在启动 Oracle Universal Installer...

检查临时空间: 必须大于 120 MB。 实际为 32007 MB 通过
检查交换空间: 必须大于 150 MB。 实际为 2047 MB 通过
检查监视器: 监视器配置至少必须显示 256 种颜色
>>> 无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了 DISPLAY 变量。 未通过 <<<<

未通过某些要求检查。必须先满足这些 要求,

然后才能继续安装,

这是因为oracle安装时要打开图形界面,但在shell中是不行的,需要安装vnc服务

2. 安装VNC

安装vnc server,以及桌面环境

1
2
3
yum -y install xhost
yum -y install tigervnc tigervnc-server
yum install -y gnome*

配置vncserver,修改 /etc/sysconfig/vncservers

1
2
3
4
5
6
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service
VNCSERVERS="1:root"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"

VNCSERVERS="2:oracle"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"

运行vncserver后会在用户目录下创建一个.vnc目录,编辑里面的xstartup文件

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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 &

记得关闭防火墙:

1
iptables -F

然后运行vncserver,根据它返回的序号,使用本地vncciewer连接,端口就是5900加上返回的序号

这里5905中的5就是vncserver反馈的启动序号,密码可以自己设置一下就可以了。但是登上之后会发现都是乱码。

VNC乱码问题

可以安装一些语言支持的rpm包,可以跳过rpm脚本的依赖检查错误直接安装

1
2
3
4
5
6
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

3. 安装oracle

1.通过上面的VNC客户端连接上之后,打开命令终端,切换到oracle用户运行./runInstaller,但是会有错误提示:

1
unable to open display ...

网上有很多办法并不管用,最后还是参考的百度经验

1
2
3
4
5
以root用户执行xdpyinfo,纪录下name of display后面的值,比如我上面的值是5
执行 xhost +
su - oracle
export DISPLAY=:5.0 //就是上面root记下的值
执行xdpyinfo可以出现display的信息了

然后执行./runInstaller就会出现oracle的安装提示框了

过程就不贴了,其中需要填的一些值与上面设置的环境变量保持一致就好:

1
2
3
4
5
6
7
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
错误提示
  • swap size 检查失败

参考https://blog.csdn.net/hzh839900/article/details/79215703 ,在原来的基础上添加一个2G的交换区,然后check again

1
2
3
4
5
6
7
8
9
cd /tmp                                            # 目录随意
dd if=/dev/zero of=swapfree bs=32k count=65515 # 创建了一个2G的文件swapfree

mkswap swapfree # 将文件swapfree用做交换分区

swapon swapfree # 开启这个交换空间

vim /etc/fstab # 修改/etc/fstab,设置此交换分区开机启动
/tmp/swapfree swap swap defaults 0 0
  • 提示semmni的值为0以及缺少一些依赖包

但是在root用户下执行sysctl -p可以看到其实值已经设置成128了,另外对于缺少的依赖,网上有说是由于centos 7用的版本高了,所以oracle检查不到,于是就怀疑是oracle的安装程序自己的检查脚本有问题,直接勾上右上角的ignore All,继续往下走就行了。

  • 提示:Error in invoking target ‘agent nmhs’ of makefile …

参考:https://blog.csdn.net/ghostliming/article/details/51566562

1
2
3
4
5
6
vi $ORACLE_HOME/sysman/lib/ins_emagent.mk

Search for the line
$(MK_EMAGENT_NMECTL)
Change it to:
$(MK_EMAGENT_NMECTL) -lnnz11

最后:

4. 配置监听和创建实例

参考https://www.cnblogs.com/anzerong2012/p/7940850.html ,用vnc客户端登录,以oracle用户运行netca,照图说明就行了,注意填的值与自己配的环境变量要保持一致

5. 启动服务

oracle用户下执行登录sqlplus / as sysdba,然后startup

  • ORA-01078
1
2
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

  • ORA-00845
1
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

1
2
3
4
5
mount -o remount,size=16G /dev/shm

vi /etc/fstab
#添加一行
tmpfs /dev/shm tmpfs defaults,size=16g 0 0
  • ORA-01102
1
ORA-01102: cannot mount database in EXCLUSIVE mode

参考https://www.cnblogs.com/fengqingtao/archive/2011/09/28/2194691.html ,可以解决,具体原因没细究

1
2
/sbin/fuser -k lkTEST
/sbin/fuser -u lkTEST
  • 乱码问题

一堆问号,可以修改/opt/oracle/product/OraHome/dbs/initorcl.ora 就是刚才拷贝的那个文件中的nls_language由SIMPLIFIED CHINESE改成AMERICAN

但是中文还是有乱码,可以检查下系统配置文件 /etc/locale.conf

1
LANG="zh_CN.UTF-8"

6. 远程连接

  • Oracle Client安装报错:引用数据不可用于验证此操作系统分发的先决条件

参考http://www.zhimengzhe.com/shujuku/Oracle/345523.html ,添加win10支持

  • 监听启动错误
1
2
3
4
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一个映射

1
127.0.0.1   localhost
  • The listener supports no services
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[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

参考https://blog.csdn.net/jar_java/article/details/51188687 ,通过vnc登录,进行网络配置,oracle用户运行netmgr

添加一个database,注意sid及oracle home要与环境变量及initctl.ora中的值保持一致,然后退出保存就好。

  • Instance “orcl”, status UNKNOWN, has 1 handler(s) for this service…

参考https://blog.csdn.net/csdnones/article/details/72903344 ,不能直接解决,但可以借鉴思路,
查看提示中的Listener Log File:/opt/oracle/diag/tnslsnr/bogon/listener/alert/log.xml,其中

1
2
3
<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中添加一行映射:

1
2
127.0.0.1   localhost
192.168.141.21 bogon

最后再重新启动lsnrctl start ,这次看到状态已经变成ready了,然后就可以通过plsql正常连接操作了

总结

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