• CentOS 7 下 Oracle 11g 安装教程


    一、准备工作

    1、关闭selinux

      查看selinux状态:
      getenforce 或者sestatus -v
      临时关闭:
      setenforce 0
      永久关闭:
      vim /etc/selinux/config
      按i进入编辑模式
       SELINUX=disabled
      编辑完成后按Esc键,输入“:wq”存盘退出

    2、关闭firewalld 安装iptables

      分别执行如下命令:
      systemctl stop firewalld.service     停止服务
      systemctl disable firewalld.service    禁用服务

      yum -y install iptables-services     安装rpm软件包
      systemctl restart iptables.service    重启服务
      systemctl enable iptables.service   

    3、创建用户

      groupadd oinstall        创建用户组oinstall
       groupadd dba          创建用户组dba
      useradd -g oinstall -G dba -m oracle
                     创建用户Oracle并指定初始组oinstall和附加组dba
      passwd oracle         给新用户Oracle设置密码

    4、创建安装目录,解压文件

    这里是安装到根下ora目录,权限755,可以给高点如777
    mkdir -p /ora/oracle
    unzip -d /ora/ linux.x64_11gR2_database_1of2.zip
    unzip -d /ora/ linux.x64_11gR2_database_2of2.zip
    chown -R oracle:oinstall /ora
    chmod 755 -R /ora

    ora下各个目录的作用:
    database 解压安装程序后自动生成的安装包目录
    oracle oracle数据库安装目录
    oraInventory 默认安装日志存放目录(安装后生成)

    5、安装oracle所需依赖和桌面组件

    桌面组件有700多MB

    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

    yum -y groupinstall "GNOME Desktop" "Graphical Administration Tools"

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

    echo '127.0.0.1 oracledb localhost localhost.localdomain' >> /etc/hosts
    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
    
    7、修改内核(/etc/sysctl.conf),增加或修改以下内容

    vim /etc/sysctl.conf
    按i进入编辑模式
    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

    内核参数需要注意,shmall 和shmmax 的值由服务器内存决定。(不过这个参数设置博主我现在也是一知半解,没完全搞明白,查了半天意思如下:)
    kernel.shmall :
      该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB/4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304 符合要求。
    kernel.shmmax:
    是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,例如,如果为16GB物理内存,可取1610241024*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以上建议调整。经测试4G的服务器也适合,不用做修改。

    完成后使用命令
    sysctl -p

    8、修改认证模块

    vim /etc/security/limits.conf
    按i进入编辑模式

    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
    

    编辑完成后按Esc键,输入“:wq”存盘退出

    9、修改用户登录认证

    vim /etc/pam.d/login
    按i进入编辑模式

    session required /lib64/security/pam_limits.so
    session required pam_limits.so
    

    编辑完成后按Esc键,输入“:wq”存盘退出

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

    10、设置环境变量
    Ⅰ、ORACLE_HOME 设置为安装目录product下默认目录

    vim /etc/profile

    *按i进入编辑模式*
    #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
    

    编辑完成后按Esc键,输入“:wq”存盘退出

    Ⅱ、修改oracle用户环境变量

    vim /home/oracle/.bash_profile

    *按i进入编辑模式*
    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
    
    

    编辑完成后按Esc键,输入“:wq”存盘退出

    二、通过桌面方式安装oracle

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

    cd /ora/database
    ./runInstaller

    注意:oracle中文语言会出现乱码,所以系统最好设置为en 英文,如果系统安装的时候选择了中文,那么oracle用户登录的时候也要修改用户语言为英文才能正常安装。

    2、安装过程是都有相应提示的,并且鼠标直接点就完了
    1):订阅邮件这些就直接跳过不填了。

    订阅邮件.png

    2):这里选择忽略更新(没有这个选项则跳过)。

    忽略更新.png

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

    仅安装数据库.png

    4):选择单实例安装。

    单例安装.png

    5):语言,选择英文。选中文后面容易出问题。

    语言选择.png

    6):企业版

    企业版.png

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

    目录.png

    8):下一步

    8.png

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

    9.png

    10):先决条件检查

      安装的过程中可能会出现如下的一些警告信息,如提示semmni为0 的问题,该问题一直没有找到原因,我们在上面修改内核的过程中就已经调整了kernel.sem = 250 32000 100 128 但是检测无法通过(暂时无解)
      其他的一些依赖组件提示,其实我们已经大部分安装好了,只是centos7上yum安装的依赖包要比oracle 11g 所需的包更新,版本更高,所以大部分可以直接忽略这些提示(勾选 ignore all)。
      但是最好,我们将每一个包通过rpm来重新检查一下,如果有未安装的则通过yum来搜索安装。另外,这一步还可能出现交换分区不够的情况,可以通过命令来调整,这是链接
    先决条件检查.png

    11):安装到最后的时候会出现一个提示:需要用root权限执行2个shell脚本,那么我们在之前的root用户终端下运行提示中的对应脚本文件即可。

    这里或者更早前或者之后(我的就是后面)的步骤就可能会出现一个很神奇(zhizhang)的问题,对话框可能无法正常弹出,测试在VM虚拟机或者云服务器,如阿里云等都这样,但是用鼠标可以拖开。。。。如果开始拖不开,建议稍等,一般都没问题的
    执行shell脚本.jpg

    三、数据库建库

    1、 通过命令打开图形界面

      还是在oracle用户的图形界面oracle用户中,新开启一个终端,直接输入命令dbca会弹出如下界面。我们这里采用定制数据库。
      如果提示没有这个命令,那么请详细检查一下上述的依赖包是否正确安装,另外创建过程中如果出现提示oracle not available 检查是否已添加主机名到hosts文件中。
      最后安装过程比较漫长,还需要耐心等待。。。
    建库1.jpg

    建库2.jpg

    建库3.jpg

    建库4.jpg

    建库5.jpg

    建库6.jpg

    建库7.jpg

    建库8.jpg

    建库9.jpg

    建库10.jpg

    建库11.jpg

    四、配置监听以及本地网络服务

    1、在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面。

    监听配置1.jpg

    2、创建监听服务(充当oracle服务器,让别的oracle客户端连接本oracle服务器)

    监听配置2.jpg

    监听配置3.jpg

    监听配置4.jpg

    监听配置5.jpg

    监听配置6.jpg

    监听配置7.jpg

      至此,监听配置完成。

    3、配置本地网络服务名(充当oracle客户端,连接别的oracle服务器)

    本地网络1.jpg

    本地网络2.jpg

      输入连接的oracle服务器的数据库的实例名,以及有部分配置文件命名也跟实例名有关
    本地网络3.jpg

    本地网络4.jpg
      输入oracle服务器的ip地址
    本地网络5.jpg

    本地网络6.jpg
      点击change Login 输入所连接oracle服务器的其中某一个用户名和密码(用户名oracle和设置的密码),点击OK
    本地网络7.jpg
      看到此界面说明测试成功(如果不成功,请查看网络是否畅通,所连接的oracle服务器是否启动,监听是否启动等原因)
    本地网络8.jpg
      为你所设置的本地网络服务名起个名字
    本地网络9.jpg

    本地网络10.jpg

    本地网络11.jpg

      这样oracle服务器安装配置基本就完成了

    注意:

    1、Linux oracle数据库listener.ora存放路径
    cd %oracle_home%/network/admin/listener.ora
    2、Linux oracle数据库tnsnames.ora存放路径
    cd %oracle_home%/network/admin/tnsnames.ora
    3、ORACLE启动监听器
    (1)切换至oracle安装用户(一般为oracle)
    su - oracle
    (2)启动监听器
    lsnrctl start
    (3)停止监听器
    lsnrctl stop
    4、启动测试oracle:
    [oracle@oracle ~]$ sqlplus /nolog
    SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 27 02:12:12 2012
    Copyright (c) 1982, 2009, Oracle. All rights reserved.
    SQL> quit
    测试的另一种方法:找一台windows平台电脑,telnet oracle主机IP地址:1521,通的话,会出现一个黑屏,光标一闪一闪。
    5、Linux开放1521端口允许网络连接Oracle Listener
    症状:
    (1)TCP/IP连接是通的。可以用ping 命令测试。
    (2)服务器上Oracle Listener已经启动。
    lsnrctl status 查看listener状态
    lsnrctl start 启动Oracle listener
    (3)客户端得到的错误信息通常是:ORA-12170: TNS:连接超时
    这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置)
    解决方法:
    (1)假如你是在一个局域网环境,配置了防火墙。那么可以关闭Linux的防火墙。
    sudo service iptables stop
    (2)编辑iptables, 开放1521端口:
    sudo vi /etc/sysconfig/iptables
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
    :wq
    重启防火墙
    sudo service iptables restart
    保存配置,以便linux重启后依然有效
    sudo service iptables save
    查看防火墙规则:
    sudo iptables -L –n
    6、linux下创建oracle用户表空间
    就是在已有的数据库实例上创建一个新的帐号,访问一些新的表
    操作步骤如下:
    (1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)
    (2)以sysdba方式来打开sqlplus,命令如下: sqlplus "/as sysdba"
    (3)查看我们常规将用户表空间放置位置:执行如下sql:
    select name from v$datafile
    (4)创建用户表空间:
    CREATE TABLESPACE NOTIFYDB DATAFILE '/home/oracle/app/oradata/orcl/scsdb.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
    (5)创建用户,指定密码和上边创建的用户表空间
    CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
    (6)赋予权限
    grant connect,resource to scs;
    grant unlimited tablespace to scs;
    grant create database link to scs;
    grant select any sequence,create materialized view to scs;
    --经过以上操作,我们就可以使用scs/scs登录指定的实例,创建我们自己的表了

    以上内容基本是下面两篇博客的综合,以及本人在实际操作过程中遇到的问题以及解决方法(centos7虚拟机,4g内存)
    注意之后的内容并未实际操作,完全引用自第二篇大神的文章。如果大家发现有其他问题,欢迎评论,大家共同探讨。
      参考1
      参考2

    希望可以帮助到大家,大家也可关注我的公众号方便在手机上进行查看

  • 相关阅读:
    MySQL 常见问题
    Gym 101652P:Fear Factoring 数论
    万网域名查询接口(API)的说明
    在ashx页面获取Session值
    asp.net 操作xml
    用SQL进行嵌套查询
    在IE下 javascript比较两个字符串(包括中文汉字)是否相等
    asp.net中protected/private/public的用法与区别
    第一个
    解决IDEA Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA问题的一种方法。
  • 原文地址:https://www.cnblogs.com/caozz/p/9590759.html
Copyright © 2020-2023  润新知