1. 安装前环境准备

VMware Workstation 17搭建CentOS7虚拟机,CentOS7操作系统最小化安装,2G内存,20G磁盘空间,1核CPU,已配置好网络IP:192.168.10.130。已下载Oracle 11g Linux安装文件:linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip 通过Xmanager、MobaXterm或 Xsftp上传到虚拟机/tmp目录中。
oracle安装文件下载:

链接: https://pan.baidu.com/s/1oRbvWWg20YvXKWsCLrIzxg?pwd=nxu9
提取码: nxu9

2. 操作系统准备工作

(1)以 root 用户身份登录系统,通过 yum 安装 unzip 工具,用于解压上传的 Oracle 安装包。

[root@CentOS ~]# yum install unzip –y

解压Oracle 安装程序

[root@CentOS ~]# cd /tmp
[root@CentOS tmp]# unzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip

等待解压完成后,会在/tmp目录下生成一个database文件夹,其中包含Oracle 11g的安装文件。

(2)在/etc/hosts文件里添加主机名称。

[root@CentOS tmp]# vim /etc/hosts

在CentOS系统中添加本地服务器的IP地址。

在这里插入图片描述

(3)关闭selinux

[root@CentOS tmp]# vim /etc/selinux/config

将SELINUX参数设置为disabled(禁用状态)。

[root@CentOS tmp]# setenforce 0

(4)关闭防火墙

[root@CentOS ~]# systemctl stop firewalld
[root@CentOS ~]# systemctl disable firewalld

(5)安装Oracle 11g依赖包

在线环境依赖包安装方式:

[root@CentOS tmp]# yum install yum install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel –y

(6)创建安装用户及用户组。

[root@CentOS tmp]# groupadd oinstall
[root@CentOS tmp]# groupadd dba
[root@CentOS tmp]# useradd -g oinstall -G dba oracle
[root@CentOS tmp]# passwd oracle
[root@CentOS tmp]# id oracle
uid=1000(oracle) gid=1000(oinstall) 组=1000(oinstall),1001(dba)

(7)编辑内核参数的配置文件。

[root@CentOS ~]# vim /etc/sysctl.conf

添加以下内容

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
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@CentOS ~]# sysctl -p

其中kernel.shmmax = 1073741824表示该值设为本机2G物理内存的一半,单位为字节(byte)。

(8)对用户的限制文件进行修改。

[root@CentOS ~]# vim /etc/security/limits.conf

添加以下内容

oracle           soft    nproc           2047
oracle           hard    nproc           16384
oracle           soft    nofile          1024
oracle           hard    nofile          65536
oracle           soft    stack           10240

(9)对/etc/pam.d/login文件进行修改。

[root@CentOS ~]# vim /etc/pam.d/login

添加以下内容:

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

(10)对/etc/profile文件进行修改。

[root@CentOS ~]# 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

(11)创建安装目录并配置文件权限。

[root@CentOS ~]# mkdir -p /u01/app/oracle/product/11.2.0
[root@CentOS ~]# mkdir /u01/app/oracle/oradata
[root@CentOS ~]# mkdir /u01/app/oracle/inventory
[root@CentOS ~]# mkdir /u01/app/oracle/fast_recovery_area
[root@CentOS ~]# chown -R oracle:oinstall /u01/app/oracle
[root@CentOS ~]# chmod -R 775 /u01/app/oracle

(12)配置oracle用户的环境变量。

[root@CentOS ~]# su - oracle
[oracle@CentOS ~]$ vim .bash_profile

添加如下内容:

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

(13)对静默安装响应文件进行编辑。

[oracle@CentOS ~]$ cp -R /tmp/database/response/ .
[oracle@CentOS ~]$ cd response/
[oracle@CentOS response]$ vim db_install.rsp

需要配置的选项如下:

oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=CentOS
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true

3. 依据响应文件以静默方式安装Oracle 11g。

[oracle@CentOS response]$ cd /tmp/database/
[oracle@CentOS database]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq

在这里插入图片描述

