温馨提示×

centos上sqlplus版本怎么升级

小樊
36
2025-12-13 13:49:05
栏目: 云计算

在 CentOS 上升级 SQL*Plus 的两种可靠做法

  • 使用 Oracle Instant ClientZIP 包(灵活、多版本并存方便)
  • 使用 Oracle Instant ClientRPM 包(系统化管理,便于升级/回退)

升级前准备

  • 确认系统为 x86_64,并安装基础依赖:libaio(Instant Client 必需)
    • 安装命令:sudo yum install -y libaio
  • 备份现有环境(如有自定义脚本或目录结构,建议先备份)
  • 选择目标版本:高版本客户端通常可连接低版本数据库,但建议与数据库版本匹配或咨询兼容性要求。

方式一 ZIP 包升级步骤

  1. 下载所需包(同一主版本,例如都为 12.221):
    • 基础运行包:instantclient-basic-linux.x64-.zip
    • SQL*Plus 包:instantclient-sqlplus-linux.x64-.zip
    • 说明:19c+glibc 有要求,老系统请选择合适版本。
  2. 解压到统一目录(示例:/usr/local):
    unzip instantclient-basic-linux.x64-<version>.zip -d /usr/local
    unzip instantclient-sqlplus-linux.x64-<version>.zip -d /usr/local
    
  3. 统一目录并准备库目录:
    mv /usr/local/instantclient_<ver> /usr/local/sqlplus_<ver>
    cd /usr/local/sqlplus_<ver>
    mkdir -p lib
    mv *.so* lib/
    chmod +x sqlplus
    
  4. 更新可执行文件软链接(指向新版本):
    ln -sfn /usr/local/sqlplus_<ver>/sqlplus /usr/local/bin/sqlplus
    
  5. 更新动态库路径(写入全局或用户环境,二选一或并存):
    • 全局:echo 'export LD_LIBRARY_PATH=/usr/local/sqlplus_<ver>/lib:$LD_LIBRARY_PATH' | sudo tee /etc/profile.d/instantclient.sh
    • 用户:echo 'export LD_LIBRARY_PATH=/usr/local/sqlplus_<ver>/lib:$LD_LIBRARY_PATH' >> ~/.bash_profile
    • 使生效:source /etc/profile.d/instantclient.shsource ~/.bash_profile
  6. 验证版本:
    sqlplus -v
    sqlplus /nolog
    
  7. 回退方法:将软链接改回旧版本目录即可(例如 ln -sfn /usr/local/sqlplus_<old>/sqlplus /usr/local/bin/sqlplus)。

方式二 RPM 包升级步骤

  1. 下载对应版本的 RPM(同一主版本配套):
    • 基础包:oracle-instantclient-basic-.x86_64.rpm
    • SQL*Plus 包:oracle-instantclient-sqlplus-.x86_64.rpm
  2. 升级安装(会覆盖同主版本旧包):
    sudo rpm -Uvh oracle-instantclient<ver>-basic-<ver>.x86_64.rpm
    sudo rpm -Uvh oracle-instantclient<ver>-sqlplus-<ver>.x86_64.rpm
    
    • 如需先卸载再装:sudo rpm -e oracle-instantclient<ver>-basic-<ver>.x86_64sudo rpm -e oracle-instantclient<ver>-sqlplus-<ver>.x86_64
  3. 设置环境变量(Instant Client 12.2 的典型路径):
    echo 'export ORACLE_HOME=/usr/lib/oracle/<ver>/client64' | sudo tee /etc/profile.d/instantclient.sh
    echo 'export PATH=$ORACLE_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/instantclient.sh
    echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH' | sudo tee -a /etc/profile.d/instantclient.sh
    source /etc/profile.d/instantclient.sh
    
  4. 验证版本:
    sqlplus -v
    sqlplus /nolog
    
  5. 回退方法:使用 rpm -Uvh --oldpackage 安装旧版本 RPM,或 rpm -e 卸载后重装旧包。

验证与常见问题处理

  • 验证命令:
    • 查看客户端版本:sqlplus -v
    • 连接测试:sqlplus /nolog,或 sqlplus user/pass@//host:1521/service
  • 无法启动或找不到库:
    • 检查 echo $LD_LIBRARY_PATH 是否包含新版本的 lib 目录
    • 检查 /usr/local/bin/sqlplus 软链接是否指向新版本
    • 检查库文件权限:chmod +r /usr/local/sqlplus_<ver>/lib/*.so*
  • 兼容性提示:
    • 一般高版本客户端可连低版本数据库,但个别特性或显示可能不同;如出现兼容性问题,考虑与目标库版本匹配的客户端。

0