`

sqlplus: Command not found. if: Expression Syntax. 错误解决方案 .

 
阅读更多

oracle登录时 sqlplus: Command not found. if: Expression Syntax. 错误解决方案

分类: ORACLE11g 650人阅读 评论(0) 收藏 举报

大家要尊重俺的劳动成果,转载请注明出处。本文首发自http://blog.csdn.net/erazy0/archive/2009/11/07/4782368.aspx

俺的百度空间http://hi.baidu.com/erazy0以及俺的ITPUB博客http://space.itpub.net/22666004/spacelist-blog也会同步更新

欢迎共同学习,交流,本人QQ:398467907    邮箱:zhaizhibin@hotmail.com

欢迎交换友情链接~~

===================================华丽的分割线=========================================

 

      果然,事情永远不会一帆风顺,在连续出了N次故障后,今天,俺的 Oracle 11g 终于不甘寂寞,再次的出来“兴风作浪”了。

      今天的问题很简单,我登录进oracle用户以后,键入sqlplus出现如下错误:

 

 


 

[oracle@zzb ~]$ sqlplus
sqlplus: Command not found.


 

试了几次又重新启动都是这样的,于是立刻去百度,出来一大堆,具体有以下两种:

  1. oracle环境变量设置不正确或者PATH设置不正确。
  2. root登陆后应该 su - oracle,而不是直接 su oracle,中间加短线以继承oracle用户的环境变量。

第2种情况不用考虑,我是用secureCRT直接登录的oracle,不存在环境变量没继承的问题。

 

至于第1种情况我记得从没有改过家目录下的 .bash_profile 文件,我 vi  .bash_profile 看了一下没有发现有什么问题:

 


[oracle@zzb ~]$ vi .bash_profile

 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME

ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=zzb
PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

stty erase ^h

#DISPLAY=192.168.0.1:0.0; export DISPLAY

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH
".bash_profile" 28L, 464C written                            
[oracle@zzb ~]$ vi .bash_profile


# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME

ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=zzb
PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

stty erase ^h

#DISPLAY=192.168.0.1:0.0; export DISPLAY

 


 

 

于是我又输入:

 


[oracle@zzb ~]$ env | grep ORA

[oracle@zzb ~]$


 

终于出问题了,oracle的环境变量竟然一个也没出来,难道是启动时出了什么问题?于是我又输入:

 


[oracle@zzb ~]$ source .bash_profile
if: Expression Syntax.


 

 

怪了,竟然出了语法问题。这时我突然想起来了,这几天我在学 Shell ,难道是我昨天切换到其他的 shell 下没有切换回来?似乎只有这样才会报语法问题吧,毕竟不同的 shell 之间语法还是有一些差异的。于是我就:

 

 


[oracle@zzb ~]$ echo $SHELL
/bin/csh

 

 

果然是 shell 的问题。于是我:

 


[oracle@zzb ~]$ exec bash
[oracle@zzb ~]$

[oracle@zzb ~]$ pstree
init─┬─acpid
     ├─anacron
     ├─atd
     ├─crond
     ├─cups-config-dae
     ├─cupsd
     ├─dbus-daemon-1
     ├─events/0
     ├─gpm
     ├─hald
     ├─htt───htt_server
     ├─khelper
     ├─khubd
     ├─kjournald
     ├─klogd
     ├─kseriod
     ├─ksoftirqd/0
     ├─kswapd0
     ├─kthread─┬─aio/0
     │         ├─ata/0
     │         ├─ata_aux
     │         ├─kacpid
     │         ├─kauditd
     │         ├─kblockd/0
     │         └─2*[pdflush]
     ├─migration/0
     ├─6*[mingetty]
     ├─24*[oracle]
     ├─portmap
     ├─rpc.idmapd
     ├─rpc.statd
     ├─scsi_eh_0
     ├─2*[sendmail]
     ├─sshd───sshd───sshd───bash───pstree
     ├─syslogd
     ├─udevd
     ├─vmhgfs
     ├─vmmemctl
     ├─vmware-guestd
     ├─xfs
     └─xinetd

[oracle@zzb ~]$ env|grep ORA
ORACLE_SID=zzb
ORACLE_BASE=/u01
ORACLE_HOME=/u01/oracle
[oracle@zzb ~]$

 


 

 

大家可以看到,现在一切正常了。然后再次输入:

 


[oracle@zzb ~]$ source .bash_profile
[oracle@zzb ~]$

 


 

 

这次没报错,然后我就:

 

 


 

[oracle@zzb ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on Sat Nov 7 12:55:15 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1299624 bytes
Variable Size             226495320 bytes
Database Buffers           79691776 bytes
Redo Buffers                6373376 bytes
Database mounted.
Database opened.
SQL> select * from dual;

D
-
X

 

 


 

可以看到,正常进入了。

最后,秉着好奇心,我又输入:

 

 


[oracle@zzb ~]$ echo $SHELL
/bin/csh


 

额。。。怎么还是 csh,pstree 里显示的明明只有 bash ,没办法,我只能:

 

 


[oracle@zzb ~]$ su -
Password:
[root@zzb ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpm:x:37:37::/var/lib/rpm:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
htt:x:100:103:IIIMF Htt:/usr/lib/im:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin
erazy0:x:500:500:erazy0:/home/erazy0:/bin/bash
oracle:x:501:501::/u01/oracle:/bin/csh  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<注意这行
[root@zzb ~]# vi /etc/passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpm:x:37:37::/var/lib/rpm:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
htt:x:100:103:IIIMF Htt:/usr/lib/im:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin
erazy0:x:500:500:erazy0:/home/erazy0:/bin/bash
oracle:x:501:501::/u01/oracle:/bin/bash
"/etc/passwd" 41L, 1932C written   


 

注意到被我加红的那一行,问题就出在这儿,看来是昨天练习 shell 的时候不小心把oracle用户的登陆shell给改了,现在我再:

 


 [oracle@zzb ~]$ echo $SHELL
/bin/bash

 


 

 

终于好了,至此,我的 sqlplus 不能登录的问题应该算是圆满解决了。

 

PostScripts:贴一段找来的Matlab error "if: Expression Syntax" in tcsh 作为参考

 

Solution:

The "if: Expression Syntax" error can occur if you have the SHELL environment variable set to something different than what is expected. For example, one MATLAB user reported this error and was able to trace it to their use of "tcsh" instead of "csh." Once they explicitly set the SHELL variable in .matlab6rc.sh to "csh" the "if: Expression Syntax" was resolved.

If you are using "csh" or "tcsh", the "if: Expression Syntax" error may also occur as a result of a syntax error in either the .cshrc or .tcshrc files. Please examine the appropriate file for any errors. Alternatively, you can have MATLAB use "sh" by entering the following before starting MATLAB:

setenv MATLAB_SHELL=/bin/sh

Note: The method for setting environment variables depends on which shell you are using.

 

分享到:
评论

相关推荐

    java调用shell脚本执行sqlldr与存储过程

    2、sqlplus: command not found 3、0750: You may need to set ORACLE_HOME to your Oracle software directory 4、Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not ...

    libclntsh.so.11.1

    你是否还在为报错sqlplus: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory而犯愁,不用犯愁了,赶紧下载吧!

    Oracle客户端插件 instantclient-sqlplus-nt-11.2.0.3.0.zip

    instantclient-sqlplus-nt-11.2.0.3.0.zip instantclient-basic-nt-11.2.0.3.0.zip 链接: http://download.csdn.net/detail/lh11077/7727125 免安装客户端

    instantclient-sqlplus-nt-11.2.0.4.0

    2. `sqlplus.exe`:SQL*Plus的可执行文件,允许用户通过命令行输入SQL和PL/SQL。 3. `ocijdbc11.jar`:Java JDBC驱动程序,用于Java应用程序连接Oracle数据库。 4. `network`目录:包含网络配置文件,如`tnsnames....

    instantclient-sqlplus-nt-12.2.0.1.0.zip

    2. sqlplus.exe:SQL*Plus的可执行文件,用于在命令行中执行SQL查询和PL/SQL脚本。 3. 其他支持文件:如ocijdbc12.jar(Java JDBC驱动)、ons.dll(Oracle Notification Services)、tnsnames.ora(网络服务名配置...

    rlwrap-0.42-1.el7.x86_64.rpm

    在Linux下使用sqlplus或者rman时,经常需要调用上次或之前运行过的命令 下载包地址: http://rpm.pbone.net/index.php3/stat/4/idpl/28195042/dir/redhat_el_7/com/rlwrap-0.42-1.el7.x86_64.rpm.html 地址2: ...

    oracle 数据库用户被锁定在linux下操作

    解决“bash: sqlplus: command not found”错误 1.以 root 用户登录 Linux 系统。 2.增加 oracle 的连接文件,命令为:ln -s $ORACLE_HOME/bin/sqlplus /usr/bin。 3.切换到 oracle 用户,命令为:su - oracle。 4....

    SQLPLUS命令.rar

    1. `HELP`:显示SQLPLUS的帮助信息,如`HELP command`显示特定命令的帮助。 2. `\h`:同`HELP`,用于查看帮助。 3. `\p`:打印当前SQL命令。 4. `\q`:快速退出SQLPLUS(等同于`EXIT`)。 5. `\t`:设置每行的最大...

    oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.zip

    oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.ziporacle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.ziporacle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.ziporacle-instantclient11.2-sqlplus...

    远程连接Oracle报ORA-12545错误解决方案

    NULL 博文链接:https://ajita.iteye.com/blog/1725304

    PyPI 官网下载 | sqlplus-0.1.5.tar.gz

    《PyPI上的Python库——sqlplus-0.1.5.tar.gz详解》 在Python的世界里,PyPI(Python Package Index)是最重要的软件仓库,它为开发者提供了丰富的Python库资源。今天我们要关注的是一个名为“sqlplus”的Python库...

    instantclient-sqlplus-linux-11.2.0.3.0.zip

    4. **批处理和错误处理**:使用`WHENEVER OSERROR`和`WHENEVER SQLERROR`可以控制错误时的行为。 通过以上步骤,你已经在Linux环境中成功配置并使用了Oracle Instant Client与SQL*Plus。这使得你能够在没有完整...

    Oracle 插件 instantclient-sqlplus-windows.x64-12.2.0.1.0.zip

    "instantclient-sqlplus-windows.x64-12.2.0.1.0.zip"文件是针对Windows 64位系统的Oracle Instant Client SQL*Plus版本,版本号为12.2.0.1.0。 **Oracle Instant Client的主要功能:** 1. **数据库连接**:提供了...

    e16608-SQLPlus Release Notes Release 11.2.0.4-4.pdf

    虽然具体在11.2.0.4版本中修复了哪些bug未在提供的信息中详细列出,但可以预期这个版本会解决一些性能、稳定性和安全性问题。 5. **支持和服务**: Oracle客户可以通过My Oracle Support获得电子支持。更多信息,...

    instantclient-sqlplus-linux.x64-11.2.0.4.0

    《Oracle客户端:深入理解instantclient-sqlplus-linux.x64-11.2.0.4.0》 Oracle数据库是全球广泛使用的大型关系型数据库系统之一,为满足远程访问和本地开发的需求,Oracle提供了轻量级的客户端工具——Instant ...

    SQLPLUS命令的使用大全.txt

    EXIT WHEN c%NOTFOUND; DBMS_OUTPUT.PUT_LINE(empRec.first_name || ' ' || empRec.last_name); END LOOP; CLOSE c; END; / ``` 8. **错误处理** 使用`BEGIN...EXCEPTION...END`块来处理PL/SQL中的异常,...

    ORACLE笔记(数据库)

    从开始程序运行:sqlplus,是图形版的sqlplus. 3. http://localhost:5560/isqlplus Toad:管理, PlSql Developer: 第二课:更改用户 1. sqlplus sys/bjsxt as sysdba 2. alter user scott account unlock;...

    sqlplus集成工具包12.zip

    SQLPlus是Oracle数据库管理系统中的一个命令行工具,用于执行SQL语句、PL/SQL块以及管理数据库。在“sqlplus集成工具包12.zip”中,我们预设这是一个包含SQLPlus基本版本及其相关实用工具的集合,适用于Oracle数据库...

    instantclient-sqlplus-windows.x64-19.6.0.0.0dbru.zip

    Oracle Instant Client提供了轻量级的解决方案,减少了对系统资源的需求。在19.6.0.0.0版本中,它包含了许多性能优化和新特性,确保与较新版本的Oracle数据库兼容。 安装和配置步骤如下: 1. 下载并解压压缩包到一...

    instantclient-sqlplus-win32-10.2.0.4.zip

    Instant Client 包含了数据库连接所需的库文件和其他必要的组件,如oci.dll、sqlplus.exe等,这使得开发者和DBA可以在不安装完整客户端的情况下,快速地在本地进行数据库操作。 二、SQL*Plus SQL*Plus是Oracle...

Global site tag (gtag.js) - Google Analytics