环境

  • CentOS7.4 最小安装
  • 数据库软件
    • linux.x64_11gR2_database_1of2.zip
    • linux.x64_11gR2_database_2of2.zip

操作系统配置

  • 关闭 SELinux

    1
    
    sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
    
  • 关闭防火墙,或者放行 tcp 1521 端口

    1
    2
    
    systemctl disable firewalld
    systemctl stop firewalld
    
  • 检查交换内存(swap)大小,建议内存一半以上,如果没有设置虚拟内存,可参考如下操作

    1
    2
    3
    4
    
    dd if=/dev/zero bs=1024 count=1048576 of=/SWAP # 1GB
    chmod 0600 /SWAP
    echo '/SWAP swap swap defaults 0 0' >> /etc/fstab
    swapon /SWAP
    
  • 调整 /etc/fstab,调整共享内存分区的大小

    1
    2
    
    tmpfs /dev/shm tmpfs defaults,size=5120M 0 0
    # 这里的 5120M 是要调整的共享内存分区的大小,建议大小为内存一半以上
    
  • 重启操作系统

    1
    
    reboot
    

安装依赖

  • 安装可能用到的工具

    1
    2
    3
    4
    
    yum install epel-release
    yum clean all
    yum makecache fast
    yum install vim unzip rlwrap
    
  • 安装 oracle 需要的包

    1
    2
    3
    4
    5
    6
    
    yum install binutils compat-libcap1 compat-libstdc++-33 \
    compat-libstdc++-33*i686 gcc gcc-c++ glibc glibc*.i686 \
    glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel \
    libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel \
    libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC \
    unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
    

