[root@db1 ~]# export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1/ [root@db1 ~]# export ORACLE_SID=zddb1 [root@db1 ~]# sqlplus -bash: sqlplus: command not found [root@db1 ~]# /u01/app/oracle/product/10.2.0/db_1/bin/sqlplus "/ as sysdba" SQL*Plus: Release 10.2.0.4.0 - Production on Fri May 29 09:58:12 2009 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. ERROR: ORA-01031: insufficient privilegesEnter user-name: ERROR: ORA-01017: invalid username/password; logon denied //root用户连接结果正常
[root@db1 ~]# su - oracle [oracle@db1 ~]$ export ORACLE_SID=zddb1 [oracle@db1 ~]$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1/ [oracle@db1 ~]$ /u01/app/oracle/product/10.2.0/db_1/bin/sqlplus "/ as sysdba" SQL*Plus: Release 10.2.0.4.0 - Production on Fri May 29 09:59:03 2009 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to an idle instance. SQL> //Oracle用户连接结果异常 问题分析: 在Oracle数据库系统中,用户如果要以特权用户身份(SYSDBA/SYSOPER)登录Oracle数据库可以有两种身份验证的方法: 即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件进行身份验证。因root用户因不在dba组,显示权限不足,结果是正常的,但Oracle用户应该可以使用sysdba的身份登陆到数据库中,但却显示:“Connected to an idle instance. ” ,即不能登陆到数据库中。但从操作系统中查看,使用网络连接方式,却可以连接。排除了tnsnames.ora配置错误,问题比较奇怪。 通过网友的提醒发现环境变量设置出现问题[oracle@db1 ~]$ cat .bash_profile # .bash_profile# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi# User specific environment and startup programsPATH=$PATH:$HOME/bin export ORACLE_BASE=/u01/app/oracle/ export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1 export ORACLE_SID=zddb1export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$PATH:$HOME/bin处理过程和结果: 在ORACLE_BASE环境变量后面多了"/",会不会是此问题引起?重新设置此变量为“export ORACLE_BASE=/u01/app/oracle”,删除了“/”,登陆数据库,连接正常。