--现在遇到个问题,sysdba远程登录问题
--sysdba用户无法远程登录Oracle服务器,报用户口令无效,而实质我用户口令是正确的,本地服务器端能正常登陆
--如下:1、本地服务器端:Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\Administrator>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 6月 8 11:15:00 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.SQL> conn scott/tiger                --普通用户能连接
已连接。
SQL> conn sys/lhy as sysdba          --sysdba用户也能连接
已连接。
SQL>
2、远端连接Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\513826198611162217.XQ>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 6月 8 11:26:11 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.SQL> conn scott/tiger@impxepor             --普通用户能连接
已连接。
SQL> conn sys/lhy@impxepor as sysdba       --sysdba用户无法连接
ERROR:
ORA-01017: 用户名/口令无效; 登录被拒绝
警告: 您不再连接到 ORACLE。
SQL>--找了哈,没找到原因
--我本地服务器端一些参数配置如下:
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 6月 8 11:35:38 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到: 
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsSQL> show user
USER 为 "SYS"
SQL> show parameter remote_login_passwordfileNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      EXCLUSIVE
SQL> select * from v$pwfile_users;USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUESQL> 
--sqlnet.ora文件中的 SQLNET.AUTHENTICATION_SERVICES= (NTS)
--大家看看哪里的原因,我尝试过重新配置密码文件然后重启server,但是还是不行

