升级 Debian 上的 sqlplus 的正确做法
一 升级思路与环境检查
sqlplus -vldd $(which sqlplus) | grep libsqlplus.soreadlink -f /usr/lib/oracle/*/client*/lib/libsqlplus.so二 升级步骤
方案A 使用 RPM 包并转换为 DEB(适合保持系统包管理)
sudo apt-get update && sudo apt-get install -y alien libaio1alien -d oracle-instantclient21.1-basic-21.1.0.0.0-1.x86_64.rpm
alien -d oracle-instantclient21.1-sqlplus-21.1.0.0.0-1.x86_64.rpm
sudo dpkg -i oracle-instantclient21.1-basic_21.1.0.0.0-2_amd64.deb
sudo dpkg -i oracle-instantclient21.1-sqlplus_21.1.0.0.0-2_amd64.deb
echo 'export ORACLE_HOME=/usr/lib/oracle/21.1/client64' | sudo tee -a /etc/profile.d/oracle.sh
echo 'export PATH=$ORACLE_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/oracle.sh
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH' | sudo tee -a /etc/profile.d/oracle.sh
source /etc/profile.d/oracle.sh
sudo apt --fix-broken install,再重试安装。方案B 使用 ZIP 包(最直观、便于多版本并存)
unzip instantclient-basic-linux.x64-23.5.0.0.0.zip -d /opt/oracle
unzip instantclient-sqlplus-linux.x64-23.5.0.0.0.zip -d /opt/oracle
sudo ln -sfn /opt/oracle/instantclient_23_5 /opt/oracle/instantclient
cd /opt/oracle/instantclient
sudo mkdir -p lib
sudo ln -s ../lib* lib/
sudo ln -sfn /opt/oracle/instantclient/sqlplus /usr/local/bin/sqlplus
echo 'export ORACLE_HOME=/opt/oracle/instantclient' | sudo tee -a /etc/profile.d/oracle.sh
echo 'export PATH=$ORACLE_HOME:$PATH' | sudo tee -a /etc/profile.d/oracle.sh
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH' | sudo tee -a /etc/profile.d/oracle.sh
source /etc/profile.d/oracle.sh
ORACLE_HOME 与 /usr/local/bin/sqlplus 的符号链接即可。三 验证与常见问题
sqlplus -vsqlplus user/password@//host:1521/serviceLD_LIBRARY_PATH 是否包含新版本的 lib 目录;确认库文件可读;必要时 sudo ldconfig。sudo apt-get install -y libaio1 libaio-dev。source /etc/profile.d/oracle.sh 或重新登录;使用 which sqlplus 与 ldd 复核路径是否指向新版本。sudo apt --fix-broken install、sudo apt update、sudo dpkg --configure -a 后再安装。