Oracle用户密码含有特殊字符导致无法登陆解决方法

今天碰到一个比较奇怪的问题:
在客户端上使用sqlplus用普通用户可以登录,但是system以及sys用户均无法登录,提示ORA-12154: TNS: 无法解析指定的连接标识符
SQL> conn system@webdata
输入口令:
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
SQL> conn xgplat@webdata
输入口令:
已连接。
本来以为客户端是32位的缘故,就在oracle服务器上用sqlplus登录,也还是一样
SQL> conn system@webdata
Enter password:
ERROR:
ORA-12541: TNS:no listener
SQL> conn xgplat@webdata
Enter password:
Connected.
问了一些人大家都比较迷糊,搞不清什么问题。偶然看到有人说是不是和密码文件有关,这时我才想到我的system/sys用户的密码中都包含一个@字符。
比如我的密码是123@456,那使用sqlplus登录的时候就理解成sqlplus system/123@456@webdata,这样sqlplus就理解成123后面的就是数据库的连接字符串,这样自然就报错并提示TNS: 无法解析指定的连接标识符或no listener
之后在服务器上用sqlplus / as sysdba登录后修改sys/system的密码,再次尝试就一切正常了

当Oracle数据库用户的密码含特殊字符如 @ 时,直接使用正常的密码输入,由于oracle将@后的字符解析为网络服务名而导致登陆失败
如下演示 用户名为:wang密码为:oracle@1网络服务名为:sun 的情况:

Linux平台:'wang/"oracle@1"'@sun --1个双引号扩密码,1个单引号扩 用户名+密码,即: '用户名/"密码"'@服务名
[11:41:14oracle@dvd adump]$sqlplus wang/oracle@1@sun
SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 30 11:41:24 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-12532: TNS:invalid argument
[11:42:24oracle@dvd adump]$sqlplus 'wang/"oracle@1"'@sun --1个双引号扩密码,1个单引号扩 用户名+密码,即: '用户名/"密码"'@服务名
SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 30 11:42:25 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the OLAP and Data Mining options
wang@SUN>

Windows 平台:wang/"""oracle@1"""@sun--3个双引号扩密码,即: 用户名/"""密码"""@服务名
C:\Users\wanglei.ITADMIN>sqlplus wang/oracle@1@sun
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 10月 30 13:20:00 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
请输入用户名:
C:\Users\wanglei.ITADMIN>sqlplus wang/"""oracle@1"""@sun--3个双引号扩密码,即: 用户名/"""密码"""@服务名
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 10月 30 13:20:30 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the OLAP and Data Mining options

(0)

相关推荐

  • Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法

    添加用户(随着用户的创建,自动产生与用户同名的schema) CREATE USER "TESTER" PROFILE "DEFAULT" IDENTIFIED BY "TESTER" DEFAULT TABLESPACE "TESTDATA" TEMPORARY TABLESPACE "TESTTEMP" ACCOUNT UNLOCK; 赋权(说实话,这些权限是开发中使用的权限,如果用户生产环境,请自行对

  • oracle 重置sys密码的方法介绍

    如何重置oracle 10g SYS 的密码 安装完oracle 10g后,竟然将安装时设置的系统密码忘记.在同事的帮助下通过一下方法解决. 1.oracle的密码文件存在于:oracle_home/database/pwd<sid>.ora 2.使用orapwd 重置SYS密码 C:oracleproduct10.2.0db_1database>orapwd Usage: orapwd file=<fname> password=<password> entri

  • Oracle用户密码设为不过期的两种方法

    1.在SQL Plus下,以DBA身份登陆 用户名/密码@服务器SID as sysdba 方法一:(注意必须用双引号把后面的引上) C:/Documents and Settings/ssy>sqlplus sys/system@test as sysdba SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 3月 17 18:01:41 2008 Copyright (c) 1982, 2002, Oracle Corporation. All r

  • oracle密码过期的彻底解决方案

    越是赶时间,越耽误事,测试环境oracle密码过期. 不多说,解决:设置成永不过期(SIT环境). 1.以sys用户登录管理数据库:查询语句如下,未格式化查询语句.. select * from dba_profiles where profile = 'DEFAULT' and resource_name = 'PASSWORD_LIFE_TIME'; 2.修改有效期,提交. alter profile default limit password_life_time unlimited; c

  • Oracle数据库用户的密码过期时间如何修改为永不过期

    Oracle的密码过期规则是用Profile来管理的,系统默认只有一个Profile(DEFAULT),该profile的密码过期规则为180天: 而所有的用户都使用该DEFAULT的profile,所以如果修改DEFAULT的过期规则会影响所有的用户: 所以我们新建一个profile,修改该profile的过期规则为无限期,在让某个用户适用于该profile,则该用户的过期规则会变更. 以下举例:修改MESSERIES用户的密码过期规则为UNLIMITED 1.     新建profile "

  • ORA-28002 Oracle 11g存在密码过期问题解决方案

    故障现象 Oracle Database 11g 数据库普通用户登录时提示 ORA-28002: the password will expire within 7 days [11:01:00oracle@dvd db_1]$sqlplus wang/oracle SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 16 11:01:23 2012 Copyright (c) 1982, 2009, Oracle. All rights res

  • Oracle 11g中密码过期问题详解

    密码过期的原因一般有两种可能: 一.由于Oracle中默认在default概要文件中设置了"PASSWORD_LIFE_TIME=180天"所导致. 二.由于Oracle中默认在default概要文件中设置了"FAILED_LOGIN_ATTEMPTS=10次",当输入密码错误次数达到设置值将导致此问题. 第一种情况解决方法如下: 1.查看用户用的哪种profile策略,一般是default: 复制代码 代码如下: SQL> select username,p

  • Oracle 11G密码180天过期后的修改方法

    由于Oracle11G的新特性所致,经常会遇到使用sqlplus登陆oracle数据库时提示"ORA-28002: 7 天之后口令将过期"等情况. 在Oracle 11G 创建用户时缺省密码过期限制是180天, 如果超过180天用户密码未做修改则该用户无法登录,提示"ORA-28001: the password has expired" 密码过期后,业务进程连接数据库异常,必然会影响使用与登录. 解放方法: ****************************

  • 修改oracle数据库用户名及密码的方法

    改oracle数据库用户名称和密码(Linux为例),有需要的朋友可以参考下. 一.修改前准备工作: 使用ssh工具以root身份连接服务器, 然后切换到oracle用户:su - oracle(回车) 使用sqlplus连接数据库:sqlplus /nolog(回车) 以管理员身份登录sys用户:conn sys/sys as sysdba(回车) 数据库连接成功,至此准备工作完成. 二.修改用户名称. 数据库连接成功后,在SQL>提示后面继续输入: 首先查到到所需修改用户名称的用户需要:se

  • Oracle的默认用户密码

    1.安装时选择的自动安装,忘了用户名和密码导致现在试了几个Oracle默认用户名密码後(表格中附带默认用户名及密码),都提示无效的用户名.密码, Username Password Description See Also CTXSYS CTXSYS The Oracle Text account Oracle Text Reference DBSNMP DBSNMP The account used by the Management Agent component of Oracle Ent

随机推荐