关于 ASM 中出现 'DB_UNKNOWN' 目录的说明

作者 | JiekeXu

来源 | JiekeXu DBA之路(ID: JiekeXu_IT)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起聊聊 关于 ASM 中出现 'DB_UNKNOWN' 目录的情况,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

之前在运维 Oracle 数据库时,进入 ASM 有时候会看到 ‘DB_UNKNOWN’ 的目录,那时候是 11204 的库,数据库较多,也没有深入研究,上次搭建 19C MAA 时备库也出现了 ‘DB_UNKNOWN’ 的目录,当时搭建时注册数据库加了密码文件也没出现问题,不过就是看着碍眼,但也没有深入研究就已经匆匆离职了。新公司刚好有一套 19c 的库要迁移, 计划搭建 ADG 去切换,刚好构成 19C 的 MAA 去折腾一下了,MAA 搭建的文章可点击此处查看,一直忙其他的事情,前几天有一位网友加微信告诉我说 ‘DB_UNKNOWN’ 是错误的,那么乘着这次机会一起看看吧。

ASMCMD> pwcopy /tmp/pw<database> +DATA/<database>/PASSWORD/pwd<database>
copying /tmp/pw<database> -> +DATA/<database>/PASSWORD/pwd<database> 
ASMCMD> ls -l 
Type Redund Striped Time Sys Name 
PASSWORD UNPROT COARSE NOV 16 16:00:00 N pwd<database> => 
+DATA/DB_UNKNOWN/PASSWORD/pwddb_unknown.256.960224193

用 pwcopy 拷贝密码文件时,数据库资源不在 CRS 上。会出现如下错误:

[grid@<host1> ~]$ crsctl stat res ora.<database>.db -t 
CRS-2613: Could not find resource 'ora.<database>.db'.


当数据库资源不在 CRS 上,并且 pwcopy 命令中没有指定 “--dbuniquename” 选项时,密码文件将创建在 ‘DB_UNKNOWN’ 目录下,因为 pwcopy 无法获得数据库名称。如果指定了 “--dbuniquename”,密码文件将在 “--dbuniquename” 选项指定的数据库名称目录中创建。当 DB 资源存在于 CRS 上时,即使 pwcopy 命令中没有指定 “--dbuniquename” 选项,也没有观察到 “DB_UNKNOWN”,因为 DB 名可以从 CRS 中获取。

所以解决办法无非就两种,要么添加 --dbuniquename 参数,要么将数据库注册到 CRS 集群。那个朋友说错误的,其实是他没看完文章,我就是用第二种方法注册的集群,这里感谢提出的问题以及分享的 MOS 文章,收获颇丰。

[grid@<host1> ~]$ asmcmd 
ASMCMD> pwcopy --dbuniquename JIEKESTB /tmp/pwJIEKESTB 
+DATAP/JIEKESTB/PASSWORD/pwdJIEKESTB 
PRCD-1120 : The resource for database JIEKESTB could not be found. 
PRCR-1001 : Resource ora.JIEKESTB.db does not exist 
ASMCMD-9457: an internally issued srvctl command failed with errors 
copying /tmp/pwJIEKESTB -> +DATAP/JIEKESTB/PASSWORD/pwdJIEKESTB 
ASMCMD-9453: failed to register password file as a CRS resource 

Note: These errors are expected due to "JIEKESTB" is not present on CRS. 

ASMCMD> ls -l 
Type Redund Striped Time Sys Name 
PASSWORD UNPROT COARSE NOV 16 17:00:00 N pwdJIEKESTB => 
+DATAP/<database>/PASSWORD/pwdJIEKESTB.256.960224879 
PASSWORD UNPROT COARSE NOV 16 17:00:00 Y pwdJIEKESTB.256.960224879

当然有时候通过 pfile 拷贝 spfile 到 ASM 时也会出现 “DB_UNKNOWN” 的目录,如下:

Example: 
SQL> create spfile='+ASMDATA' from pfile='$ORACLE_HOME/dbs/initTEST.ora'; 
File created. 
SQL>exit; 
ASMCMD> pwd 
+ASMDATA/TEST 
ASMCMD> ls -l 
Type Redund Striped Time Sys Name N spfiletest.ora 
=>+ASMDATA/DB_UNKNOWN/PARAMETERFILE/SPFILE.393.668068961

