查看: 14051|回复: 2

通过SQLPLUS远程登录Oracle数据库与在Oracle Server上通过SYS登录的一个问题分析

[复制链接]
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:42:49
跳转到指定楼层
1#
发表于 2011-3-20 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个奇怪的问题
通过SHELL远端登录Linux Server, 然后用SYS用户登录oracle
sqlplus '/ as sysdba'
启动数据库到open状态, 然后disconn,
再通过用户名,密码登录sys用户: conn sys/rico as sysdba 能够正常登陆
但是通过Windows机器上的SQLPLUS进行远程登录时, 用同样的用户名,密码却登陆不了:
SQL> conn sys/rico@ricoyu9i as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied

尝试弄清原由:
1, 通过SHELL登录Oracle Server, 首先删除password文件:
[oracle@oracle9i dbs]$ mv orapwricoyu9i orapwricoyu9i.bak2

2, 重建password 文件:
[oracle@oracle9i dbs]$ orapwd file=orapwricoyu9i password=rico entries=5;

3, 用sys用户连接sqlplus
  [oracle@oracle9i dbs]$ sqlplus '/ as sysdba'
  SQL*Plus: Release 9.2.0.4.0 - Production on Sun Mar 20 15:44:57 2011
  Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
  Connected to an idle instance.
4, 此时, 通过SQLPLUS客户端用sys用户进行远程登录
SQL> conn sys/rico@ricoyu9i as sysdba
已连接到空闲例程。
此时正常登录,
5, 在通过SHELL登录的那个SQLPLUS中启动数据库, 修改sys密码
SQL> startup
ORACLE instance started.
Total System Global Area  286332064 bytes
Fixed Size                   451744 bytes
Variable Size             251658240 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.
SQL> alter user sys identified by vivi;
User altered.
6, 退出sys, 分别用rico和vivi做密码重新登录, 两个密码都可以登录
SQL> disconn
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
SQL> conn sys/rico as sysdba
Connected.
SQL> disconn
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
SQL> conn sys/vivi as sysdba
Connected.
7, 退出通过SQLPLUS客户端登录的那个SYS用户, 然后再分别用rico和vivi登录
SQL> disconn
已断开连接
SQL> conn sys/rico@ricoyu9i as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn sys/vivi@ricoyu9i as sysdba
已连接。

8, 分析
通过1,2步删除, 重建password文件的过程, 确定了sys的password文件认证方式的密码为rico.
第3步, 通过命令sqlplus '/ as sysdba'登录oracle, 这种方式的认证方式应该是操作系统认证, 它并不要求我提供一个密码
第4步, 通过SQLPLUS客户端远程登录, conn sys/rico@ricoyu9i as sysdba, 此时可以成功登录, 所以该方式应该是通过password文件认证
第6步, 此时是通过SHELL登录的那个SYS用户.在启动数据库以后, 修改SYS用户的密码为vivi, 此处修改的密码是保存在dba_users表中? 接着退出SYS用户的登录, 再通过rico,vivi两个密码分别登录, 都登录成功. 所以在数据库启动过后, 在Oracle server上登录sys用户, 密码为password
文件中定义的或者是保存在dba_users表中的密码都是可以的
第7步, 退出通过SQLPLUS客户端登录的那个SYS用户, 然后再分别用rico和vivi登录, 此时只有vivi这个密码可以登录成功
     SQL> conn sys/qianyu14@ricoyu9i as sysdba
     ERROR:
     ORA-01017: invalid username/password; logon denied

     SQL> conn sys/vivi@ricoyu9i as sysdba
     已连接。
9,结论
在Oracle Server上, 不管数据库是否启动, 都可以用password认证方式登录数据库, 而通过SQLPLUS客户端在远端登录, 启动数据库之后只能通过dba_users表中记录的密码来登录, 不能再通过password文件认证方式来登录了

以上为小弟的观点, 望高手指点!
论坛徽章:
2
2011新春纪念徽章
日期:2011-02-24 22:18:082010广州亚运会纪念徽章:赛艇
日期:2011-03-03 22:29:31
2#
发表于 2011-3-23 22:01 | 只看该作者
基础知识
本机上可以用密码认证,远程是要数据库认证的.

使用道具 举报

回复
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:42:49
3#
 楼主| 发表于 2011-3-25 20:10 | 只看该作者
原帖由 mitable8066 于 2011-3-23 22:01 发表
基础知识
本机上可以用密码认证,远程是要数据库认证的.

确实是基础知识, 但是看你的回复, 似乎这个基础知识你也没完全弄明白.
远程就一定要通过数据库认证吗? 在instance没有启动时, 即使是通过客户端工具远程连接, 还是可以通过password文件认证方式登录的,
请看我的第4步操作.
anyway, 谢谢你的回复!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表