http://www.qinxiwang.com/read-htm-tid-265.html

我在Solaris系统上运行 Oracle8i 8.1.7企业版。我创建了两个数据库:SUGAR和TestDb。将两者的remote_login_passwordfile都设置为 “独占(exclusive)”。我试图以SYSDBA身份连接到TestDb,但未能成功。下面是我的做法:
    $sqlplus /nolog
    SQL> conn sys/change_on_install@testdb
    Connected.(已连接)
    SQL> select * from v$pwfile_users;
    username sysdb sysop
    internal true true
    sys true true
    SQL> conn sys/change_on_install@testdb as
    sysdba
    ERROR(错误)
    ORA-01017: invalid username/password; logon
    denied(无效的用户名/口令,登录被拒绝)
    Warning: You are on longer connected to
    ORACLE(警告:你已经与ORACLE断开连接)
    我为什么不能以SYSDBA身份连接到TestDb?

Oracle数据库无效的用户名口令登录被拒绝
通常Oracle中的SYS口令与INTERNAL口令是同步的,SYS口令存储于口令文件中。在上述情况下你建立了包含有一个口令的口令文件,而不是使用缺省的 “change_on_install,”这就是问题之所在。
    希望下面的方法对你有所帮助。首先,建立一个口令文件,其中包含一个口令,这个口令不要与系统口令匹配:
    $ orapwd file=orapw password=foobar
    entries=40
    然后,进入服务器,启动数据库:
    $ svrmgr
    SVRMGR> connect internal
    Connected.(已连接)
    SVRMGR> startup
    ORACLE instance started.(ORACLE 实例已启动)
    Total System Global Area (系统全局区域大小)
    193073136 bytes
    Fixed Size (固定大小)
    69616 bytes
    Variable Size (可变大小)
    141639680 bytes
    Database Buffers (数据库缓冲区)
    45056000 bytes
    Redo Buffers (重做缓冲区)
    6307840 bytes
    Database mounted. (数据库已加载)
    Database opened.数据库已打开。
    现在使用SYS用户的口令,以SYS身份连接:
    SVRMGR> connect sys/change_on_install@ora81
    Connected.(已连接)
    成功了。现在试着以SYSDBA身份连接:
    SVRMGR> connect sys/change_on_install@ora81
    as sysdba;
    ORA-01017: invalid username/password; logon
    denied(无效的用户名/口令;登录被拒绝)
    这里出现了你所说的错误。你的SYS口令为:change_on_install,但口令文件中的口令却是foobar。SYS用户是专用的,以SYSDBA身份连接就像是以INTERNAL连接,你必须使用口令文件中的口令。试试这样做:
    SVRMGR— connect sys/foobar@ora81 as sysdba;
    Connected.(已连接)
    并不是每个人都需要使用口令文件中的口令;用户需要使用他们自己的口令。通过授权SYSDBA给SCOTT,你就可以明白这一点:
    SVRMGR> grant sysdba to scott;
    Statement processed.(已处理)
    这个命令将SCOTT以SCOTT的凭证加入到口令文件中。如果你改变了SCOTT的口令,口令文件也会自动同步改变。现在,你可以试试以SYSDBA身份连接SCOTT了:
    SVRMGR> connect scott/tiger@ora81 as sysdba;
    Connected.(已连接)
    一切正常。现在可以使用ALTER USER 命令来改变SYS用户的口令。
    SVRMGR> alter user sys identified by
    change_on_install;
    Statement processed.(已成功更改)
    SVRMGR> connect sys/change_on_install@ora81
    as sysdba;
    Connected.(已连接)
    你还可以用change_on_install,因为改变SYS用户口令将同时改变口令文件中的口令。当你建立了口令文件后,Oracle数据库在其中放入两个账号:SYS和INTERNAL,并将你在命令行中提供的口令作为这两个账户的口令。当你改变数据库中的SYS用户口令时,数据库将冲掉口令文件中的SYS和INTERNAL口令。下面操作将显示口令foobar已经是无效的了:
    SVRMGR> connect sys/foobar@ora81 as sysdba;
    ORA-01017: invalid username/password; logon
    denied(无效的用户名/口令,登录被拒绝)

posted on 2012-10-30 11:47  Jessica Lu  阅读(7364)  评论(0编辑  收藏  举报