联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
在ORACLE 12C之前大家都知道密码文件是存放在?/dbs或者?/database中,如果要修改修改sysdba权限的用户密码时候,会去修改密码文件,而在rac数据库的sys密码文件是存在各个节点中,这个时候修改sysdba权限的密码就需要在两个节点都要做同样的操作,而对于数据库来说本身是只要在一个节点上修改即可,因为密码是记录在user$中,就是因为密码文件非共享且在各个节点中都有,因此需要在各个节点均要执行修改密码命令,确保密码文件被正常修改。因为rac 密码文件非共享的机制存在,导致修改sysdba权限密码繁琐,有些时候甚至有节点忘记修改,导致需要使用密码文件操作数据库的时候不能正常进行,DG传输日志异常等故障。在ORACLE 12C中为了解决这个问题,引入了密码文件可以存入ASM新特性,从而使得密码文件存储在ASM中实现所有节点共享,从而解决该问题.
ASM存储密码文件前提条件 COMPATIBLE.ASM>= 12.1
查询ASM信息
SQL> select * from v$version; BANNER CON_ID -------------------------------------------------------------------------------- ---------- Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0 PL/SQL Release 12.1.0.1.0 - Production 0 CORE 12.1.0.1.0 Production 0 TNS for Linux: Version 12.1.0.1.0 - Production 0 NLSRTL Version 12.1.0.1.0 - Production 0 SQL> select NAME,COMPATIBILITY from v$asm_diskgroup; NAME COMPATIBILITY ------------------------------ ------------------------------------------------------------ DATA 12.1.0.0.0
查询crs中关于db配置
[grid@xifenfei ~]$ srvctl config database -d cdb Database unique name: cdb Database name: cdb Oracle home: /u01/app/oracle/product/12.1/db_1 Oracle user: oracle Spfile: +DATA/cdb/spfilecdb.ora Password file: Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: MANUAL Database instance: cdb Disk Groups: DATA Services:
这里db的password file为空,即表示使用默认值,也就是为$ORACLE_HOME/dbs/orapwxifenfei
创建密码文件存储在ASM中
--创建db新密码文件 [oracle@xifenfei ~]$ orapwd file='+data/CDB/orapwdxifenfei' dbuniquename='cdb' Enter password for SYS: ----输入sys用户密码 --创建asm新密码文件 orapwd file='+data/ASM/orapwasm' asm=y ----asm=y 表示创建的密码文件为asm的 --使用老密码文件创建db/asm新密码文件 orapwd input_file='/oraclegrid/dbs/orapwasm' file='+data/ASM/orapwasm' [asm=y] ----input_file 表示使用老的密码文件创建新的存储在ASM中的密码文件
查看ASM中密码文件
ASMCMD> showversion ASM version : 12.1.0.1.0 ASMCMD> pwd +data/cdb ASMCMD> ls -l orapwdxifenfei Type Redund Striped Time Sys Name PASSWORD UNPROT COARSE MAY 31 19:00:00 N orapwdxifenfei => +DATA/CDB/PASSWORD/pwdcdb.290.816897265
配置crs中password file项
[grid@xifenfei ~]$ srvctl modify database -db cdb -pwfile +data/CDB/orapwdxifenfei
查询crs中关于db配置
[grid@xifenfei ~]$ srvctl config database -d cdb Database unique name: cdb Database name: cdb Oracle home: /u01/app/oracle/product/12.1/db_1 Oracle user: oracle Spfile: +DATA/cdb/spfilecdb.ora Password file: +data/CDB/orapwdxifenfei Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: MANUAL Database instance: cdb Disk Groups: DATA Services:
至此数据库启动使用密码ASM中的密码文件完成,补充说明,该方式配置在ASM中的密码文件,只能是通过crs方式启动db才会生效,如果手工使用sqlplus启动数据库不会使用该密码文件,还是使用默认密码文件。这里也就提醒大家操作规范:在RAC环境(包含单节点的GI环境)中,对数据库的启动关闭操作强烈建议使用crs相关命令来完成,而不推荐使用sqlplus命令