Oracle中su切换进去sqlplus登录失败的问题处理
来源:互联网 发布:php电影播放器源码 编辑:程序博客网 时间:2024/06/07 14:50
问题描述:
生产环境的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<lang>.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)
)
)
----------------------------------------------------------------------------------------------------------------
<版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址: http://blog.itpub.net/26230597/viewspace-1404602/
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------
3 0
- Oracle中su切换进去sqlplus登录失败的问题处理
- Oracle中采用sqlplus登录
- su - 切换用户的问题
- 解决ubunto虚拟机中su认证失败的问题
- sqlplus/ as sysdba 能直接登录oracle数据库的问题
- oracle 通过sqlplus登录以及用户登录切换
- oracle中 用sqlplus登录的几种方式
- oracle 11g-sqlplus登录密码问题
- oracle 11g-sqlplus登录密码问题
- oracle 10g sqlplus 登录问题
- sudo su身份切换失败
- su 认证失败问题
- Oracle sqlplus登录的三种方式
- 【Oracle】用sqlplus登录的各种方式
- sqlplus登录Oracle数据库
- oracle sqlplus 命令行 登录
- Oracle sqlplus登录
- oracle sqlplus登录缓慢
- SEO优化示例程序
- HDU 1520 Anniversary party (树形DP)
- 二分查找之天平称重,称出最重的小球
- 16.为什么标准头文件都有类似以下的结构?
- CentOS额外软件库
- Oracle中su切换进去sqlplus登录失败的问题处理
- SSZipArchive使用详解
- 感知机——R实现
- 字符串比较函数
- Android调用WCF
- unity之NPC对话
- C++命名规则
- C++ Primer 笔记+习题解答(一)
- 《数学分析》即《实变函数论》笔记(序)