普通用户采用的是数据字典的验证方式:
select username,password from dba_users;
查看视图dba_users的源代码发现视图的主表来自于user$,我们在提交alter user XX identified by XX时,修改的就是这个表里的密码,然而有一点需要注意的是,如果修改完用户的名字,必须得将更改强制写回到数据文件中 alter system checkpoint; ,并清除缓存里的数据字典信息才能生效 alter system flush shared_pool;
实验如下:
SQL> update user$ set name='SCOTT' where user#=54;
已更新 1 行。
SQL> commit;
提交完成。
SQL> select name from user$ where user#=54;
NAME
------------------------------
SCOTT
SQL> alter user scott identified by tiger;
alter user scott identified by tiger
*
第 1 行出现错误:
ORA-01918: 用户 'SCOTT' 不存在
SQL> alter system checkpoint;
系统已更改。
SQL> alter user scott identified by tiger;
alter user scott identified by tiger
*
第 1 行出现错误:
ORA-01918: 用户 'SCOTT' 不存在
SQL> alter system flush shared_pool;
系统已更改。
SQL> alter user scott identified by tiger;
用户已更改。
以SYSDBA身份通过网络连接数据库时需要通过密码文件的验证
密码文件保存了一个用户名和密码列表,这些用户名和密码分别对应于可以通过网络远程认证为SYSDBA 的用户。Oracle 必须使用这个文件来认证用户,而不是数据库中存储的正常密码列表。
查看口令文件中的用户命令:select * from v$pwfile_users;
当授予某用户SYSDBA权限时密码文件会自动添加一条新条目,并且会保持同步,当更改该用户的密码时密码文件也会自动更改(注意:若不是以SYSDBA身份登陆,即使是通过网络连接也用走的是普通用户验证路线)
本文介绍了Oracle数据库中用户管理的具体操作,包括如何修改用户名、密码及必要的系统操作以确保更改生效。此外还探讨了SYSDBA用户的身份验证流程及密码文件的作用。
2085

被折叠的 条评论
为什么被折叠?