配置安装环境

  • 创建 oracle 用户

    1
    2
    3
    
    groupadd oinstall
    groupadd dba
    useradd -g oinstall -G dba oracle
    
  • 创建 oracle 安装目录

    1
    2
    3
    4
    5
    6
    
    mkdir -p /opt/oracle/app/product/11.2.0
    mkdir -p /opt/oracle/app/oradata
    mkdir -p /opt/oracle/app/fast_recovery_area
    mkdir -p /opt/oracle/inventory
    chown -R oracle:oinstall /opt/oracle
    chmod -R 775 /opt/oracle
    
  • 修改 sysctl.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    cat << EOF >> /etc/sysctl.conf
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    #物理内存一半和4G中的较大者
    kernel.shmmax = 4294967296
    #shmmax / 4k (getconf PAGESIZE)
    kernel.shmall = 1048576
    kernel.shmmni = 4096
    kernel.sem = 250 32000 200 200
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048586
    net.core.rmem_max = 4194304
    EOF
    sysctl -p
    
  • 修改 limits.conf

    1
    2
    3
    4
    5
    6
    
    cat << EOF >> /etc/security/limits.conf
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    EOF
    
  • 修改 login

    1
    2
    3
    4
    
    cat << EOF >> /etc/pam.d/login
    session required  /lib64/security/pam_limits.so
    session required pam_limits.so
    EOF
    
  • 修改 profile

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    cat << EOF >> /etc/profile
    if [ \$USER = "oracle" ] ; then
        if [ \$SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
            ulimit -n 65536
        else
            ulimit -u 16384 -n 65536
        fi
        umask 022
    fi
    EOF
    
  • 修改 oracle 用户的 .bash_profile

    1
    2
    3
    4
    5
    6
    7
    8
    
    cat << EOF >> /home/oracle/.bash_profile
    export ORACLE_BASE=/opt/oracle/app
    export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0
    export ORACLE_SID=orcl
    export PATH=\$PATH:\$ORACLE_HOME/bin
    #export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
    #export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
    EOF
    

安装数据库

  • 上传数据库软件到 /root 下,解压

    1
    2
    3
    
    unzip linux.x64_11gR2_database_1of2.zip -d /home/oracle/
    unzip linux.x64_11gR2_database_2of2.zip -d /home/oracle/
    chown -R oracle.oinstall /home/oracle/database
    
  • 切换到 oracle 用户,后续操作都在该 oracle 用户下执行

    1
    
    su - oracle
    
  • 创建 response 文件

    1
    2
    
    cd /home/oracle
    cp database/response/*.rsp ./
    
  • 修改 db_install.rsp

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    sed -i \
        -e '/^oracle.install.option=/s#=.*$#=INSTALL_DB_SWONLY#' \
        -e '/^UNIX_GROUP_NAME=/s#=.*$#=oinstall#' \
        -e '/^INVENTORY_LOCATION=/s#=.*$#=/opt/oracle/inventory#' \
        -e '/^SELECTED_LANGUAGES=/s#=.*$#=en,zh_CN#' \
        -e '/^ORACLE_HOME=/s#=.*$#=/opt/oracle/app/product/11.2.0#' \
        -e '/^ORACLE_BASE=/s#=.*$#=/opt/oracle/app#' \
        -e '/^oracle.install.db.InstallEdition=/s#=.*$#=EE#' \
        -e '/^oracle.install.db.DBA_GROUP=/s#=.*$#=dba#' \
        -e '/^oracle.install.db.OPER_GROUP=/s#=.*$#=dba#' \
        -e '/^oracle.install.db.config.starterdb.type=/s#=.*$#=GENERAL_PURPOSE#' \
        -e '/^DECLINE_SECURITY_UPDATES=/s#=.*$#=true#' \
        /home/oracle/db_install.rsp
    
  • 无需修改 netca.rsp

  • 修改 dbca.rsp

    1
    2
    3
    4
    5
    6
    7
    
    sed -i \
        -e '/^GDBNAME=/s#=.*$#=orcl#' \
        -e '/^SID=/s#=.*$#=orcl#' \
        -e '/^SYSPASSWORD=/s#=.*$#=111111#' \
        -e '/^SYSTEMPASSWORD=/s#=.*$#=111111#' \
        -e '/^CHARACTERSET=/s#=.*$#=ZHS16GBK#' \
        /home/oracle/dbca.rsp
    
  • 安装 oracle 软件

    1
    2
    3
    4
    5
    
    cd /home/oracle/database
    ./runInstaller -silent -responseFile /home/oracle/db_install.rsp -ignorePrereq
    #安装成功后,系统提示需要在 root 下执行两个脚本
    /opt/oracle/invertory/orainstRoot.sh
    /opt/oracle/app/product/11.2.0/root.sh
    
  • 配置监听

    1
    2
    3
    
    netca /silent /responseFile /home/oracle/netca.rsp
    #配置成功后,监听启动,查看监听状态
    lsnrctl status
    
  • 创建数据库

    1
    2
    
    dbca -silent -responseFile /home/oracle/dbca.rsp
    #查看屏幕输出的创建进度
    

启动数据库

  • 登陆 sysdba,启动数据库
    1
    2
    3
    4
    5
    6
    7
    
    [oracle@localhost ~]$ rlwrap sqlplus / as sysdba
    SQL*Plus: Release 11.2.0.1.0 Production on 星期一 6月 25 14:46:58 2018
    Copyright (c) 1982, 2009, Oracle.  All rights reserved.
    连接到:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL> startup
    

启动报错 LRM-00109

  • 详细报错信息如下:

    1
    2
    
    ORA-01078: failure in processing system parameters
    LRM-00109: could not open parameter file 'cd /opt/oracle/app/product/11.2.0/dbs/initorcl.ora'
    
  • 创建 initorcl.ora 文件

    1
    2
    
    cd /opt/oracle/app
    cp admin/orcl11g/pfile/init.ora.* product/11.2.0/dbs/initorcl.ora
    

启动报错 ORA-00845

  • 详细报错信息如下:

    1
    
    ORA-00845: MEMORY_TARGET not supported on this system
    
  • 调整 /etc/fstab,增加如下配置

    1
    2
    
    tmpfs /dev/shm tmpfs defaults,size=5120M 0 0
    # 这里的 5120M 是要调整的共享内存分区的大小
    
  • 重启服务器