暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

JiekeXu DBA之路 2021-06-09
1807

作者 | 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 2021Version 19.4.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.4.0.0.0SQL> 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           0Elapsed: 00:00:00.41

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

    这种创建出来的 format12.2
    orapwd asm=n input_file=’/home/oracle/orapwjiekedb’ file=’/u01/app/oracle/product/19c/dbhome_1/dbs/orapwjiekedb’
    这种指定的 format12
    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 每日一题系列合集

    百花齐放的国产数据库


    文章转载自JiekeXu DBA之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论