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源,这样下载速度快一些。

    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. 修改完成后,安装依赖包:

    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. 使用如下命令检查依赖包是否安装完整:

    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/

    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/

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

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

    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. 执行命令:

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

    id oracle
    

    初始化oracle用户的密码

    passwd oracle
    

配置hostname(本地IP映射)

  1. 配置命令

    vim /etc/hosts
    

    127.0.0.1 centos-orcl

    测试hostname

    ping -c 3 centos-orcl
    

优化OS内核参数

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

    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
    

    使参数生效

    sysctl -p
    

限制oracle用户的shell权限

  1. 编辑文件

    vim /etc/security/limits.conf
    
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    
    vim /etc/pam.d/login
    
    session  required   /lib64/security/pam_limits.so
    session  required   pam_limits.so
    
    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
    

    让环境变量立即生效

    source /etc/profile
    

创建oracle安装目录

  1. 创建目录

    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. 编辑文件

    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"
    

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

    reboot
    

解压oracle压缩文件到/db

  1. 命令

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

    解压完成后

    mkdir -p /db/etc/response/
    cp /db/database/response/* /db/etc/response/
    
    vim /db/etc/response/db_install.rsp
    
    oracle.install.option=INSTALL_DB_SWONLY
    DECLINE_SECURITY_UPDATES=true
    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/u01/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. 开始安装

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

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

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

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

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

配置静默监听

  1. 配置命令

    su - oracle
    
    netca /silent /responsefile /db/etc/response/netca.rsp
    

  2. 查看监听端口

    netstat -tnulp | grep 1521
    

静默创建数据库

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

    vi /db/etc/response/dbca.rsp
    
    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. 执行静默建库

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

  3. 查看oracle实例进程

    ps -ef | grep ora_ | grep -v grep
    

  4. 查看监听状态

    lsnrctl status
    

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

    sqlplus /nolog
    select * from v$version;
    
  6. 激活scott用户

    alter user scott account unlock;
    alter user scott identified by tiger;
    select username,account_status from all_users;
    

  7. 创建用户并授权

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

Navicat远程连接Oracle

  1. 开放1521端口

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

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

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

  3. 配置Navicat

设置Oracle开机启动

  1. 编辑文件

    vi /db/app/oracle/product/11.2.0/bin/dbstart
    
    ORACLE_HOME_LISTNER=$ORACLE_HOME
    
    vi /db/app/oracle/product/11.2.0/bin/dbshut
    
    ORACLE_HOME_LISTNER=$ORACLE_HOME
    
    vi /etc/oratab
    
    orcl:/db/app/oracle/product/11.2.0:Y
    
    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

    systemctl enable oracle
    

可能遇到的问题

  1. 交换空间

    解决方法:创建交换空间

  2. 权限不足

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

    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


更详细内容,请访问我的博客:https://lihtao.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值