CentOS 7 静默安装 Oracle 11g

记录在云服务器上安装配置Oracle的过程,以便忘记后回顾🤦‍♂️

系统及软件版本

  1. 腾讯云CentOS 7.6 64位 1核2G
  2. Oracle 11g

下载Oracle 11g

Oracle官方网站,我的机器安装的是CentOS7 64位系统,因此下载的Oracle版本也是64位的。然后将文件通过Xftp上传到 /db/

安装依赖包

  1. 安装之前,首先将yum源更改为aliyun源,这样下载速度快一些。

    1
    2
    3
    4
    5
    6
    cd /etc
    mv yum.repos.d yum.repos.d.bak
    mkdir yum.repos.d
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    yum clean all
    yum makecache
  2. 修改完成后,安装依赖包:

    1
    yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel
  3. 使用如下命令检查依赖包是否安装完整:

    1
    rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"
  4. 发现 pdksh 没有安装,执行 yum -y install pdksh,发现CentOS 7 没有相关安装包可用,通过wget命令直接下载pdksh的rpm包,我下载到了/tmp/

    1
    wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm

    下载完成后,进入 /tmp/

    1
    2
    cd /tmp
    rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

    再次检查依赖包是否安装完整

    1
    rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"

添加oracle用户组和用户

  1. 执行命令:

    1
    2
    3
    4
    groupadd oinstall
    groupadd dba
    groupadd asmdba
    useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
  1. 添加完成后,查看oracle用户

    1
    id oracle

    初始化oracle用户的密码

    1
    passwd oracle

配置hostname(本地IP映射)

  1. 配置命令

    1
    vim /etc/hosts

    127.0.0.1 centos-orcl

    测试hostname

    1
    ping -c 3 centos-orcl

优化OS内核参数

  1. kernel.shmmax 参数设置为物理内存的一半

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    vim /etc/sysctl.conf

    fs.aio-max-nr=1048576
    fs.file-max=6815744
    kernel.shmall=2097152
    kernel.shmmni=4096
    kernel.shmmax = 1073741824
    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
    sysctl -p

限制oracle用户的shell权限

  1. 编辑文件

    1
    2
    3
    4
    5
    6
    vim /etc/security/limits.conf

    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    1
    2
    3
    4
    vim /etc/pam.d/login

    session required /lib64/security/pam_limits.so
    session required pam_limits.so
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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
    source /etc/profile

创建oracle安装目录

  1. 创建目录

    1
    2
    3
    4
    5
    6
    mkdir -p /db/app/oracle/product/11.2.0
    mkdir /db/app/oracle/oradata
    mkdir /db/app/oracle/inventory
    mkdir /db/app/oracle/fast_recovery_area
    chown -R oracle:oinstall /db/app/oracle
    chmod -R 775 /db/app/oracle

配置oracle用户环境变量

  1. 编辑文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    su - oracle
    vim .bash_profile

    umask 022
    export ORACLE_HOSTNAME=centos-orcl
    export ORACLE_BASE=/db/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
    export ORACLE_SID=orcl
    export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
    export LC_ALL="en_US"
    export LANG="en_US"
    export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

    以上配置完成后,个人建议重启下系统

    1
    reboot

