如何安装SqlPlus?

我尝试按照这里的说明安装 sqlplus,但仍然出现以下问题:

sqlplus: command not found

当我从终端执行sqlplus时。 我是一个Ubuntu的新手,我使用的是Ubuntu 12.04。

我认为你需要使用sudo来运行alien -i命令:sudo alien -i - Savvas Radevic
5个回答

首先,您需要下载即时客户端下载。安装外星人软件包,这样您就可以通过在终端中输入以下命令来安装rpm软件包。
sudo apt-get install alien

一旦完成,前往存放rpm文件的文件夹并执行以下操作:
sudo alien -i oracle-instantclient*-basic*.rpm
sudo alien -i oracle-instantclient*-sqlplus*.rpm
sudo alien -i oracle-instantclient*-devel*.rpm

你需要安装 libaio.so。输入以下命令来执行安装:
sudo apt-get install libaio1

创建Oracle配置文件:
sudo sensible-editor /etc/ld.so.conf.d/oracle.conf

把这行放到那个文件里:
/usr/lib/oracle/<your version>/client/lib/ 

注意 - 对于64位安装,路径将是:
/usr/lib/oracle/<your version>/client64/lib/ 

运行以下命令来更新配置:
sudo ldconfig

尝试使用以下方式进行连接:
sqlplus username/password@//dbhost:1521/SID

或者:

sqlplus testuser/password

请注意,如果您安装的是64位版本,则客户端被称为sqlplus64