当我们无法查找数据库名称时,将使用 DB_UNKNOWN 子目录作为占位符。当使用 NOMOUNT 选项启动数据库实例或关闭数据库实例时,就会出现这种情况。在这种情况下,无法读取数据库名,我们使用 DB_UNKNOWN 子目录来存储新的 SPFILE。

解决办法就是移除 DB_UNKNOWN 重新指定全路径创建 spfile.

1. Remove the file from the DB_UNKNOWN location.
Example:   
SQL> alter diskgroup ASMDATA drop file '+ASMDATA/DB_UNKNOWN/PARAMETERFILE/SPFILE.393.668068961'; 
2. Re-create the SPFILE within the proper location.   
Therefor you have to specify explicitely the <DB_NAME>/PARAMETERFILE and the filename of the new SPFILE within the CREATE SPFILE command.   
Besides you have to pre-create these directories if they are not available already.   
Example:   
SQL> create spfile='+ASMDATA/TEST/PARAMETERFILE/spfiletest.ora' from  pfile='$ORACLE_HOME/dbs/initTEST.ora';

他提到密码文件还有一个问题,当主备库密码格式不一致时,主备切换就会报 “ORA-46952” 错误。ORA-46952: standby database format mismatch for password file ‘XXX’,只有保证主备库的密码文件的 format 一致才能正常切换。从 12C 开始后有一个视图 v$passwordfile_info 可查看密码文件位置以及对应的 FORMAT 格式。

[oracle@jiekexu ~]$  sqlplus / as sysdba 

SQL*Plus: Release 19.0.0.0.0 - Production on Mon May 31 18:28:45 2021
Version 19.4.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.4.0.0.0

SQL> set line 456 
SQL> col FILE_NAME for a50 
SQL> select * from v$passwordfile_info;
FILE_NAME                                          FORMAT IS_AS     CON_ID
-------------------------------------------------- ------ ----- ----------
+DATA/EDW/PASSWORD/pwdetest.256.1031587259           12     TRUE           0

Elapsed: 00:00:00.41

查看主备库的 format 格式果然不一致,一个是 12,另一个是 12.2;当使用 orapwd 创建密码文件时默认的 format 为 12.2。

这种创建出来的 format 为 12.2
orapwd asm=n input_file=’/home/oracle/orapwjiekedb’ file=’/u01/app/oracle/product/19c/dbhome_1/dbs/orapwjiekedb’
这种指定的 format 为 12
orapwd asm=n input_file=’/home/oracle/orapwjiekedb’ file=’/u01/app/oracle/product/19c/dbhome_1/dbs/orapwjiekedb’ format=12
orapw
 format - use format=12 for new 12c features like SYSBACKUP, SYSDG
             and SYSKM support, longer identifiers, SHA2 Verifiers etc.
             use format=12.2 for 12.2 features like enforcing user 
             profile (password limits and password complexity) and 
             account status for administrative users.
             If not specified, format=12.2 is default (optional)

最后在啰嗦一句,当备库创建完成后,如果主库密码文件有改动时可自动同步到备库,不过除了 far aync 方式外。

好了,小伙伴们今天就到此为止了。如果此文对您有帮助,欢迎点赞、在看与转发,写作不易,举手之劳,便是对作者最大的支持,也能让更多的人受益。

参考文档:
SPFILE of a DB instance will be created within ‘DB_UNKNOWN’ directory on ASM storage (Doc ID 743073.1)
‘DB_UNKNOWN’ directory was created when using asmcmd pwcopy (Doc ID 2329386.1)
Data Guard Standby Automatic Password file Synchronization in 12.2 (Doc ID 2307365.1)

————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————

Oracle 12c 及以上版本补丁更新说明及下载方法(收藏版)

Oracle 19c 19.10DBRU 最新补丁升级看这一篇就够了

ASM 管理的内部工具:KFED、KFOD、AMDU

性能优化|关于数据库历史性能问题的一道面试题

一线运维 DBA 五年经验常用 SQL 大全(二)

ORA-00349|激活 ADG 备库时遇到的问题

Oracle 轻量级实时监控工具 oratop

MySQL OCP 认证考试你知道吗?

Oracle 19C RAC 安装遇到的坑

Oracle 19C MAA 搭建指南

Oracle 每日一题系列合集

百花齐放的国产数据库


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值