CharlieShen

新人,大家多关照啦@_@

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  3994 随笔 :: 0 文章 :: 20 评论 :: 0 Trackbacks
Cached @ 2025/4/28 21:23:25Control ASP.skins_cogitation_controls_blogstats_ascx
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(14)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/28 21:23:26Control ASP.skins_cogitation_controls_singlecolumn_ascx
ORACLE技术问题专家问答五则
2001年11月16日来源:赛迪网Tom Kyte

一问:有关口令

我在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中的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&Gt; 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(无效的用户名/口令,登录被拒绝)

分享按钮发布于: 2007-09-23 10:38 CharlieShen 阅读(121) 评论(0)  编辑 收藏