客服微信
本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
Oracle 用户登录数据库时有三种验证方式,分别为:
(1)操作系统验证:即,Oracle 用户只要能够登录操作系统,在登录数据库时不需要验证用户名和密码。此种登录方式只有在服务器本机登录有效,不适用于远程登录。
(2)密码文件验证:使用密码文件中保存的用户和密码登录数据库。
(3)数据字典验证:使用数据字典中的用户和密码登录数据库,一般用于普通用户的登录验证。
这里重点讲下密码文件
密码文件验证是指通过密码文件校验用户名和密码正确与否。
Oracle 的密码文件保存着具有 sysdba、sysoper 权限的用户名及口令。即使数据库没有处于 open 状态,也可以通过密码文件验证来连接数据库。如果没有密码文件,在数据库未启动之前只能通过操作系统验证。
远程登录不能使用操作系统验证,只能使用密码文件验证,要想以 sysdba 权限远程连接数据库,必须使用密码文件。密码文件默认保存了 sys 用户以及密码,如果把 sysdba 权限授予普通用户,则普通用户的用户名以及密码也会保存到密码文件中。
密码文件的位置与名称为:$ORACLE_HOME/dbs/orapw
cd $ORACLE_HOME/dbs ll orapwORCLCDB
测试密码文件登录
--查看当前的sysdba用户 SQL> select * from v$pwfile_users; /* 如果密码文件不存在或者名称错误,查询v$pwfile_users将得到空记录 添加sysdba等权限用户,会记录到密码文件和v$pwfile_users中 到回收sysdba等权限用户,密码文件记录依然存在,但是v$pwfile_users中无对应记录 */ -- 把 sysdba 权限授予普通用户 APP SQL> grant sysdba to APP; Grant succeeded. /* remote_login_passwordfile= NONE | EXCLUSIVE | SHARED 说明:该参数有三个取值,含义如下: (1)NONE: 不使用密码文件,使用操作系统验证 (2)EXCLUSIVE(默认值): 密码文件验证。以独占模式使用密码文件,此时在数据库中可以执行对于 sysdba 用户的增加,修改,删除操作 (3)SHARED: 密码文件验证。密码文件可以被一台服务器上的多个数据库或者 RAC 集群数据库共享;shared 下的密码文件不可被修改,这意味着无法授权 sysdba
权限给非 sys 用户,也不允许修改 sysdba 权限用户的密码,包括 sys 用户的密码。 Oracle 建议首先将需要 sysdba 权限的用户在 exclusive 模式下设置好,然后再将 REMOTE_LOGIN_PASSWORDFILE 修改为 shared。 */ 4.Oracle寻找口令文件的顺序:orapw$ORACLE_SID --> orapw --> Failure SQL> select * from v$pwfile_users;
使用 APP用户登录数据库:
1) 以普通方式登录 @pdb2> conn APP/oracle@pdb2 ERROR: ORA-01045: user APP lacks CREATE SESSION privilege; logon denied SYS@pdb2> grant connect to APP; Grant succeeded. @pdb2> conn APP/oracle@pdb2 Connected. Session altered. APP@pdb2> show user USER is "APP" 2)以sysdba登录 @pdb2> conn APP/oracle@pdb2 as sysdba Connected. Session altered. SYS@pdb2> show user USER is "SYS"
重建密码文件:可以解决密码文件损坏,口令丢失
# 删除密码文件 rm orapwORCLCDB #验证 sys登录失败 [oracle@database ~]$ sqlplus sys/oracle@pdb2 as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jul 22 10:50:39 2023 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. ERROR: ORA-01017: invalid username/password; logon denied #验证授权sysdba的用户登录成功 [oracle@database ~]$ sqlplus app/oracle@pdb2 as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jul 22 10:50:51 2023 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 Session altered. SYS@pdb2> show user USER is "SYS" # 重建密码文件,并设置密码 orapwd file=orapwORCLCDB password=oracle #查看密码文件 SQL> select * from v$pwfile_users; #验证登录成功 sqlplus sys/oracle@pdb2 as sysdba