记一次数据库事故-ORA-15038-创新互联

        背景:客户有两套较大的数据库(一套为10T(A数据库), 一套为20T(B数据库))想迁移存储,版本均为12.2.0.1, 采用了ASM管理磁盘,单实例。操作系统分别为linux 6, linux 7。客户想将B数据库的存储迁移到较差的存储,作为只读用途。腾空B数据库的存储之后,将B数据库占用的性能较好的存储分配给A数据库,再将A数据库的数据迁移到新分配的性能较好的存储。

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了乐东黎族免费建站欢迎大家使用!

A数据库的存储为较好存储与较差存储的混搭,需要迁移两次(第一次迁移腾出存储空间,第二次迁移到新回收的存储)。这里总共就有3次迁移。因为数据库较大与备份所需磁盘空间的问题,两个数据库均没有备份。

       4月17日,客户告诉我,领导想要下周二能将两个库迁移好(我将将要写迁移方案)。这样就完全没有时间写方案。同时两个数据库需要同时迁移。于是我们负责存储的同事赶过来,给两个主机划好了存储。我做好了多路径映射并创建了ASM磁盘组。同时停库,开始做迁移。

      4月18日晚上,A数据库数据文件拷贝完成。4月19日调整OCR,日志文件,临时文件等。在此期间,B数据库通过RMAN做COPY已经完成了接近16T左右, 还剩余大致4T数据文件。A数据库调整完成后,为了验证修改正确与否,重启了操作系统。

操作系统起来之后,发现数据库起不来,同时新挂载的ASM磁盘组一直是offline。尝试手动mount, 报错: 

    

ORA-15032: not all alterations performed

ORA-15038: disk '/dev/mapper/newdisk01' mismatch on 'Time Stamp' with target disk group [2434962992] [2434985720]

ORA-15038: disk '/dev/mapper/newdisk02' mismatch on 'Time Stamp' with target disk group [2434962992] [2434985720]

ORA-15038: disk '/dev/mapper/newdisk03' mismatch on 'Time Stamp' with target disk group [2434962992] [2434985720]

ORA-15038: disk '/dev/mapper/newdisk04' mismatch on 'Time Stamp' with target disk group [2434962992] [2434985720]

ORA-15038: di

      通过谷歌,MOS搜索, 可能是磁盘给其他ASM实例使用过,或者是多路径配置的问题。尝试修改asm_diskstring,尝试手动mount, 这次错误变了:

     

WARNING: Disk Group NEWDATA containing spfile for this instance is not mounted

ORA-15032: not all alterations performed

ORA-15038: disk '/dev/mapper/3600c0ff0003af211de24985e01000000' mismatch on 'Time Stamp' with target disk group [2434985720] [2434962992]

      可以看到提示的磁盘变了。这个盘我并未加入ASM磁盘组,为什么也提示这个。我推测可能与原asm_diskstring='/dev/mapper/*'有关。虽然盘并未加入磁盘组,ASM实例启动的时候,还是去扫描了磁盘头。通过kfed, amdu等工具扫描ASM磁盘,都没有问题。同时, amdu可以读出数据文件。这样就没有丢失数据的风险(这里已经被吓尿了)。

    根据MOS文档, Doc ID 2643105.1, 也有类似的症状,一个没有加入到ASM磁盘组的磁盘,阻止了磁盘组的正常启动,同时也是发生在主机重启之后:
    

SQL> alter diskgroup ACFS mount;
alter diskgroup ACFS mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15017: diskgroup "ACFS" cannot be mounted
ORA-15040: diskgroup is incomplete
ORA-15038: disk '/dev//asm2' mismatch on 'Time Stamp' with target
disk group [2026420570] [2026683750]
ORA-15038: disk '/dev//asm1' mismatch on 'Time Stamp' with target
disk group [2026420570] [2026683750]
ORA-15038: disk '/dev//asm0' mismatch on 'Time Stamp' with target

disk group [2026420570] [2026683750]

A Disk at OS level has this diskgroup information in its header incorrectly:

$GI_HOME/bin:>  kfed read

kfdhdb.dskname: ACFS_4 ; 0x028: length=11
kfdhdb.grpname: ACFS ; 0x048: length=6                                          >>>>>>>>>>>>>>>>>>>Here
kfdhdb.fgname: ACFS_4 ; 0x068: length=11
分享题目:记一次数据库事故-ORA-15038-创新互联
网页路径:http://ybzwz.com/article/diohsj.html