文章都可以转载、引用,标明转载出处即可。

Centos 7 安装oracle 11g 数据库

DBserver Mr.c 13750℃ 0评论

  因为工作需要使用到oracle数据库,这让博主大感头疼呀,MySQL数据库到是相对熟悉了,oracle数据库说起来压根就没用过。先把服务安装起来吧。
  网上搜索到了很多教程无一例外的都是需要通过桌面环境安装,由于自己也是第一次安装oracle 所以同样先通过桌面环境启动安装,以下是自己整理的安装过程:
图片和说明较多,建议慢慢阅读。
系统环境:CentOS Linux release 7.3.1611
oracle版本:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
linux_64 版本oracle官网目前只有11.2.0.1.0可以下载,考虑到小版本迭代一般会修复一些BUG ,所以这里我使用的是11.2.0.4.0,基于版权问题,下载链接就不贴了,大家可以去官方下载11.2.0.1.0 都差不多的。 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
  但是,注意千万不要下载zlinux64版了,zlinux64版应该是IBM芯片服务器才能安装,一般inter芯片的PC服务器下载11.2.0.1.0 两个安装包都需要下载,一共2G多。

一:准备工作

1.关闭selinux

查看selinux状态:getenforce 或者sestatus -v
临时关闭:setenforce 0
永久关闭:vim  /etc/selinux/config 设置SELINUX=disabled

2. 关闭firewalld 安装iptables

systemctl stop firewalld.service
systemctl disable firewalld.service

yum -y install iptables-services
systemctl restart iptables.service
systemctl enable iptables.service

二:创建用户及安装目录,安装依赖包

1.创建用户

[root@oracledb ~] groupadd oinstall
[root@oracledb ~] groupadd dba
[root@oracledb ~] useradd -g oinstall -G dba -m oracle
[root@oracledb ~] passwd oracle

2.创建安装目录,解压文件
  这里我是准备安装到根下ora目录,网上很多说要给777权限,但是个人总感觉777权限过高,测试发现755就足够。

[root@oracledb ~] mkdir -p /ora/oracle
[root@oracledb ~] unzip -d /ora/  linux.x64_11gR2_database_1of2.zip
[root@oracledb ~] unzip -d /ora/  linux.x64_11gR2_database_2of2.zip
[root@oracledb ~] chown -R oracle:oinstall /ora
[root@oracledb ~] chmod 755 -R /ora

  解释一下各个目录的作用:

[root@oracledb ora] ll
total 16
drwxr-xr-x 8 oracle oinstall 4096 Aug 21  2009 database   #解压安装程序后自动生成的安装包目录
drwxr-xr-x 9 oracle oinstall 4096 Apr 26 16:43 oracle   #oracle数据库安装目录
drwxrwx--- 5 oracle oinstall 4096 Apr 26 16:29 oraInventory   #默认安装日志存放目录(安装后生成)

3.安装oracle所需依赖和桌面组件,桌面组件有700多MB

[root@oracledb ~] yum -y install binutils compat compat-libstdc gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
[root@oracledb ~] yum -y groupinstall "GNOME Desktop" "Graphical Administration Tools"

三:修改系统内核等设置

1. 将服务器名写入到hosts文件,可以测试ping sername 是否返回127.0.0.1

[root@oracledb ~] echo '127.0.0.1 oracledb  localhost localhost.localdomain' >> /etc/hosts
[root@oracledb ~] ping -c 3 oracledb
PING oracledb (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms
--- oracledb ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.030/0.038/0.043/0.005 ms

2.修改内核(/etc/sysctl.conf),增加或修改以下内容
  内核参数需要注意,shmall 和shmmax 的值由服务器内存决定。(不过这个参数设置博主我现在也是一知半解,没完全搞明白,查了半天意思如下:)
kernel.shmall :
  该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB/4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304 符合要求。
kernel.shmmax:
  是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,例如,如果为16GB物理内存,可取16*1024*1024*1024-1=17179869183。
kernel.shmmni:
  该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
kernel.sem = 250 32000 100 128 的意思是:
  250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
  32000是参数semmns的值,表示系统内可允许的信号量最大数目。
  100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
  128是参数semmni的值,表示系统信号量集合总数。

以下适用于8G内存左右服务器配置,12G或者16G以上建议调整。

[root@oracledb ~] vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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 = 1048576

  完成后使用命令

[root@oracledb ~] sysctl -p

3.修改认证模块

[root@oracledb ~] vim /etc/security/limits.conf
oracle   soft   nproc    131072
oracle   hard   nproc    131072
oracle   soft   nofile   131072
oracle   hard   nofile   131072
oracle   soft   core     unlimited
oracle   hard   core     unlimited
oracle   soft   memlock  50000000
oracle   hard   memlock  50000000

4.修改用户登录认证

[root@oracledb ~] vim /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so

  注意了,很多博文都是照搬抄袭,都是写的/lib/security/pam_limits.so 一般咱都是64位系统,64位系统需要设置为/lib64/security/pam_limits.so 否则重启服务器后就会出现命令行无法登录,但是通过桌面方式能登录的情况。
5.设置环境变量
ORACLE_HOME 设置为安装目录product下默认目录

[root@oracledb ~] vim /etc/profile
#oracle
export ORACLE_HOME=/ora/oracle/product/11.2.0/db_1
export ORACLE_SID=orcl
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

6.修改oracle用户环境变量

[root@oracledb ~] vim /home/oracle/.bash_profile
export ORACLE_BASE=/ora/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

四:通过桌面方式安装oracle

1.使用oracle用户登录桌面,打开终端运行安装程序。

[root@oracledb ~] cd /ora/database
[root@oracledb ~] ./runInstaller

  注意:oracle中文语言会出现乱码,所以系统最好设置为en 英文,如果系统安装的时候选择了中文,那么oracle用户登录的时候也要修改用户语言为英文才能正常安装。
2.安装过程是都有相应提示的,并且鼠标直接点就完了
1):订阅邮件这些就直接跳过不填了。

