数据库版本:12.2.0.1
搭建Dataguard的过程中,备库的密码文件查看md5会自动更新,感觉非常奇怪,并且主库查询v$archive_dest 一直报密码文件不对错误,如下图多次在备库看密码文件md5值会自动变化。
下面登陆到数据库内部,一看虚实,主库是一套Exadata,上面的实例还是很多的11gR2、12C、19C很多,好吧,这个先不管。
切换到Oracle用户,清空config里密码文件,Password file: 为空说明使用的是dbs下的密码文件
[oracle@sydydbadm02 ~]$ srvctl modify database -d ifmsdb -pwfile[oracle@sydydbadm02 ~]$ srvctl config database -d ifmsdbDatabase unique name: ifmsdbDatabase name: ifmsdbOracle home: /u01/app/oracle/product/12.2.0.1/dbhome_2Oracle user: oracleSpfile: +DATAC1/IFMSDB/PARAMETERFILE/spfile.42385.1029920135Password file: Domain: Start options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICServer pools: Disk Groups: RECOC1,DATAC1Mount point paths: Services: Type: RACStart concurrency: Stop concurrency: OSDBA group: dbaOSOPER group: racoperDatabase instances: ifmsdb1,ifmsdb2Configured nodes: sydydbadm01,sydydbadm02CSS critical: noCPU count: 0Memory target: 0Maximum memory: 0Default network number for database services: Database is administrator managed
将老的dbs下的密码文件删除,重建
[oracle@sydydbadm02 ~]$ rm $ORACLE_HOME/dbs/orapwifmsdb2[oracle@sydydbadm02 ~]$ orapwd file=orapwifmsdb2 password=xxxxxxxxx entries=100 ignorecase=Y
此时测试连接主库,显示密码错误,下面用dbs下的密码文件生成asm里的密码文件
mos上查看文档 Doc ID 2452286.1
use the INPUT_FILE parameter to specify the current password file name, and use the FILE parameter to create the password file to which the original password file is migrated. #翻译出来就是可以使用INPUT_FILE参数指定当前密码文件名,并使用FILE参数创建将原始密码文件迁移到的密码文件
[oracle@sydydbadm02 dbs]$ orapwd dbuniquename=ifmsdb INPUT_FILE='/u01/app/oracle/product/12.2.0.1/dbhome_2/dbs/orapwifmsdb2' FILE='+DATAC1/IFMSDB/PASSWORD/ifmsdb.password' SYS=yEnter password for SYS: [oracle@sydydbadm02 dbs]$ srvctl config database -d ifmsdb Database unique name: ifmsdbDatabase name: ifmsdbOracle home: /u01/app/oracle/product/12.2.0.1/dbhome_2Oracle user: oracleSpfile: +DATAC1/IFMSDB/PARAMETERFILE/spfile.42385.1029920135Password file: +DATAC1/IFMSDB/PASSWORD/ifmsdb.passwordDomain: Start options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICServer pools: Disk Groups: RECOC1,DATAC1Mount point paths: Services: Type: RACStart concurrency: Stop concurrency: OSDBA group: dbaOSOPER group: racoperDatabase instances: ifmsdb1,ifmsdb2Configured nodes: sydydbadm01,sydydbadm02CSS critical: noCPU count: 0Memory target: 0Maximum memory: 0Default network number for database services: Database is administrator managed
再次测试连接主库通了
[oracle@sydydbadm02 ]$ sqlplus sys/xxxxxxxxx@ifmsdb as sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Fri Jun 26 20:06:06 2020Copyright (c) 1982, 2016, Oracle. All rights reserved.Last Successful login time: Fri Jun 26 2020 20:03:07 +08:00Connected to:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
将密码文件从asm拷贝到备库,记住要拷贝从asm cp下来的密码文件
[grid@sydydbadm02 ~]$ asmcmdASMCMD> pwcopy +DATAC1/IFMSDB/PASSWORD/ifmsdb.password /u01/app/oracle/product/12.2.0.1/dbhome_2/dbsASMCMD-9463: operation failed due to lack of write permissionsASMCMD> pwcopy +DATAC1/IFMSDB/PASSWORD/ifmsdb.password /u01/app/gridcopying +DATAC1/IFMSDB/PASSWORD/ifmsdb.password -> /u01/app/grid/ifmsdb.passwordASMCMD> exit[grid@sydydbadm02 ~]$ cd /u01/app/grid/[grid@sydydbadm02 grid]$ md5sum ifmsdb.password347a3b28d5fdcff7fb4d63bfe02ffa8c ifmsdb.password[grid@sydydbadm02 grid]$ exitlogout[root@sydydbadm02 ~]# cd /u01/app/grid/[root@sydydbadm02 grid]# chown -R oracle:oinstall ifmsdb.password [root@sydydbadm02 grid]# chmod 777 ifmsdb.password [root@sydydbadm02 grid]# mv ifmsdb.password /u01/app/oracle/admin/ audit/ cfgtoollogs/ diag/ log/ product/ [root@sydydbadm02 grid]# mv ifmsdb.password /u01/app/oracle/product/12.2.0.1/dbhome_2/dbs/[root@sydydbadm02 grid]# su - oracleLast login: Fri Jun 26 20:06:48 CST 2020 on pts/1[oracle@sydydbadm02 ~]$ cd $ORACLE_HOME/dbs[oracle@sydydbadm02 dbs]$ scp orapwifmsdb2 ip:/U01/app/oracle/product/12.2.0.1/dbhome_1/dbs
小结:12c密码文件新特性区别于11G的管理方式,srvctl config 看密码文件是否为空,非空表示用当前值的密码文件,拷贝到备库需要使用此密码文件拷贝。