密码文件是用于给sysdba用户登录oracle用的
密码文件名字一般都是这样命名:
Linux:orapw$ORACLE_SID
Windows:PWD$ORACLE_SID.ora
在windows系统下的oracle密码文件存放在$ORACLE_HOME/database/目录下,而在linux系统下面,则存放在$ORACLE_HOME/dbs/目录下。
在启动数据库的时候,会验证密码文件的有效性,因此,如果没有密码文件,则启动不了数据库。密码文件可以通过命令orapwd生成,一般命令如下:
orapwd file=xxx.ora password=oracle force=y
其中,file指定了文件的名字,password指定了sys的密码,force表示是否覆盖以前的密码文件。
sysdba登录数据库一般有两种认证方式,一种是使用操作系统认证,一种是使用密码文件认证。只要登录的用户属于dba组(windows下面叫ora_dba组),就允许这个用户进行操作系统认证。但是有两个参数控制是否运行操作系统认证,是否使用密码文件认证。
在参数文件中,有个参数叫remote_login_passwordfile,它的值有三个,NONE, EXCLUSIVE,SHARED,这三个值的意思分别如下:
NONE:不实用密码文件认证,只能通过操作系统认证,因此远程计算机无法使用sysdba用户登录数据库。
EXCLUSIVE:可以使用密码文件认证,但是只有对应的SID数据库才能使用对应SID的密码文件,此值为默认值。
SHARED:可以让多个数据库使用一个密码文件认证,在ASM的时候用的多。
另外还有一个参数决定是否使用密码文件认证登录数据库,在$ORACLE_HOME/network/目录下有个sqlnet.ora的文件,文件中的参数SQLNET.AUTHENTICATION_SERVICES决定这是否使用密码文件认证登录数据库(Linux下默认是没有设置的)。
主要有三个值,NONE,ALL,NTS,其中,NONE表示关闭操作系统认证,只能密码文件认证;另外ALL是用在类UNIX平台下的参数,代表的意思是:关闭本机的密码文件认证,采用操作系统认证,但是远程计算机(异机)可以进行密码文件认证;NTS是在WINDOWS下面用的,意思和LINUX下面的ALL差不多。
两个参数可以产生不同组合。
注意:参数文件的参数属于静态参数,在启动数据库后修改必须重启数据库才能起作用,而sqlnet.ora中的参数修改后马上起作用。