一、用户密码
1、准备工作,连接数据库
使用SQLplus直接以管理员身份登录sys用户:
sqlplus / as sysdba
或先使用sqlplus连接数据库,再以管理员身份登录sys用户
sqlplus /nolog
conn sys/sys as sysdba
2、修改用户密码
普通用户:
(1)通过alter user语法来进行修改 ,这也是最常见的方式:
sql> alter user 用户名 identified by 新密码;
sql> commit; #提交所有修改
(2) 第二种方式,是通过password命令来修改:
sqlplus / as sysdba
sql> password 用户名
New password:
Retype new password:
sql> commit
从安全性角度来说 ,推荐大家通过第二种方式来修改用户密码,这样可防止明文密码泄露。
sys用户
另外关于sys用户密码,不要使用password以及alter user 方式去修改,原因主要如下:
(1) 当REMOTE_LOGIN_PASSWORDFILE参数设置为shared时,我们使用alter user 修改sys密码时,会报
ORA-28046: Password change for SYS disallowed error.
(2) 大多数内部递归SQL都使用SYS用户。因此,如果您试图在数据库打开时使用ALTER USER语句更改此密码,则可能会导致死锁。
因此,对于sys用户我们需要使用orapwd来进行修改:
[oracle@orcl dbs]$ orapwd file=‘orapworcl’ entries=5 force=y 这里注意等号左右不能有空格;
参数说明:
file:要分配给密码文件的名称。您必须提供完整的路径。如果只提供文件名,则文件将写入当前目录。
entries:(可选)文件中允许的最大条目数(用户帐户)。
force:(可选)如果是,则允许覆盖现有密码文件。
IGNORECASE:(可选)如果是,则密码不区分大小写。
file:
此参数设置要创建的密码文件的名称。必须指定文件的完整路径名。此参数是必需的。
密码文件所需的文件名是特定于操作系统的。某些操作系统要求密码文件遵循特定格式并位于特定目录中。其他操作系统允许使用环境变量来指定密码文件的名称和位置。
列出了UNIX、Linux和Windows平台上密码文件所需的名称和位置。对于其他平台,请查阅特定于平台的文档。
平台(Platform) | 文件名称 | 文件路径 |
---|---|---|
UNIX and Linux | orapw+$ORACLE_SID | $ORACLE_HOME/dbs |
Windows | PWD+$ORACLE_SID+.org | $ORACLE_HOME/database |
例如,对于一个数据库实例的SID为orcldw,则密码文件必须命名为:linux:orapworcldw,windows:PWDorcldw.ora
在需要将环境变量设置为密码文件路径的平台上的Oracle Real Application Clusters环境中,每个实例的环境变量必须指向同一密码文件。
警告:
保护密码文件和标识密码文件位置的环境变量对系统安全至关重要。任何能够访问这些内容的用户都可能会危及连接的安全性。
ENTRIES:
此参数指定需要密码文件接受的条目数。此数字对应于允许连接到数据库的不同用户的数量如SYSDBA或SYSOPER,实际允许的条目数可能高于用户数,因为ORAPWD实用程序会继续分配密码条目,直到操作系统块被填充。例如,如果您的操作系统块大小为512字节,则它包含四个密码条目。分配的密码条目数总是四的倍数。
当用户被添加到密码文件或从密码文件中删除时,可以重用条目。如果要指定REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE,并允许向用户授予SYSDBA和SYSOPER权限,则需要此参数。
警告:
当超过分配的密码条目数时,必须创建新的密码文件。为了避免这种必要性,请分配比您认为需要的条目更多的条目。
FORCE
如果此参数设置为Y,则可以覆盖现有密码文件。如果已存在同名的密码文件,并且此参数被忽略或设置为N,则返回错误。
IGNORECASE
如果此参数设置为y,则密码不区分大小写。也就是说,当将用户在登录期间提供的密码与密码文件中的密码进行比较时,将忽略大小写。
二、oracle用户解锁
方法:
1、利用“select username,account_status,lock_date from dba_users;”命令,该命令可以显示哪些用户被锁;
2、利用“select * from dba_users where username=‘指定用户实例名’”命令,该命令可显示指定用户是否被锁。
注:结果中 “lock_date” 或 “expiry_date” 为空表示没有被锁,非空则表示锁定。
查看哪些用户被锁
select username,account_status,lock_date from dba_users;
查看指定用户是否被锁
查看用户ECOLOGY账户锁情况: 注:多用户表达式为:(‘MES’,‘SYSTEM’);
select username,account_status,expiry_date from dba_users where username in 'ECOLOGY';
结果中account_status的值为OPEN则没有被锁,为EXPIRED&LOCKED则被锁,expiry_date字段表示用户的过期时间
用户解锁
语法:
解锁:
alter user 用户名 account unlock;
修改密码并解锁:
alter user 用户名 identified by 密码 account unlock;
用户ecology解锁:
ALTER USER ECOLOGY ACCOUNT UNLOCK;
修改密码并解锁:
ALTER USER ECOLOGY IDENTIFIED BY ECOLOGY ACCOUNT UNLOCK;
三、oracle设置用户密码永不过期
1.查看数据库用户过期时间
select username,expiry_date from dba_users where username in ('MES','SYSTEM');
如果EXPIRY_DATE为NULL,表示永不过期!
2、查询用户所属的密码过期策略:
select username,profile from dba_users where username in ('MES','SYSTEM');
默认的密码过期策略为“DEFAULT"
3、查询该密码过期策略的属性:
select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
4、修改该策略的过期时间
alter profile default limit password_life_time unlimited;
commit //提交修改
可以设置成想要的过期天数,也可以设置成 ”unlimited" 表示修改为永不过期。再次查询是否生效。