开始在后台以静默方式安装Oracle。安装期间,若出现[WARNING]提示可忽略,此时安装程序仍在后台运行;若出现[FATAL]提示,则表明安装程序已停止。

本次安装会话的日志可在以下路径查找:
/u01/app/oracle/inventory/logs/installActions2025-06-10_06-15-10AM.1og

可切换至终端执行top命令,查看后台进程是否持续安装,同时观察到/u01目录的占用空间不断增大。当出现特定提示时,即表示安装成功。:

在这里插入图片描述

依照要求运行脚本。
开启终端,使用root用户登录系统,然后执行脚本:

[root@CentOS ~]# sh /u01/app/oracle/inventory/orainstRoot.sh
[root@CentOS ~]# sh /u01/app/oracle/product/11.2.0/root.sh

在这里插入图片描述

4.采用静默模式对监听进行配置。

再次以oracle用户身份进行登录。

[oracle@CentOS ~]$ netca /silent /responsefile /home/oracle/response/netca.rsp

在这里插入图片描述

执行成功后,会在 /u01/app/oracle/product/11.2.0/network/admin/ 目录下生成 listener.ora 和 sqlnet.ora 文件。通过 netstat 命令能够查看1521端口是否处于监听状态。

若要使用 netstat 命令,可通过Yum安装 net-tools 软件包来获取。

[root@CentOS ~]# yum install net-tools
[root@CentOS ~]# netstat -tnulp | grep 1521

在这里插入图片描述

5. 以静默模式创建新的数据库,并同步创建与之对应的实例。

[oracle@CentOS ~]$ vim /home/oracle/response/dbca.rsp

设置以下参数:

GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/u01/app/oracle/oradata
RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area
CHARACTERSET = "ZHS16GBK"
TOTALMEMORY = "1638"

其中TOTALMEMORY = "1638"表示1638MB,为物理内存2G的80%(2048MB×80%)。

执行静默模式配置:

[oracle@CentOS ~]$ dbca -silent -responseFile /home/oracle/response/dbca.rsp

在这里插入图片描述

数据库创建完成后,对实例进程进行检查:

[oracle@CentOS ~]$ ps -ef | grep ora_ | grep -v grep

在这里插入图片描述

检查监听器运行状态:

[oracle@CentOS ~]$ lsnrctl status

在这里插入图片描述

登录数据库以查看实例运行状态:

[oracle@CentOS ~]$ sqlplus / as sysdba
SQL> select status from v$instance;

在这里插入图片描述

6. 配置Oracle在系统启动时自动运行。

1.修改/u01/app/oracle/product/11.2.0/bin/dbstart

[oracle@CentOS ~]$ vim /u01/app/oracle/product/11.2.0/bin/dbstart

把ORACLE_HOME_LISTNER=$1这一设置调整为ORACLE_HOME_LISTNER=$ORACLE_HOME。

2.修改/u01/app/oracle/product/11.2.0/bin/dbshut

[oracle@CentOS ~]$ vim /u01/app/oracle/product/11.2.0/bin/dbshut

把 ORACLE_HOME_LISTNER=$1 修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME。
3.修改/etc/oratab文件

[oracle@CentOS ~]$ vim /etc/oratab

把orcl:/u01/app/oracle/product/11.2.0:N末尾的N替换为Y,变更为orcl:/u01/app/oracle/product/11.2.0:Y。
4.执行 dbshut 和 dbstart 命令进行测试。

[oracle@CentOS ~]$ dbshut

Oracle监听器已停止,相关进程已终止。
在这里插入图片描述

[oracle@CentOS ~]$ dbstart

Oracle监听器已启动,相关进程已运行。

在这里插入图片描述

5.切换至root用户,创建Oracle自动启动服务脚本。

[oracle@CentOS ~]$ su -
[root@CentOS ~]# vim /etc/rc.d/init.d/oracle

添加下述内容(部分参数如ORACLE_HOME和ORACLE_USER等需依据实际场景调整):

#!/bin/sh
# chkconfig: 35 80 10
# description: Oracle auto start-stop script.
# processname: oracle
# pidfile: /var/run/oracle.pid

# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/u01/app/oracle/product/11.2.0  # 直接指向产品目录
ORA_OWNER=oracle
ORACLE_SID=orcl

# 创建日志文件(如果不存在)
if [ ! -f /var/log/oracle ]; then
    touch /var/log/oracle
    chown $ORA_OWNER:$ORA_OWNER /var/log/oracle
fi

# 检查 Oracle 安装
if [ ! -f $ORA_HOME/bin/dbstart ]; then
    echo "Oracle startup: cannot start, $ORA_HOME/bin/dbstart not found!"
    exit 1
fi

case "$1" in
    'start')
        # Start the Oracle databases:
        echo "Starting Oracle Databases ... "
        echo "-------------------------------------------------" >> /var/log/oracle
        date +" %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
        echo "-------------------------------------------------" >> /var/log/oracle
        su - $ORA_OWNER -c "export ORACLE_SID=$ORACLE_SID; $ORA_HOME/bin/dbstart" >> /var/log/oracle 2>&1
        echo "Done"

        # Start the Listener:
        echo "Starting Oracle Listeners ... "
        echo "-------------------------------------------------" >> /var/log/oracle
        date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle
        echo "-------------------------------------------------" >> /var/log/oracle
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" >> /var/log/oracle 2>&1
        echo "Done."
        echo "-------------------------------------------------" >> /var/log/oracle
        date +" %T %a %D : Finished." >> /var/log/oracle
        echo "-------------------------------------------------" >> /var/log/oracle
        touch /var/lock/subsys/oracle
        ;;
    'stop')
        # Stop the Oracle Listener:
        echo "Stopping Oracle Listeners ... "
        echo "-------------------------------------------------" >> /var/log/oracle
        date +" %T %a %D : Stopping Oracle Listener as part of system down." >> /var/log/oracle
        echo "-------------------------------------------------" >> /var/log/oracle
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" >> /var/log/oracle 2>&1
        echo "Done."
        rm -f /var/lock/subsys/oracle

        # Stop the Oracle Database:
        echo "Stopping Oracle Databases ... "
        echo "-------------------------------------------------" >> /var/log/oracle
        date +" %T %a %D : Stopping Oracle Databases as part of system down." >> /var/log/oracle
        echo "-------------------------------------------------" >> /var/log/oracle
        su - $ORA_OWNER -c "export ORACLE_SID=$ORACLE_SID; $ORA_HOME/bin/dbshut" >> /var/log/oracle 2>&1
        echo "Done."
        echo ""
        echo "-------------------------------------------------" >> /var/log/oracle
        date +" %T %a %D : Finished." >> /var/log/oracle
        echo "-------------------------------------------------" >> /var/log/oracle
        ;;
    'restart')
        $0 stop
        sleep 5
        $0 start
        ;;
    'status')
        # 检查监听器状态
        echo "Checking Oracle Listener status..."
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl status"
        
        # 检查数据库状态(修复SQL脚本格式)
        echo "Checking Oracle Database status..."
        su - $ORA_OWNER -c "$ORA_HOME/bin/sqlplus -s / as sysdba <<'EOF'
        set heading off;
        set feedback off;
        select 'Database is ' || status from v\$instance;
        exit;
EOF"
        ;;
    *)
        echo "Usage: $0 [start|stop|restart|status]"
        exit 1
esac
exit 0

6.调整 /etc/rc.d/init.d/oracle 服务配置文件的访问权限

[root@CentOS init.d]# chmod 755 /etc/init.d/oracle

7.配置该服务随系统启动自动运行。

[root@CentOS ~]# chkconfig oracle on

在这里插入图片描述

8.执行 service oracle start、service oracle stop 和 service oracle restart 命令进行功能测试。

在这里插入图片描述

9.在关机或重启机器前,需按以下步骤停止数据库。

ln -s /etc/init.d/oracle /etc/rc0.d/K01oracle   //关机
ln -s /etc/init.d/oracle /etc/rc6.d/K01oracle   //重启

重启系统后,检查Oracle监听服务与数据库实例进程是否均实现自动启动。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