su oracle 登录不了,Oracle中su切换进去sqlplus登录失败的问题处理

问题描述:生产环境的oracle数据库突然登录不上去了,rlwrap生产环境的oracle数据库突然登录不上去了,rlwrap sqlplus "/ as sysdba"报错如下:rlwrap

[oracle@localhost root]$ rlwrap sqlplus "/ as sysdba"

rlwrap: warning: your $TERM is 'xterm' but rlwrap couldn't find it in the terminfo database. Expect some problems.

rlwrap: Cannot execute sqlplus: Permission denied

[oracle@localhost root]$ sqlplus "/ as sysdba"

bash: sqlplus: command not found

[oracle@localhost root]$

1,oracle登录报错

[oracle@localhost root]$  rlwrap sqlplus "/ as sysdba"

Error 6 initializing SQL*Plus

SP2-0667: Message file sp1.msb not found

SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

[oracle@localhost root]$

[oracle@localhost root]$

2,查看ORACLE_HOME变量,为空值

[oracle@localhost root]$ echo $ORACLE_HOME

[oracle@localhost root]$

3,在/etc/profile设置ORACLE_HOME变量

[root@localhost ~]# vim /etc/profile

export ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/dbhome_1

[root@localhost ~]# source /etc/profile

[root@localhost ~]# su oracle

[oracle@localhost root]$

[oracle@localhost root]$ echo $ORACLE_HOME

/oracle/app/oracle/product/11.2.0/dbhome_1/

[oracle@localhost root]$

4,ORACLE_HOME环境变量有值了,再去用sqlplus登录一下,试试看

[oracle@localhost root]$ rlwrap sqlplus "/ as sysdba"

rlwrap: warning: your $TERM is 'xterm' but rlwrap couldn't find it in the terminfo database. Expect some problems.

rlwrap: Cannot execute sqlplus: Permission denied

[oracle@localhost root]$

5,做一下sqlplus的软连接

[oracle@localhost root]$ exit

exit

[root@localhost ~]# ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

[root@localhost ~]# su oracle

[oracle@localhost root]$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 16 10:19:39 2015

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

ERROR:

ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

ERROR:

ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

ERROR:

ORA-12162: TNS:net service name is incorrectly specified

SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

[oracle@localhost root]$

[oracle@localhost root]$ echo $ORACLE_SID

[oracle@localhost root]$

系统环境变量里面没有ORACLE_SID

6,设置ORACLE_SID

[oracle@localhost root]$ exit

exit

[root@localhost ~]# vim /etc/profile

export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1/

export ORACLE_SID=pxxerxxs

[root@localhost ~]#  source /etc/profile

[oracle@localhost root]$ exit

exit

[root@localhost ~]# vim /etc/profile

[root@localhost ~]# source /etc/profile

[root@localhost ~]# su oracle

[oracle@localhost root]$ rlwrap sqlplus "/ as sysdba"

rlwrap: warning: your $TERM is 'xterm' but rlwrap couldn't find it in the terminfo database. Expect some problems.

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 16 10:25:33 2015

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

Connected to an idle instance.

SQL>

SQL>

SQL>

7,去oracle用户下查看系统变量

[oracle@localhost root]$ cat ~/.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

#added for oracle

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=pxxerxxs

export TNS_ADMIN=$ORACLE_HOME/network/admin

export PATH=$PATH:$ORACLE_HOME/bin

[oracle@localhost root]$

配置里面有值,问题在哪里?

8,su的时候有差异不加-的话的话只是切换用户 不去更换用户的配置,加上-后 再去sqlplus 试试

[oracle@localhost ~]$ exit

logout

[root@localhost ~]# su oracle

[oracle@localhost root]$ echo $ORACLE_BASE

[oracle@localhost root]$ exit

exit

[root@localhost ~]# su - oracle

[oracle@localhost ~]$ echo $ORACLE_BASE

/oracle/app/oracle

[oracle@localhost ~]$

9,验证下su - oracle

[oracle@localhost ~]$ rlwrap sqlplus "/ as sysdba"

rlwrap: warning: your $TERM is 'xterm' but rlwrap couldn't find it in the terminfo database. Expect some problems.

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 16 10:36:51 2015

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

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining,

Oracle Database Vault and Real Application Testing options

SQL>

10,OK,尝试使用非sys账号登录报错

[oracle@localhost ~]$ rlwrap sqlplus "plas_prd/plrd_1628@pxxerxxs as sysdba"

rlwrap: warning: your $TERM is 'xterm' but rlwrap couldn't find it in the terminfo database. Expect some problems.

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 16 16:53:11 2015

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

ERROR:

ORA-12154: TNS:could not resolve the connect identifier specified

Enter user-name:

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

[oracle@localhost ~]$

11,去check下,tnsping pxxerxxs 能否成功

[oracle@localhost ~]$ tnsping  pxxerxxs

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 16-JAN-2015 16:53:27

Copyright (c) 1997, 2009, Oracle.  All rights reserved.

Used parameter files:

/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora

TNS-03505: Failed to resolve name

[oracle@localhost ~]$

tnsping失败,得知pxxerxxs这个失效

12,去找tnsnames.ora

[oracle@localhost admin]$  more /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

也可以more $ORACLE_HOME/network/admin/tnsnames.ora

找到

MPMD2 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.110.107)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME= pxxerxxs)

)

)

然后用非sys用户登录

[oracle@localhost ~]$ rlwrap sqlplus "pxxerxxsk/pa141215@MPMD2"

rlwrap: warning: your $TERM is 'xterm' but rlwrap couldn't find it in the terminfo database. Expect some problems.

SQL*Plus: Release 11.2.0.1.0 Production on Fri Jan 16 20:30:30 2015

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

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining,

Oracle Database Vault and Real Application Testing options

SQL>

OK登录显示成功。

总结,(1)linux系统里面,su切换到oracle用户的时候,加上-就会更换oracle用户单独配置生效,如果不加-就不会使用oracle用户单独的配置。(2)在使用sqlplus登录的时候,用非sys用户登录,@后面的是$ORACLE_HOME/network/admin/tnsnames.ora定义的那个前缀符号MPMD2,而不是SERVICE_NAME所指的oracle_sid,tnsnames.ora中MPMD2前缀定义如下所示

MPMD2 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.110.101)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME= pxxerxxs)

)

)

----------------------------------------------------------------------------------------------------------------原作者:黄杉 (mchdba)----------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值