很多情况下,数据库处于未打开状态下,此时需要连接数据库执行操作,那么只能通过一些外部认证完成数据库的连接。特权用户的验证包括OS验证,密码文件验证、基于目录
的身份验证。
1、语法参数
orapwd FILE=filename
password --sys用户的密码
[FORCE={y|n}] --是否覆盖当前密码文件
[ASM={y|n}] --是否创建到asm
[DBUNIQUENAME=dbname] --如果需要将密码文件保存在asm中时,该参数必须
[FORMAT={12.2|12}] --默认12.2
[SYS={y|n|password|external('sys-externl-name')|global('sys-directory-DN')}]
[SYSBACKUP={y|n|password|external('sysbackup-external-name')|global('sysbackup-directory-DN')}]
[SYSDG={y|n|password|external('sysdg-external-name')|global('sysdg-directory-DN')}]
[SYSKM={y|n|password|external('syskm-external-name')|global('syskm-directory-DN')}]
[DELETE={y|n}] --是否删除指定的密码文件
[INPUT_FILE=input-fname] --用于切换密码文件格式,将密码文件从文件系统迁移至asm可以用这种方法
2、创建密码文件
orapwd FILE='/u01/oracle/dbs/orapworcl' FORMAT=12.2 --默认创建sys用户密码文件 不写password参数,会交互提示输入密码
orapwd file='/u01/oracle/dbs/orapworcl' format password=p@ssw0rd force=y entries=5
create user scott identified by tiger account unlock;
grant sysdba to scott;
select * from v$pwfile_users
3、更新密码文件
ALTER SYSTEM FLUSH PASSWORDFILE_METADATA_CACHE;--如果更改了数据库密码文件位置,使用以下命令使生效 更改方式即force=y
此命令刷新元数据缓存,随后登录数据库使用新密码文件。在 Oracle RAC 环境中,此命令会清除所有 Oracle RAC 数据库中的缓存,
但可能有一些数据库可能仍会继续使用旧密码文件,直到更改传播到所有 Oracle RAC 数据库。
V$PASSWORDFILE_INFO运行此命令后,可以通过查询视图 来验证更改。
4、共享和禁用
REMOTE_LOGIN_PASSWORDFILE
禁用的情况下,自由通过操作系统认证进行连接管理数据库了,直接删除密码文件也可。
-none --禁用
-exclusive --(默认) exclusive密码文件只能用于一个数据库,在asm中时可以多个实例,在文件系统只是一个实例
-shared --同一台服务器上的多个数据库使用,或者一个 Oracle RAC 数据库的多个实例 不能在asm中
exclusive或shared时,密码文件丢失相当于REMOTE_LOGIN_PASSWORDFILE=none
5、与数据字典同步
从12.2开始,SYS仅使用密码文件而不使用数据字典对用户进行身份验证
要同步非SYS管理用户(例如SYSDBA、SYSOPER、SYSBACKUP、SYSDG和SYSKM用户)的密码,您必须先撤消这些用户的权限,然后再重新授予这些用户的权限,
SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSDBA='TRUE';
REVOKE SYSDBA FROM non-SYS-user;
GRANT SYSDBA TO non-SYS-user;
SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSOPER='TRUE';
REVOKE SYSOPER FROM non-SYS-user;
GRANT SYSOPER TO non-SYS-user;
SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSBACKUP ='TRUE';
REVOKE SYSBACKUP FROM non-SYS-user;
GRANT SYSBACKUP TO non-SYS-user;
6、将用户添加到数据库密码文件
向用户授予SYSDBA、SYSOPER、SYSBACKUP、SYSDG或SYSKM管理权限时,该用户的名称和权限信息将添加到数据库密码文件中。
仅当用户至少具有这些权限之一时,该用户的名称才会保留在密码文件中。如果撤销所有这些权限,则 Oracle 数据库会从密码文件中删除该用户。
必须使用FORMAT=12.2或FORMAT=12参数创建密码文件以支持SYSBACKUP、SYSDG或SYSKM管理权限
6.1、创建密码文件
6.2、alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
6.3、conn / as SYSDBA
6.4、打开数据库
6.5、grant sysdba to scott;
7、查看密码文件成员
select * from V$PWFILE_USERS;
8、删除密码文件
alter system set REMOTE_LOGIN_PASSWORDFILE=none;
最后修改时间:2022-03-17 08:59:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




