一般来说,口令文件放在$ORACLE_HOME/dbs目录下,在windows平台中,这个文件放在$ORACLE_HOME/database目录下。
这个口令文件存放有超级用户的口令及其其他特权用户的名户名/口令。在创建一个数据库的时候,在$ORACLE_HOME/dbs目录下自动创建一个与之对应的口令文件。此文件是进行初始数据库管理工作的基础。在此之后,管理员也可以根据需要,使用工具orapwd手工创建口令文件。
默认安装下,最初的口令文件只包含sys账号的信息,可以看密码文件的信息
cd $ORACLE_HOME/dbs
strings orapworcl
/oracle/product/10gR2/dbs/$ strings orapwpds
]\[Z
ORACLE Remote Password file
INTERNAL
6A75B1BBE50E66AB
4DE42795E66117AE
TEST
7A0F2B316C212D67
1C7F795C5D2DAC1E
SYSTEM
59838202EDBA03C5
BAF139DF67B5AE43
口令文件是用来给远程超级用户去验证密码的,如sys用户,你如果要在pl/sqldev工具登陆,就必须使用口令文件配置好的密码,而不是你数据库中的实际密码。例如你sys用户的数据库密码为sys,而口令文件配置为123456。远程登陆时,使用的是123456,而不是sys。
1、orapwd工具的使用:
Usage: orapwd file= entries= force= ignorecase= nosysdba=
where
file - name of password file (required), 默认为orapw的组成名称。
password - password for SYS will be prompted if not specified at command line,
entries - maximum number of distinct DBA (optional), 最大化不同的dba用户数
force - whether to overwrite existing file (optional),
ignorecase - passwords are case-insensitive (optional),
nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
样例:
orapwd file=oradbcwc entries=10 force=y ignorecase=y password=sys
2、如果想添加system用户到口令文件
grant sysdba to system;
命令查看:
strings orapwdbcwc就会有system的存在了。
如果不再想给system有这么高的权限,直接发起:
revoke sysdba from system;
这样,远程想用sysdba的权限发起登陆就无法登陆了。
3、关于remote_login_passwordfile参数的配置
remote_login_passwordfile参数有三个选项
shared:多个数据库共享一个口令文件。
exclusive:一个口令文件只能被一个数据库使用。
none:oracle将会忽略掉口令文件,只能在服务器本地验证,不能实现远程验证。
很明显这个参数是用来控制对口令文件的使用的。
基于oracle的这个文件的设计描述,很明显,oracle特别重视的是sysdba的权限,因为它可以远程将数据库关闭数据库,这个已经属于数据库中的最大的权限了,所以说该文件是权限管理的重要一环,不过这个文件只是用来限制远程使用sysdba权限的,他与一般用户需要登陆数据库的控制无关。
3、如果我们登陆的是数据库的本地服务器,这个口令文件是可以忽略的,除非你修改了sqlnet.ora的参数SQLNET.AUTHENTICATION_SERVICES= (NONE)。禁止了本地验证,否则还是可以的。
其中配置有三种配置方式:
none(使用用户名/密码的方式连接数据库)
all(使用所有方式的验证,包括OS验证)
nts(OS验证方式,连入OS后可以不用密码连接数据库,这个是在windows情况使用的,一般我们使用的是unix/linux,不用考虑)
下面我们来做个实验:
[oracle@localhost admin]$ cat sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NONE)
names.directory_path=(TNSNAMES,HOSTNAME)
SQL> show parameter pass
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
这样,我们配置的是本地无法登陆了,使用tns远程登陆看看:
[oracle@localhost admin]$ sqlplus "sys/sys@DB as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Apr 14 23:40:29 2015
在使用本地验证的方式登陆看看:
[oracle@localhost admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Apr 14 23:41:40 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
很明显,本地已经无法登陆,AUTHENTICATION_SERVICES参数控制了本地不能登陆,但我们一般不会这么配置的,因为如果我们正在焦头烂额地处理故障时,还要注意这些问题,无疑让我们疯了,所以我们最好配置这个参数为ALL吧,数据库默认也是ALL的,为了防止别人通过破解远程使用sysdba权限登录我们的数据库,我们可以去掉我们的口令文件。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28120101/viewspace-1575724/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28120101/viewspace-1575724/