解压oracle压缩文件到/db

  1. 命令

    1
    2
    3
    4
    cd /db/

    unzip linux.x64_11gR2_database_1of2.zip -d /db
    unzip linux.x64_11gR2_database_2of2.zip -d /db

    解压完成后

    1
    2
    3
    4
    mkdir -p /db/etc/response/
    cp /db/database/response/* /db/etc/response/

    vim /db/etc/response/db_install.rsp
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    oracle.install.option=INSTALL_DB_SWONLY
    DECLINE_SECURITY_UPDATES=true
    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/db/app/oracle/inventory
    SELECTED_LANGUAGES=en,zh_CN
    ORACLE_HOSTNAME=centos-orcl
    ORACLE_HOME=/db/app/oracle/product/11.2.0
    ORACLE_BASE=/db/app/oracle
    oracle.install.db.InstallEdition=EE
    oracle.install.db.isCustomInstall=true
    oracle.install.db.DBA_GROUP=dba
    oracle.install.db.OPER_GROUP=dba
  2. 开始安装

    1
    2
    su - oracle
    ./runInstaller -silent -ignorePrereq -responseFile /db/etc/response/db_install.rsp

    安装期间可以使用tail命令监听oracle的安装日志,比如:

    1
    tail -f /db/app/oracle/inventory/logs/installActions2017-07-12_03-48-37PM.log

    安装完成,提示Successfully Setup Software,回车即可。

    1
    2
    3
    su root
    sh /db/app/oracle/inventory/orainstRoot.sh
    sh /db/app/oracle/product/11.2.0/root.sh

配置静默监听

  1. 配置命令

    1
    2
    3
    su - oracle

    netca /silent /responsefile /db/etc/response/netca.rsp

  2. 查看监听端口

    1
    netstat -tnulp | grep 1521

静默创建数据库

  1. TOTALMEMORY设置为总内存的80%

    1
    vi /db/etc/response/dbca.rsp
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    GDBNAME = "orcl"
    SID = "orcl"
    SYSPASSWORD = "oracle"
    SYSTEMPASSWORD = "oracle"
    SYSMANPASSWORD = "oracle"
    DBSNMPPASSWORD = "oracle"
    DATAFILEDESTINATION =/db/app/oracle/oradata
    RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area
    CHARACTERSET = "AL32UTF8"
    TOTALMEMORY = "1638"
  2. 执行静默建库

    1
    dbca -silent -responseFile /db/etc/response/dbca.rsp

  3. 查看oracle实例进程

    1
    ps -ef | grep ora_ | grep -v grep

  4. 查看监听状态

    1
    lsnrctl status

  5. 登录sqlplus,查看实例状态

    1
    2
    3
    sqlplus /nolog
    conn sys/oracle@orcl as sysdba
    select * from v$version;
  6. 激活scott用户

    1
    2
    alter user scott account unlock;
    alter user scott identified by tiger;

  7. 创建用户并授权

    1
    2
    create user lihtao identified by "232408"
    grant connect,resource to lihtao;

  1. 开放1521端口

    1
    2
    firewall-cmd --zone=public --add-port=1521/tcp --permanent
    firewall-cmd --reload

    如果是服务器,则需要在安全组中配置相应的规则。

  2. 下载 instantclient-basic,解压压缩文件。

  3. 配置Navicat

设置Oracle开机启动

  1. 编辑文件

    1
    2
    3
    vi /db/app/oracle/product/11.2.0/bin/dbstart

    ORACLE_HOME_LISTNER=$ORACLE_HOME
    1
    2
    3
    vi /db/app/oracle/product/11.2.0/bin/dbshut

    ORACLE_HOME_LISTNER=$ORACLE_HOME
    1
    2
    3
    vi /etc/oratab

    orcl:/db/app/oracle/product/11.2.0:Y
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    vi /etc/rc.d/init.d/oracle

    #! /bin/bash
    # oracle: Start/Stop Oracle Database 11g R2
    #
    # chkconfig: 345 90 10
    # description: The Oracle Database is an Object-Relational Database Management System.
    #
    # processname: oracle
    . /etc/rc.d/init.d/functions
    LOCKFILE=/var/lock/subsys/oracle
    ORACLE_HOME=/db/app/oracle/product/11.2.0
    ORACLE_USER=oracle
    case "$1" in
    'start')
    if [ -f $LOCKFILE ]; then
    echo $0 already running.
    exit 1
    fi
    echo -n $"Starting Oracle Database:"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
    touch $LOCKFILE
    ;;
    'stop')
    if [ ! -f $LOCKFILE ]; then
    echo $0 already stopping.
    exit 1
    fi
    echo -n $"Stopping Oracle Database:"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
    su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
    rm -f $LOCKFILE
    ;;
    'restart')
    $0 stop
    $0 start
    ;;
    'status')
    if [ -f $LOCKFILE ]; then
    echo $0 started.
    else
    echo $0 stopped.
    fi
    ;;
    *)
    echo "Usage: $0 [start|stop|status]"
    exit 1
    esac
    exit 0
  2. 开机启动oracle

    1
    systemctl enable oracle

可能遇到的问题

  1. 交换空间

    解决方法:创建交换空间

    • 检查 Swap 空间在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。运行以下命令:
    1
    swapon -s

    如果返回的信息概要是空的,则表示 Swap 文件不存在。

    • 检查文件系统在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。运行以下命令:
    1
    df -hal
  • 创建并允许 Swap 文件下面使用 dd 命令来创建 Swap 文件。检查返回的信息,还剩余足够的硬盘空间即可。
1
1 dd if=/dev/zero of=/swapfile bs=1024 count=512k

参数解读:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

  • 格式化并激活 Swap 文件上面已经创建好 Swap 文件,还需要格式化后才能使用

    1
    mkswap /swapfile
  • 激活 Swap

    1
    swapon /swapfile
  • 以上步骤做完,再次运行命令

    1
    swapon -s
  • 你会发现返回的信息概要:

    1
    2
    Filename                Type        Size    Used    Priority
    /swapfile file 524284 0 -1
  • 如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:

    1
    /swapfile          swap            swap    defaults        0 0
  • 最后,赋予 Swap 文件适当的权限:

    1
    2
    chown root:root /swapfile 
    chmod 0600 /swapfile

  1. 权限不足

    为了防止oracle安装时没有文件或者文件夹的权限,建议通过chown命令更改/db文件夹为oracle这个账号所有。

    1
    chown -R oracle:oinstall /db/

参考:https://blog.csdn.net/Kenny1993/article/details/75038670
参考:https://blog.csdn.net/qq_35893120/article/details/80655645
参考:https://blog.csdn.net/sunhua2013/article/details/78396445


Donate comment here
-------------本文结束感谢您的阅读-------------
0%