主库创建完加密表空间,备库mrp进程直接崩溃,提示
ORA-10458: standby database requires recovery
ORA-28374: typed master key not found in wallet
###通过sql语句和命令查看主备库主密钥值是否都一致(主库和备库都要查看)
##SQL语句查看
sqlplus / as sysdba
SQL>select utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64 FROM (select RAWTOHEX(mkid) mkeyid from x$kcbdbk);
MASTERKEYID_BASE64
--------------------------------------------------------------------------------
AQMJmyQtTE81v8ORAWpq8ck=
##查看wallet文件夹里文件的主密钥值
cd $ORACLE_BASE/admin/$ORACLE_SID/wallet
查看主密钥文件的主密钥值(3条命令选任意一条执行即可)
$ORACLE_HOME/bin/mkstore -wrl . -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
Oracle Secret Store Tool: 版本 11.2.0.4.0 - Production
版权所有 (c) 2004, 2013, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令: oracle1234
ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY = AQMJmyQtTE81v8ORAWpq8ckAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
--------------------------------------------------------------------------------------------------------
$ORACLE_HOME/bin/mkstore -wrl . -list
Oracle Secret Store Tool: 版本 11.2.0.4.0 - Production
版权所有 (c) 2004, 2013, Oracle 和/或其子公司。保留所有权利。
输入 Wallet 口令: oracle1234
Oracle 密钥存储条目:
ORACLE.SECURITY.DB.ENCRYPTION.AQMJmyQtTE81v8ORAWpq8ckAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
ORACLE.SECURITY.TS.ENCRYPTION.BSf3bB90ikAgSJxHC0YxduACAwAAAAAAAAAAAAAAAAAAAAAAAAAA
--------------------------------------------------------------------------------------------------------
orapki wallet display -wallet .
Oracle PKI Tool: 版本 11.2.0.4.0 - Production
版权所有 (c) 2004, 2013, Oracle 和/或其子公司。保留所有权利。
Requested Certificates:
User Certificates:
Oracle 密钥存储条目:
ORACLE.SECURITY.DB.ENCRYPTION.AQMJmyQtTE81v8ORAWpq8ckAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
ORACLE.SECURITY.TS.ENCRYPTION.BSf3bB90ikAgSJxHC0YxduACAwAAAAAAAAAAAAAAAAAAAAAAAAAA
Trusted Certificates:
Subject: OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject: OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject: OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
Subject: OU=Secure Server Certification Authority,O=RSA Data Security\, Inc.,C=US
Subject: CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
--------------------------------------------------------------------------------------------------------
##备份system表空间的数据文件
col TABLESPACE_NAME for a10
col FILE_NAME for a60
select TABLESPACE_NAME,FILE_ID,FILE_NAME from dba_data_files where TABLESPACE_NAME='SYSTEM';
rman target /
RMAN> copy datafile 1 to '/home/oracle/system01.dbf';
###更新备库控制文件
##用RMAN从主库为备库备份备库使用的控制文件为:
rman target /
RMAN> backup current controlfile for standby format '/home/oracle/backup20211103%d_%I_%s_%p.ctl';
##复制控制文件备份到备库
scp /home/oracle/backup20210303%d_%I_%s_%p.ctl oracle@192.168.88.82:/home/oracle
scp /home/oracle/system01.dbf oracle@192.168.88.82:/home/oracle
###备库
##取消日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
##关闭备库
SQL> shu immediate
##启动备库到nomount状态
SQL> startup nomount
##复制system表空间数据文件到Oracle数据库数据文件目录覆盖原来system01.dbf数据文件
cp /home/oracle/system01.dbf /u01/app/oracle/oradata/sbjm/
##恢复备库控制文件
rman target /
RMAN> restore standby controlfile from '/home/oracle/backup20211103JM_3068030272_23_1.ctl';
##备库启动的monut状态
SQL> startup mount
##开启备库后台实时应用日志
SQL>alter database recover managed standby database using current logfile disconnect from session;
##如果提示错误
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/u01/app/oracle/oradata/sbjm/sbjmt01.dbf'
ORA-27037: unable to obtain file status
##备库创建缺少的数据文件
SQL>alter system set standby_file_management = MANUAL;
SQL> alter database create datafile '/u01/app/oracle/oradata/sbjm/sbjmt01.dbf';
SQL> alter system set standby_file_management =auto;
SQL> alter database open;
SQL> alter database recover managed standby database using current logfile disconnect from session;
###至此备库恢复正常!