解决方案 »

  1.   

    sqlnet.ora文件中的 SQLNET.AUTHENTICATION_SERVICES= (NTS)查查这个的意思,这里面设置比较绕,可能不允许远程连接
      

  2.   

    不行,下午我重装了Oracle,也检查了DBA组,仍然还是不行,迷茫
      

  3.   

    确实没遇到过,
    已经重新安装过了,说明跟oracle本身无关。
    可能跟机器的其它配置有关系。
      

  4.   

    重装是否通过
    卸载,清除注册表,删除文件夹彻底删除?
    并且没有其它版本的oracle?
      

  5.   

    找DBA来看了下,DBA怀疑我可能还有另外的一个库,连到另外的库去了,但是我只装了一个Oracle,而且配置TNS里也是指明了唯一的SID
    她也还在研究中。
      

  6.   


    重装是通过
    卸载,清除注册表,删除文件夹彻底,也没装过其它版本的
    这些我都敢确定。还有就是我用Net Configuration Assistant去测试,爆同样的口令无效,换个普通用户能测试通过,不知道是哪里NET配置有问题
      

  7.   

    呵呵~~DBA女侠? 解决了不要忘了分享一下。
      

  8.   

    这个问题确实木有遇到过,但感觉与oracle没多大关系,望解决后分享…
      

  9.   

    老兄
    SQLNET.AUTHENTICATION_SERVICES= (NTS)
    这一行要删除或者前面加#号注释掉
      

  10.   

    印象是在安装Oracle 数据库的时候,有一个EXCLUSIVE的模式吧,会拒绝所有非本地的sysdba访问,可以查查看
      

  11.   

    有一个EXCLUSIVE的模式????????
      

  12.   

    SQL> conn sys/lhy as sysdba          --sysdba用户也能连接
    已连接。
    --本地服务端是可以不用输入密码的,也就是说随便输入什么密码都可以登录。因此这里并不能说明你的SYS用户密码就是lhy--建议在服务器端使用sysdba角色登录之后修改SYS用户的密码再重试一下。确认SYS用户的密码输入正确。
      

  13.   

    http://wenku.baidu.com/view/0b845c51ad02de80d4d840ca.html看看这个。。关于ORACLE的密码认证问题
      

  14.   

    sqlnet.authentication_services=(NTS),在$ORACLE_HOME\network\admin\sqlnet.ora中NTS特指的是windows系统,或者设为all,这两种情况都允许操作系统认证。如果在unix下如果没有设置sqlnet.authentication_services,默认就是操作系统认证!或者设为all也允许操作系统认证。
    参数SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)表明用户连接Oracle服务器时使用哪种验证方式
    NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用。
     
    数据库用sysdba登录的验证有两种方式,一种是通过os认证,一种是通过密码文件验证;登录方式有两种,一种是在数据库主机直接登录(用os认证的方式),一种是通过网络远程登录;需要设置的参数有两个,一个是SQLNET.AUTHENTICATION_SERVICES,一个是REMOTE_LOGIN_PASSWORDFILE。 os认证:如果启用了os认证,以sysdba登录,那么我们只要用oracle软件的安装用户就能登录:sqlplus “/ as sysdba”。如果我们要禁用os认证,只利用密码文件登录,我们首先要有一个密码文件: 
    orapwd file=C:\oracle\product\10.2.0\db_1\database\PWDoralocal.ora password=maximo entries=10; 
    然后我们要把$ORACLE_HOME/network/admin/sqlnet.ora中设置: 
    SQLNET.AUTHENTICATION_SERVICES= none注意一下,密码文件只在数据库启动的时候加载进去,一旦加载进去,密码文件就脱离了oracle管理,所以我们用orapwd新建密码文件后,里面指定的密码要在数据重启后才能生效: 
    至此,我们已经实现不用os认证(sqlplus “/ as sysdba”的方式登录不了)。那么我们怎么限制网络方面利用sysdba远程登录呢?我们可以设置初始化文件中的REMOTE_LOGIN_PASSWORDFILE=none。 
    注意,当REMOTE_LOGIN_PASSWORDFILE=none时,这个参数生效需要重启数据库,并且,一旦启用这个参数,将使用操作系统认证,不使用口令文件。因此如果REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none这个时候数据库是无法登录的。 
     
    alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile; 
    (1)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none:
    oracle安装用户本地sqlplus “/ as sysdba”无法登录
    非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”无法登录
    非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”无法登录 
    (2)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= none:
    oracle安装用户本地sqlplus “/ as sysdba”无法登录
    非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”能登录
    非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”能登录 
    (3)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= (NTS):
    oracle安装用户本地sqlplus “/ as sysdba”能登录
    非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”无法登录
    非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”无法登录 
    (4)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= (NTS):
    oracle安装用户本地sqlplus “/ as sysdba”能登录
    非oracle安装用户本机sqlplus “sys/change_on_install as sysdba”能登录
    非oracle安装用户远程sqlplus “/ as sysdba_on_install@sid as sysdba”能登录 
    Oracle REMOTE_LOGIN_PASSWORDFILE 参数
    设置初始化参数 REMOTE_LOGIN_PASSWORDFILE :
    在 Oracle 数据库实例的初始化参数文件中,此参数控制着密码文件的使用及其状态。它可以有以下几个选项:
    1、NONE :指示 Oracle 系统不使用密码文件,特权用户的登录通过操作系统进行身份验证;
    2、EXCLUSIVE :指示只有一个数据库实例可以使用此密码文件。只有在此设置下的密码文件可以包含有除 SYS 以外的用户信息,即允许将系统权限 SYSOPER /SYSDBA 授予除 SYS 以外的其他用户。此设置oracle 9i中为缺省值。有朋友说是shared,其实不然.
    3、SHARED :指示可有多个数据库实例可以使用此密码文件。在此设置下只有 SYS 帐号能被密码文件识别,即使文件中存有其他用户的信息,也不允许他们以 SYSOPER /SYSDBA 的权限登录。---- 在 REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE 、 SHARED 情况下, Oracle 系统搜索密码文件的次序为:在系统注册库中查找 ORA_SID_PWFILE 参数值(它为密码文件的全路径名);若未找到,则查找 ORA_PWFILE 参数值;若仍未找到,则使用缺省值 ORACLE_HOME\DATABASE\PWDSID.ORA ;其中的 SID 代表相应的 Oracle 数据库系统标识符。
    总结$ORACLE_HOME\network\admin\sqlnet.ora中的AUTHENTICATION_SERVICES参数:
    1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
    2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为其他任何值都不能使用OS认证。
    spfile中的REMOTE_LOGIN_PASSWORDFILE参数:
    1、值为exclusive时,远程能作为sysdba身份登录
    2、值为none时,以sysdba身份无法登录
      

  15.   


    --终于自己解决了,重新修改了下sys的密码
    SQL> alter user sys identified by lhy;用户已更改。
    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\XQ>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 6月 9 09:46:05 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.SQL> conn sys/lhy@impxepora as sysdba
    已连接。
    SQL>
    --问题又来了,我换system账户远程登录,爆权限不足
    SQL> conn system/oracle@impxepora as sysdba
    ERROR:
    ORA-01031: insufficient privileges警告: 您不再连接到 ORACLE。--这个原因是因为:尽管我system具有DBA权限,本地也能登陆,但system没有存在我密码文件v$pwfile_users里,
    --因此需要grant sysdba to system ,这样才能将其保存在我密码文件里
    SQL> show user
    USER 为 "SYS"SQL> conn system/oracle as sysdba;
    已连接。
    SQL> conn sys/lhy as sysdba
    已连接。SQL> grant sysdba to system;授权成功。SQL> select * from v$pwfile_users;USERNAME              SYSDBA   SYSOPER
    --------------------- -------- ---------
    SYS                   TRUE     TRUE
    SYSTEM                TRUE     FALSESQL> 
    --接下来,再system远程登录,报错和我当初一样,口令无效
    SQL> conn sys/lhy@impxepora as sysdba
    已连接。
    SQL> conn system/oracle@impxepora as sysdba
    ERROR:
    ORA-01017: invalid username/password; logon denied
    警告: 您不再连接到 ORACLE。
    SQL>--重新修改密码,ok!SQL> alter user system identified by oracle;用户已更改。--远程system登录ok
    SQL> conn system/oracle@impxepora as sysdba
    已连接。
    SQL>--问题总结:
    --虽然之前我密码文件存在,但有可能是密码文件损坏了,造成我无法远程登录,重新修改密码后成功。
      

  16.   

    由于我安装Oracle后默认采用的是OS认证,即NTS
    对于本地服务器来说,只要以sysdba来登录都能成功,不管是否存在该账户这里找到一篇文章,不错,也是我当初很多原因感到迷惑的,可以参考下:
    http://yangzhongfei.blog.163.com/blog/static/4610987520098693213374/
      

  17.   

    很好的帖子,其实登录涉及本地和远程两种,本地sys以sysdba登录通常是没有问题的,主要在远程以sysdba登录时会碰到用户密码不对或者权限不足问题,碰到这个问题时,通常在确定REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= (NTS)的情况下,还得重新修改一下sysdba用户的密码:alter user sys identified by lhy;密码可以跟之前的一样,这样就可以远程登录了,估计是oracle需要刷新一下密码文件的原因。