日期:2014-05-16  浏览次数:20474 次

oracle的口令文件

??? Oracle中的口令文件存放着系统的特权用户(sysdba, sysoper)用户的用户名及口令,允许用户通过口令文件验证,在数据库未启动之前登陆从而启动数据库。如果没有口令文件,在数据库未启动之前就只能通过操作系统认证.

??? 口令文件存放路径一般为:

??????? WINDOWS下:%ORACLE_HOME%\DATABASE\PWD<oracle_sid>.ora

??????? UNIX/LINUX 下:$ORACLE_HOME/dbsdbs/orapw<oracle_sid>

??? 如果访问本地的数据库的话,只需要当前用户是被加到操作系统的相应group即可。

?

Operating System GroupUNIX User GroupWindows User Group
OSDBA dba ORA_DBA
OSOPER oper ORA_OPER

?

Oracle验证过程:

?

?

?

??

一、设置由操作系统验证的用户

??? WINDOWS下改变%ORACLE_HOME%\NETWORK\ADMIN\sqlnet.ora内容:SQLNET.AUTHENTICATION_SERVICES= (NTS)

??? UNIX下$ORACLE_HOME/network/admin/sqlnet.ora内容:SQLNET.AUTHENTICATION_SERVICES = (ALL) 就使用了操作系统级别认证,就可以不用输入密码,甚至用户名都不用(sqlplus?"/?as?sysdba")就可以以sysdba的身份登陆系统(此时不通过口令文件认证).

?

??? 如果Oracle数据库不允许远程SYSDBA/SYSOPER身份登录远程要使用操作系统的认证。则必须用安全的连接,这个是在管理工具NET8中设。很多普遍的协议,如:tcp/ip,decnet都是不安全的。将oracle启动参数REMOTE_LOGIN_PASSWORDFILE 设置为NONE,对于8.1.x或更高版本此参数的缺省值是EXCLUSIVE,在较早的Oracle 版本中缺省值是NONE

二、设置使用口令文件验证
??? 把sqlnet.ora内修改:SQLNET.AUTHENTICATION_SERVICES= (NONE)

?

这个时候就需要用到pwd file了,如果这个时候还是任意输入密码,或者用"/" 来登陆就会出现错误

ORA-01031: insufficient privileges
ORA-01017: invalid username/password; logon denied

?

??? 对于远程用户来说,将REMOTE_LOGIN_PASSWORDFILE 设置为EXCLUSIVE 或SHARED

??????? EXCLUSIVE:表明只有一个例程可以使用口令文件,并且该口令文件包含除SYS 和INTERNAL以外的名称
??????? SHARED: 表明可以有多个例程可以使用口令文件口令文件可以识别的用户只有SYS 和INTERNAL