谢谢提供的详细信息。这帮助我完成了安装,特别是关于安装 lib(库)的部分。 - lonstar
1直到我尝试运行sqlplus testuser/password时,出现了"sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory"的错误信息。 - lonstar
4...而且这是因为我刚刚触碰了oracle.conf文件,结果发现你需要在其中添加以下内容:/usr/lib/oracle/11.2/client/lib/(确保你实际上拥有该路径,并感谢http://marcelozambranav.blogspot.com/2012/08/how-to-install-oracle-sql-plus-on.html)。一旦我做到了这一点,一切都很顺利。 - lonstar
4@K .K Patel,我按照您的指示操作,在命令行中输入了sqlplus,但是它提示我输入用户名和密码。而我不知道用户名和密码是什么。请问我该怎么办? - Sabyasachi
他们有oracle-instantclient* basic,devel,jdbc,odbc,sqlplus,tools,basiclite。我能不能只安装sqlplus就行了? - masterxilo
这仍然是一样的...这是Oracle的一个特质之一... - U.V.

外星人的东西没能成功,因为出现了以下问题:
错误:无法使用db5打开Name索引 - 权限被拒绝(13)
幸运的是,有一个更本地化的解决方案:
Oracle下载zip文件,你需要以下内容:
- 基本包(ZIP)(或基本轻量级包(ZIP)) - SQL*Plus包(ZIP)
将这些存档解压到同一个根文件夹中。将该文件夹放在程序文件所在的位置(例如/usr/share或$HOME/bin)。
然后创建一个脚本,在设置LD_LIBRARY_PATH变量后运行可执行文件,以便找到库文件。
#!/bin/bash
CLIENTDIR=/usr/share/instantclient_12_2 # <------- adjust this to the path you use
export LD_LIBRARY_PATH="$CLIENTDIR"
"$CLIENTDIR"/sqlplus "$@"

把它叫做 "sqlplus",使其可执行(chmod 755 sqlplus),并将其放入您的 PATH 目录中(例如 /usr/bin/),这样 bash 就能找到它。
就是这样,现在您可以像这样运行 sqlplus:
sqlplus user/password@host:port/service

如果出现以下错误信息:
``` error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory ```
您需要使用以下命令安装缺失的库文件:`sudo apt-get install libaio1`。

我觉得这个链接会有帮助。它非常详细描述了步骤。确保你按照所有的步骤进行操作。如果你遇到任何问题,不要犹豫留下评论。

7虽然这个回答在理论上可能是正确的,但最好还是在这里包含回答的关键部分,并提供链接作为参考。 - Eliah Kagan
我所做的那一切... 但似乎没有起作用! - Ant's
我找到了这个帖子http://www.unix.com/ubuntu/157848-sqlplus-command-not-found.html。试试看这个能否对你有所帮助。我没有足够快的网络速度来下载它,否则我会亲自尝试并给出更好的解决方案。 - Vinit Kumar
1@Ant的“它不起作用”并没有给我们提供线索。展示每个命令的输出,然后我们就能对发生了什么以及问题出在哪里有一个大致的了解。 - Savvas Radevic

只是作为对@Ketan Patel出色回答的补充:
这个简单的脚本,与下载的rpm文件放在一起,自动化了进一步安装的过程:
#!/usr/bin/env sh
# https://askubuntu.com/a/207145/585248

CURRDIR="$(pwd)";
cd $(dirname "${0}");

# Tools and dependencies:
sudo apt-get update
sudo apt-get install alien libaio1

# Oracle Packages:
echo "Installing instantclient-basic..."
sudo alien -i oracle-instantclient*-basic*.rpm
echo "Installing instantclient-sqlplus..."
sudo alien -i oracle-instantclient*-sqlplus*.rpm
echo "Installing instantclient-devel..."
sudo alien -i oracle-instantclient*-devel*.rpm

echo "Configuring LD path..."
# LD config:
echo /usr/lib/oracle/*/client64/lib \
    | sort -V \
    | tail -n 1 \
    | sudo tee /etc/ld.so.conf.d/oracle.conf \
;
sudo ldconfig

cd "${CURRDIR}"
echo "DONE!!";

注意:它安装的是libaio1,这是Ubuntu中libaio的名称(我认为Debian也是如此)。其他发行版可能需要将此软件包名称调整为“libaio”或相应的软件包名称。
编辑:这是一个增强版本,具有readline换行功能(感谢this post)。
#!/usr/bin/env sh
# https://askubuntu.com/a/207145/585248

CURRDIR="$(pwd)";
cd $(dirname "${0}");

# Tools and dependencies:
sudo apt-get update
sudo apt-get install alien libaio1 rlwrap

# Oracle Packages:
echo "Installing instantclient-basic..."
sudo alien -i oracle-instantclient*-basic*.rpm
echo "Installing instantclient-sqlplus..."
sudo alien -i oracle-instantclient*-sqlplus*.rpm
echo "Installing instantclient-devel..."
sudo alien -i oracle-instantclient*-devel*.rpm

# LD config:
echo "Configuring LD path..."
echo /usr/lib/oracle/*/client64/lib \
    | sort -V \
    | tail -n 1 \
    | sudo tee /etc/ld.so.conf.d/oracle.conf \
;
sudo ldconfig

# Readline wrapping:
echo "Configuring readline wrapping..."
echo "WARNING: You need to manually execute this command or re-read /etc/profile"
echo "if you want readline wrapped 'sqlplus' alias to work in current session".
(cat | sudo tee /etc/profile.d/sqlplus_rlwrap.sh) <<!EOF
alias sqlplus="rlwrap -i -f ~/.sqlplus_history -H ~/.sqlplus_history -s 30000 sqlplus64"
!EOF
touch ~/.sqlplus_history

cd "${CURRDIR}"
echo "DONE!!";

还是Oracle,但至少让痛苦变得稍微能忍受一点...

当然,正确的安装方式是使用官方软件包(如上所述下载即时客户端),但你可以通过复制这些文件(你可以在任何已安装Oracle客户端的计算机上找到它)来获得一个完整可用的sqlplus,并且一些msb文件是可选的。
./sqlplus
./sqlplus/mesg
./sqlplus/mesg/sp1zhs.msb
./sqlplus/mesg/sp2zhs.msb
./sqlplus/mesg/sp2ptb.msb
./sqlplus/mesg/sp2us.msb
./sqlplus/mesg/sp1us.msb
./sqlplus/mesg/sp1ptb.msb
./sqlplus/mesg/cpyja.msb
./sqlplus/mesg/sp1ja.msb
./sqlplus/mesg/cpyus.msb
./sqlplus/mesg/cpyzhs.msb
./sqlplus/mesg/cpyptb.msb
./sqlplus/mesg/sp2ja.msb
./sqlplus/sqlplus
./README
./lib
./lib/libaio.so.1
./lib/libclntsh.so.11.1
./lib/libsqlplus.so
./lib/libnnz11.so
./lib/libociei.so

作为额外的依赖项,我已经包含了libaio.so - 可以使用sudo apt-get install libaio1进行安装。
所以,一个示例用法可以是:
cd <PATH_OF_FILES>
ORACLE_HOME=$PWD LD_LIBRARY_PATH=$PWD/lib ./sqlplus/sqlplus user/pw@server:PORT/

  • 相关问题