2):这里选择忽略更新(11.2.0.1.0 好像没这个选项,而是让选择桌面版还是服务器版,如果有当然选择服务器版咯)。

3):这里选择仅安装数据库,稍后再配置初始化数据。

4):选择单实例安装。

5):语言,linux服务器上就别想什么中文这些了,就默认英文完事。

6):默认

7):这里就出现最开始创建的相应目录信息了,会自动读取。

8):下一步

9):选择group 组为之前创建好的oinstall

10):安装的过程中可能会出现如下的一些警告信息,如提示semmni为0 的问题,该问题一直没有找到原因,我们在上面修改内核的过程中就已经调整了kernel.sem = 250 32000 100 128 但是检测无法通过(暂时无解)
  其他的一些依赖组件提示,其实我们已经安装好了,只是centos7上yum安装的依赖包要比oracle 11g 所需的包更新,版本更高,所以可以直接忽略这些提示(勾选 ignore all)。

3.安装到最后的时候会出现一个提示:需要用root权限执行2个shell脚本,那么我们在之前的root用户终端下运行提示中的对应脚本文件即可。
  这里或者更早前的步骤就可能会出现一个很神奇(zhizhang)的问题,对话框可能无法正常弹出,测试在VM虚拟机或者云服务器,如阿里云等都这样,但是用鼠标可以拖开。。。。是的,你没有看错,直接拖出对话框。这个问题不知道原因,有知道的朋友请留言告知,万分感谢。

  有网友评论留言了,执行runinstaller的时候跟上参数,本人测试了确实可以解决对话框无法正常弹出问题,非常非常感谢这位朋友。 执行 ./runInstaller -jreLoc /usr/lib/jvm/jre-1.8.0 即可


  还有可能出现一个压根儿就不能拖得对话框(阿里云上反复测试,就是会出现)最后没辙了,本地跑虚拟机一步步的模拟安装,发现是一个警告提示,一般按4次tab键即可切换到下一步选项回车即可。。。

4.安装完成后还需要创建数据库,还是同样在oracle用户桌面环境下,重新打开一个终端,输入 dbca 命令即可弹出相应的数据库创建向导。

  如果提示没有这个命令,那么请详细检查一下上述的依赖包是否正确安装,另外创建过程中如果出现提示
oracle not available 检查是否已添加主机名到hosts文件中。

几处非默认设置的大概贴一下,实在图太多了,请谅解。

  下面是否开启自动内存管理,这是10g后的一个功能,建议开启吧。关于这个大小的设置就又需要提到 tmpfs 这个特殊目录了,这里的大小正是和tmpfs值有关,这里就不提了,大家自己查下吧。

5.完成数据库创建后还需要配置监听及本地网络服务,同样在桌面终端下输入 netca 即可弹出配置向导,根据向导操作创建即可。

  到此如果没有错误中断的话oracle已经完成安装配置,并且端口已经监听,可以使用命令登录测试(最好切换到Oracle用户后执行命令):

[root@oracledb ~] sqlplus / as sysdba 
Enter user-name: sys
Enter password: 
ERROR:
ORA-01017: invalid username/password; logon denied   #如果出现该报错,请替换用户名
Enter user-name: sys as sysdba
Enter password: 

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
#可查询版本号等进行测试是否正常执行命令。

oracle启动监听命令:

[root@oracledb ~] lsnrctl start

root用户下可能并没有sqlplus 和lsnrctl 命令,如果经常使用root管理服务器,可以将这两个命令软连接到/usr/bin下面。

[root@oracledb ~] ln -s /ora/oracle/product/11.2.0/db_1/bin/lsnrctl  /usr/bin
[root@oracledb ~] ln -s /ora/oracle/product/11.2.0/db_1/bin/sqlplus  /usr/bin

  在安装的时候配置oracle用户的密码最好要复杂一些,以免被破解登录,另外也可以将oracle用户添加到禁止SSH登录的名单中,通过其他用户登录到服务器切换到oracle用户。
禁止oracle用户通过ssh登录:

[root@oracledb ~] vim /etc/ssh/sshd_config
DenyUsers oracle

  找到一篇比较详细的图文安装教程: http://www.jb51.net/article/53769.htm 里面有创建监听和配置网络服务的一些步骤,第一次安装的朋友可以看上面的贴图操作。

转载请注明:菜鸟运维网 » Centos 7 安装oracle 11g 数据库

喜欢 (32)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. oracle授权费不低呀
    小z博客2017-05-09 10:49 回复
    • 还可以吧,反正一般不给钱
      Mr.c2017-05-11 18:01 回复
  2. 默认我们安装的时候都是: ./runInstaller 也就是直接运行安装文件,但是这种默认安装的方式就会出现上述错误,为了避免上述情况出现可以通过指定参数安装: ./runInstaller -jreLoc /usr/lib/jvm/jre-1.8.0 这样就可以解决了安装过程中出现弹框无法显示完整的问题
    sama2017-10-10 13:26 回复
  3. 可以转载吗
    jreey2019-05-16 12:08 回复