温馨提示×

如何在 Ubuntu 上部署 Oracle 应用

小樊
38
2025-12-06 21:22:06
栏目: 云计算

在 Ubuntu 上部署 Oracle 应用的可行路径

  • 常见做法有三类:
    1. 在 Ubuntu 上原生安装 Oracle Database(如 19c/12c)
    2. 使用 Docker 运行 Oracle 数据库镜像(快速、可移植);
    3. 仅部署 Oracle 客户端/Instant Client 用于连接远程数据库。
      本文以数据库为主,并给出客户端连接与自启动要点,便于应用部署与连接。

方案一 原生安装 Oracle Database 19c

  • 准备系统与用户
    • 更新系统并安装依赖:sudo apt update && sudo apt install -y gcc make binutils libaio1 unixodbc alien
    • 创建用户与组:sudo groupadd oinstall;sudo groupadd dba;sudo useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle;sudo passwd oracle
  • 目录与环境
    • 创建目录:sudo mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1;sudo chown -R oracle:oinstall /u01/app/oracle;sudo chmod -R 775 /u01/app/oracle
    • 配置环境变量(oracle 用户):
      export ORACLE_BASE=/u01/app/oracle
      export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
      export ORACLE_SID=orcl
      export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
      export PATH=$ORACLE_HOME/bin:$PATH
      执行:source ~/.bashrc
  • 内核与资源限制(示例值,按实际内存调整)
    • /etc/sysctl.conf:fs.file-max=6815744;kernel.shmmax=4398046511104;kernel.shmall=1073741824;kernel.sem=250 32000 100 128;执行 sysctl -p
    • /etc/security/limits.conf:oracle soft nproc 16384;oracle hard nproc 16384;oracle soft nofile 65536;oracle hard nofile 65536
  • 安装与建库
    • 以 oracle 用户解压安装介质并运行:unzip /path/to/LINUX.X64_193000_db_home.zip -d /u01/app/oracle;cd /u01/app/oracle/database;./runInstaller(图形界面或静默模式)
    • 或使用 DBCA 建库;亦可用 SQL*Plus 手工建库(示例):
      sqlplus / as sysdba
      CREATE DATABASE orcl
      USER sys IDENTIFIED BY
      USER system IDENTIFIED BY
      CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16
      EXTENT MANAGEMENT LOCAL
      DATAFILE ‘/u01/app/oracle/oradata/orcl/system01.dbf’ SIZE 700M REUSE
      SYSAUX DATAFILE ‘/u01/app/oracle/oradata/orcl/sysaux01.dbf’ SIZE 500M REUSE
      DEFAULT TABLESPACE users DATAFILE ‘/u01/app/oracle/oradata/orcl/users01.dbf’ SIZE 500M REUSE
      DEFAULT TEMPORARY TABLESPACE temp TEMPFILE ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ SIZE 20M REUSE
      UNDO TABLESPACE undotbs DATAFILE ‘/u01/app/oracle/oradata/orcl/undotbs01.dbf’ SIZE 200M REUSE;
  • 启动与监听
    • lsnrctl start;sqlplus / as sysdba;startup
  • 客户端连接串示例(tnsnames.ora)
    • ORADBSID = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <db_host>)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)))
      以上步骤覆盖环境准备、目录权限、内核参数、安装与建库、监听与连接等关键环节。

方案二 使用 Docker 运行 Oracle 数据库

  • 安装 Docker:sudo apt-get update && sudo apt-get install -y docker.io && sudo systemctl enable --now docker
  • 拉取并运行镜像(示例:企业版 12.2.0.1)
    • docker pull store/oracle/database-enterprise:12.2.0.1
    • docker run -d --name oracle-db -p 1521:1521 -p 5500:5500 store/oracle/database-enterprise:12.2.0.1
  • 进入容器并修改默认口令
    • docker exec -it oracle-db bash
    • source /home/oracle/.profile(或相应 profile 文件)
    • sqlplus / as sysdba;alter user system identified by <new_pwd>;
  • 连接与应用
    • 应用连接串:jdbc:oracle:thin:@//:1521/<service_name>;Service 名称与镜像说明一致(如 ORCL)
  • 其他镜像与版本
    • 也可使用社区镜像(如 11g XE)快速体验:docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g,启动方式与上述类似。
      Docker 方式部署快速、隔离性好,适合开发测试与演示环境。

方案三 仅部署 Oracle Instant Client 用于应用连接

  • 适用场景:应用服务器只需连接远程 Oracle,不在本机安装数据库。
  • 安装与配置
    • 安装 Instant Client 基础包与 SDK/SQL*Plus(.deb 或 .rpm,按仓库选择):sudo apt-get install -y oracle-instantclient-basic oracle-instantclient-sqlplus(或 alien 转换 .rpm)
    • 配置库路径:echo /usr/lib/oracle//client64/lib | sudo tee /etc/ld.so.conf.d/oracle-instantclient.conf && sudo ldconfig
    • 配置环境变量:export ORACLE_HOME=/usr/lib/oracle//client64;export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH;export PATH=$ORACLE_HOME/bin:$PATH
    • 配置 tnsnames.ora(如 /usr/lib/oracle//client64/network/admin/tnsnames.ora)后使用 sqlplus user/pass@tns_alias 连接
  • 说明
    • Instant Client 提供 OCI/ODBC/JDBC 驱动所需库与工具,不包含数据库实例。
      该方案轻量、依赖少,适合微服务、应用服务器与 CI 环境。

连接与运维要点

  • 监听与实例
    • 启动监听:lsnrctl start;查看状态:lsnrctl status
    • 启动实例:sqlplus / as sysdba;startup
  • 常见报错速查
    • command not found:检查 PATH 是否包含 $ORACLE_HOME/bin
    • ORA-12541 TNS:no listener:未启动监听,执行 lsnrctl start
    • 动态库加载错误:检查 LD_LIBRARY_PATH 是否包含 $ORACLE_HOME/lib
  • 开机自启(原生安装)
    • 在 /etc/oratab 将实例设为 Y:orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
    • 创建 systemd 服务(/etc/systemd/system/oracle.service):
      [Unit] Description=Oracle Auto Start Service;After=network.target
      [Service] Type=simple;User=oracle;Group=oinstall;ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart;ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut;Restart=on-failure;RestartSec=30s
      [Install] WantedBy=multi-user.target
      启用:sudo systemctl daemon-reload && sudo systemctl enable --now oracle.service
      以上要点可快速定位连接与自启动问题,提升运维效率。

0