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
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-01031:权限不足
请输入用户名:
ERROR:
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
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 options
SQL>
查看v$pwfile_users
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
-------------------- ---------- ---------- ----------
SYS TRUE TRUE FALSE
SQL>
给用户赋予sysdba权限
SQL> grant sysdba to imuse01;
授权成功。
SQL> select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYSASM
-------------------- ---------- ---------- ----------
SYS TRUE TRUE FALSE
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> show user;
User is "SYS"
SQL> connect sys/bbb as sysdba
已连接。
SQL> show user;
User is "SYS"
SQL> connect aaa/bbb as sysdba
已连接。
SQL> show user;
User is "SYS"
SQL> select * from v$pwfile_users;
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口令,如:
SQL> connect /as sysdba
ERROR:
ORA-01031: 权限不足
SQL> connect sys/aaa as sysdba
ERROR:
ORA-01017: 用户名/口令无效; 登录被拒绝
SQL> connect aaa/bbb as sysdba
ERROR:
ORA-01031: 权限不足
SQL> connect sys/system as sysdba
已连接。
SQL>