oracle的密码文件

oracle的密码文件是oracle数据库中拥有administrative权限的(即拥有sysdba或者sysoper权限的)的用户登陆oracle数据库的其中一种方式,即这些用户可以通过oracle的密码文件来登陆数据库。

那么如何来创建密码文件?在操作系统中使用orapwd命令来创建密码文件,我们先来看看orapwd命令格式:
C:\>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>

where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and force - whether to overwrite existing file (opt),
OPERs (opt),
There are no spaces around the equal-to (=) character.

下面来分别解释一下每个参数的含义。
file:指定密码文件的名称,该文件的内容是加密不可读的,一般情况下,该名称要包括全路径,当然不同的os有不同的规定,RAC里面,所有的数据库实例使用一个密码文件,这个参数是必须的。
password:指定sys用户的密码。当你使用“alter user sys identified by ...”对sys用户更改密码的时候,数据字典中的sys用户密码信息和密码文件中的sys用户密码信息同时更改,这个参数也是必须的。
entries:指定该密码文件中最多有多少条记录,即相当于最多允许多少个用户拥有sysdba或者sysoper权限。由于oracle分配密码文件大小是根据操作系统块来决定的,则entries内容是对os块取整,比如说os块大小有512个字节,密码文件中每个os块最多装4个用户,那么entries大小是4的倍数,即使你设置为5,其实际上最多可支持8个用户。这个参数不是必须的,当REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE的时候,或者你要允许将sysdba或者sysoper权限授予非sys用户时,其必须存在。
force:表示创建密码文件的时候是否会覆盖现有密码文件(当有同名文件存在时)。

有关密码文件,有一个重要的参数叫REMOTE_LOGIN_PASSWORDFILE,修改这个参数必须要重新启动数据库实例,它有3个值分别是NONE、SHARED、EXCLUSIVE,含义分别是:
NONE:当设置成这个值后,oracle就不管是否存在密码文件,oracle一概忽略密码文件,则系统管理员不能通过密码文件来登陆数据库。
EXCLUSIVE:这是默认值,这个值只能用在一个实例的数据库中即不能用在rac中。当指定这个值时,密码文件才是“可修改的”,即你可以增加、修改或者删除密码文件里面的用户(即拥有sysdba或者sysoper权限的用户,不仅仅是sys用户),你还可以使用“alter user sys identified by ...”来更改sys用户的密码。
SHARED:这种文件用户RAC或者一个server上的多个数据库。当指定此值时,密码文件变得“不可修改”,即你不能够向密码文件里面增加、修改或者删除非sys用户,不能修改sys用户密码。故,所有需要拥有sysdba或者sysoper权限的用户,必须在参数设置为EXCLUSIVE的时候加入进去,然后再更改至SHARED模式来共享一个密码文件。
当密码文件不存在的时候,不管参数REMOTE_LOGIN_PASSWORDFILE设置成什么值,其都相当于NONE。另外,RAC环境中,该参数在所有的数据库实例中必须设置成同一个值SHARED。

下面我们来做些实验。

当REMOTE_LOGIN_PASSWORDFILE参数不是exclusive而是shared时,是无法对密码文件操作的,因为它是不可更改的。
SQL> show parameter remote_login

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string SHARED
SQL> grant sysdba to scott;
grant sysdba to scott
*
第 1 行出现错误:
ORA-01999: 口令文件不能在 SHARED 模式下更新

SQL> alter user sys identified by test ;
alter user sys identified by test
*
第 1 行出现错误:
ORA-28046: 不允许更改 SYS 口令

只有当REMOTE_LOGIN_PASSWORDFILE参数是exclusive时,才可以对其进行操作。

SQL> alter user sys identified by test ;
alter user sys identified by test
*
第 1 行出现错误:
ORA-28046: 不允许更改 SYS 口令


23:07:44 SQL> show parameter remote_log

NAME TYPE VALUE
------------------------------------ --------------- ---------------
remote_login_passwordfile string EXCLUSIVE
23:07:51 SQL> select * from v$pwfile_users;

USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE

已用时间: 00: 00: 00.04
23:07:52 SQL> grant sysdba to scott;

授权成功。

已用时间: 00: 00: 00.11
23:08:03 SQL> grant sysoper to system;

授权成功。

已用时间: 00: 00: 00.12
23:08:23 SQL> select * from v$pwfile_users;

USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
SCOTT TRUE FALSE
SYSTEM FALSE TRUE

已用时间: 00: 00: 00.04
23:08:27 SQL> revoke sysdba from scott;

撤销成功。

已用时间: 00: 00: 00.12
23:08:33 SQL> revoke sysoper from system;

撤销成功。

已用时间: 00: 00: 00.12
23:08:42 SQL> select * from v$pwfile_users;

USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE

已用时间: 00: 00: 00.04
23:08:44 SQL> alter user sys identified by test; -- 更改sys账号的密码

用户已更改。

已用时间: 00: 00: 00.39

只要用户拥有sysdba或者sysoper中的任何一个权限,其在密码文件中就有相应的记录,当且仅当他没有这2个权限中的任何一个时其才不在密码文件中。
23:19:09 SQL> select * from v$pwfile_users;

USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
SCOTT TRUE TRUE

已用时间: 00: 00: 00.04
23:19:10 SQL> revoke sysdba from scott;

撤销成功。

已用时间: 00: 00: 00.12
23:19:20 SQL> select * from v$pwfile_users;

USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
SCOTT FALSE TRUE

已用时间: 00: 00: 00.01
23:19:21 SQL> revoke sysoper from scott;

撤销成功。

已用时间: 00: 00: 00.11
23:19:30 SQL> select * from v$pwfile_users;

USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE

已用时间: 00: 00: 00.04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值