用PL/SQL登录本机oracle 10g 数据库输入不存在用户和任意密码 用dba权限都能登录数据库,求详解

Windows 7(32bit) + oracle 10.2.0.3(for vista) 操作系统和oracle版

数据库中不存在的用户名和密码,然后竟然登录进去了

求解释

这是因为在安装Oracle的时候默认是使用了操作系统验证:

数据库用sysdba登录的验证有两种方式,一种是通过os认证,一种是通过密码文件验证;登录方式有两种,一种是在数据库主机直接登录(用os认证的方式),一种是通过网络远程登录;需要设置的参数有两个,一个是SQLNET.AUTHENTICATION_SERVICES,一个是REMOTE_LOGIN_PASSWORDFILE。

安装下面的方法修改之后,可以限制sysdba不用密码就能登录的问题。

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表示操作系统身份验证,两种方式可以并用。

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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-24
不要用sysdba权限登录、sysdba不需要帐号密码就能进。

在cmd sqlplus
/ as sysdba直接可以连接到数据库的。
第2个回答  2013-04-24
本机sysdba,是管理模式
第3个回答  2013-04-24
sysdba的关系
相似回答