当前位置:首页 > 问答 > 正文

说说怎么把Oracle装成Linux服务,步骤和注意点都讲清楚

你需要明白,将Oracle安装成Linux服务,主要目的是为了让数据库能够随着操作系统的启动而自动启动,随着系统的关闭而优雅地关闭,这样一来,你就不需要每次重启服务器后都手动去敲命令启动了,下面我根据Oracle官方文档的通用安装逻辑和常见的系统管理实践,来详细说说这个过程。

第一步:准备工作与环境检查

在开始安装之前,有几件事情必须确保已经做好,这就像盖房子要先打好地基一样。

  1. 获取Oracle软件:你需要从Oracle官方网站下载适合你Linux版本的Oracle数据库安装包,通常有两个文件,你需要把它们解压到同一个目录下,使用Oracle软件需要遵守它的许可协议。
  2. 检查硬件和软件要求:根据Oracle官方文档(Oracle Database Installation Guide》for Linux),确认你的服务器内存、磁盘空间、交换分区等是否满足最低要求,通常需要至少1GB的内存和足够的/tmp空间。
  3. 创建用户和组:为了安全起见,绝对不推荐使用root用户来安装和运行Oracle,你需要创建专门的用户和组,通常的做法是创建一个名为oracle的主要用户,以及一个名为oinstall的主组和一个名为dba的附加组,你可以使用groupadduseradd命令来完成这个步骤。
  4. 配置内核参数:Oracle数据库对操作系统内核有一些特定的要求,比如信号量参数、共享内存大小、文件句柄数量等,你需要按照文档要求,修改/etc/sysctl.conf文件,然后运行sysctl -p命令使设置生效。
  5. 配置用户环境变量:切换到oracle用户,在其家目录下的.bash_profile文件中设置一些关键的环境变量,最重要的几个是:
    • ORACLE_SID:这是你的数据库实例名,比如orcl
    • ORACLE_HOME:这是Oracle软件的安装目录路径,比如/u01/app/oracle/product/19.0.0/dbhome_1
    • PATH:需要把$ORACLE_HOME/bin加入到路径中,这样你就能在任何位置运行Oracle的命令行工具了。

第二步:运行安装程序

准备工作就绪后,就可以开始安装了。

  1. oracle用户身份登录到图形化界面(如果服务器没有桌面环境,可能需要配置X11转发才能在本地电脑上显示安装界面)。
  2. 进入你解压Oracle安装包的目录,找到并运行runInstaller脚本。
  3. 安装程序会引导你完成整个过程,你会遇到几个关键选择:
    • 安装选项:如果你是第一次安装,选择“创建和配置数据库”,这样安装软件的同时会创建一个初始数据库。
    • 安装类型:通常选择“典型安装”就够了,它会使用默认配置,高级用户可以选择“高级安装”进行更细致的定制。
    • 数据库配置:在这里你需要指定全局数据库名(通常和ORACLE_SID一样)、管理口令等,请务必记牢你设置的口令。
  4. 安装过程中,安装程序可能会提示你需要以root权限执行一些脚本,这时,你需要打开另一个终端,用root用户登录,依次运行它提示的脚本(比如root.sh),这是安装过程中非常关键的一步,这些脚本会完成一些需要超级用户权限才能做的操作。

第三步:配置为系统服务(关键步骤)

安装完软件和数据库后,虽然数据库可能已经运行了,但它还没有被注册为系统的服务,这就是我们接下来的核心工作。

Oracle提供了一个强大的工具叫dbstartdbshut,用来启动和关闭数据库,但我们需要一个方式来让系统服务管理器(比如systemd,现在主流的Linux发行版都用它)来调用这些脚本。

  1. 创建systemd服务文件:我们需要为Oracle创建一个服务单元文件,以root身份在/etc/systemd/system/目录下创建一个文件,例如叫做oracle-19c.service

  2. 编辑服务文件内容:这个文件的内容是指挥systemd如何管理Oracle服务的关键,下面是一个基本的示例,你需要根据你的实际路径进行修改:

    [Unit]
    Description=Oracle Database 19c
    After=network.target
    [Service]
    Type=forking
    User=oracle
    Group=oinstall
    Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
    Environment="ORACLE_SID=orcl"
    ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart $ORACLE_HOME
    ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut $ORACLE_HOME
    TimeoutSec=0
    RemainAfterExit=yes
    [Install]
    WantedBy=multi-user.target
    • Description:服务的描述信息。
    • After=network.target:确保在网络服务启动之后再启动Oracle,因为数据库需要网络。
    • Type=forking:因为dbstart脚本会启动后台进程。
    • UserGroup:指定用哪个用户和组来运行服务,这里就是我们之前创建的oracleoinstall
    • Environment:这里设置环境变量,确保脚本在正确的环境下运行。
    • ExecStartExecStop:定义启动和停止服务时执行的命令。
  3. 重新加载systemd并启用服务

    • 运行命令 systemctl daemon-reload 来让systemd识别我们新创建的服务文件。
    • 运行命令 systemctl enable oracle-19c.service 来让这个服务开机自启动。
  4. 测试服务

    • 现在你可以使用 systemctl start oracle-19c 来启动数据库。
    • 使用 systemctl stop oracle-19c 来停止数据库。
    • 使用 systemctl status oracle-19c 来查看服务的运行状态。

重要的注意点

  1. 权限问题:整个过程中,要非常清楚当前操作使用的是哪个用户,安装软件用oracle用户,执行root脚本和配置系统服务用root用户,弄混了会导致权限错误。
  2. 环境变量:环境变量(尤其是ORACLE_HOMEORACLE_SID)是Oracle运行的灵魂,无论是在命令行下操作,还是在服务文件中配置,都必须确保它们设置正确。
  3. 监听器(Listener):数据库网络连接依赖于监听器服务,上面的服务文件主要管理数据库实例,监听器也会被配置成随系统启动,你可以类似地为lsnrctl命令创建一个systemd服务,或者确保dbstart脚本也能正确启动监听器(高版本Oracle通常可以)。
  4. 日志排查:如果服务启动失败,不要慌,首先使用systemctl status oracle-19c -l查看详细的错误信息,更重要的是去查看Oracle的日志文件,它们通常位于$ORACLE_HOME/log目录和$ORACLE_BASE/diag目录下,里面的alert_.log文件是排查启动问题的首要位置。
  5. 备份:在对生产环境进行任何重大变更(如修改服务配置)之前,如果可能,一定要备份你的数据库和关键配置文件。

通过以上这些步骤,你应该能够成功地将Oracle数据库配置为Linux的系统服务,实现开机自动运行,并通过标准的系统命令来管理它,这大大简化了日常的运维工作。

说说怎么把Oracle装成Linux服务,步骤和注意点都讲清楚