天天看点

Oracle中的两种验证方式:操作系统验证和密码文件验证

oracle验证两种方式,操作系统验证,密码文件验证

启动密码文件验证

如果数据库登录方式是操作系统验证sys登录不需要用户名和密码就可以登录

c:\documents and settings\wwang>sqlplus dfsdljfsdljf/jsljfls as sysdba

sql*plus: release 11.2.0.1.0 production on星期一 6月 11 22:28:09 2012

copyright (c) 1982, 2010, oracle.  all rights reserved.

连接到:

oracle database 11g enterprise edition release 11.2.0.1.0 - production

with the partitioning, olap, data mining and real application testing option

sql>

1.  创建口令验证文件

c:\documents and settings\wwang>orapwd file=d:\app\wwang\product\11.2.0\dbhome_1\database\pwdmdsp.ora entries=3

force=y password=oracle;

2.  修改初始化参数remote_login_passwordfile= exclusive

此参数有三个exclusive启用(单实例多用户)none表示禁用 shared启用(rac多实例单用户)

3.  修改sqlnet.ora中sqlnet.authentication_services = (none)

4.  再次使用sqlplus / as sysdba登录

c:\documents and settings\wwang>sqlplus / as sysdba

sql*plus: release 11.2.0.1.0 production on星期一 6月 11 22:48:56 2012

error:

ora-01031:权限不足

请输入用户名:

ora-01017:用户名/口令无效;登录被拒绝

登录不输入用户名密码登录不上

只用输入正确的用户名密码才能登录

c:\documents and settings\wwang>sqlplus sys/oracle; as sysdba

sql*plus: release 11.2.0.1.0 production on星期一 6月 11 22:52:32 2012

with the partitioning, olap, data mining and real application testing options

查看v$pwfile_users

sql> select * from v$pwfile_users;

username             sysdba     sysoper    sysasm

-------------------- ---------- ---------- ----------

sys                  true       true       false

给用户赋予sysdba权限

sql> grant sysdba to imuse01;

授权成功。

imuse01              true       false      false

因为创建口令文件entries=3只能在给3个用户赋sysdba权限(以4个位单位)

5.  如果要禁用口令文件验证修改sqlnet.ora中sqlnet.authentication_services = (nts)

 oracle 验证机制 -- 解决刚创建数据库后未赋权新建用户以dba登录问题

首先稍微解释下os认证:

oracle安装之后默认景象下是启用了os认证的,这里提到的os认证是指办事器端os认证。os认证的意思把登录数据库的用户和口令校验放在了操纵系同一级。若是以安装oracle时的用户登录os,那么此时在登录oracle数据库时不须要任何验证,如:

sql> connect /as sysdba

已连接。

sql> show user;

user is "sys"

sql> connect sys/aaa@dmt as sysdba

sql> connect sys/bbb as sysdba

sql> connect aaa/bbb as sysdba

username                       sysdba sysoper

------------------------------ ------ -------

sys                            true   true

非论输入什么用户(哪怕这个用户如aaa在数据库中底子不存在),只要以sysdba权限连接数据库,都可以连接上,并且连接用户是sys,有时侯,若是忘记了数据库的密码,而又想登录数据库,可以经由过程这种验证格式,前提是在数据库办事器上;然而便利的同时也带来了一些安然隐患,于是很多人想脱离os认证,在win下只要把oracle_home/network/admin/sqlnet.ora中的sqlnet.authentication_services= (nts)中的nts改成none或者注释掉这句话(在前面加上#),就可以脱离os功能,要想以sys用户连上数据库必须输入正确的sys口令,如:

ora-01031: 权限不足

sql> connect sys/aaa as sysdba

ora-01017: 用户名/口令无效; 登录被拒绝

sql> connect sys/system as sysdba