ORACLE12.2.0.1 直接备份数据库到NFS HANG

2024-04-29 01:36

本文主要是介绍ORACLE12.2.0.1 直接备份数据库到NFS HANG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.问题背景:

        前两天系统管理员告诉我数据库现在备份时间能否调整,控制在凌晨4:30之前备份完,4:30之后有大量业务过来,

2.问题分析:

        我看了一下,发现这个数据库版本为ORACLE 12.2.0.1,操作系统为CENTOS 7.4,目前从1:00开始备份,有时备份要在早上7:00才备完,进一步查数据库,发现数据库数据文件就只有20G,备份出来,也就5G,怎么会有这么长时间呢

        查看备份脚本,也是备份在本地 /backup/

        查看备份日志,CROSSCHECK BACKUP时间非常长,要几个小时,

        于是手工去测试一下备份过程,发现CROSSCHECK backup,感觉HANG住了,执行备份,等于HANG住,看不到结果。

        测试一下 backup validate database;发现几分钟就OK,说明往备份位置写有些问题。

        如果进行备份,会话等待事件为:Disk file operations I/O

        执行RMAN跟踪,发现:Direct NFS:kgnfsv4.c@4091:kgnfs_complete_create4()

        于是,赶紧看一下df -hT /BACKUP,发现确实是NFS

        看来与NFS有关,从12.1.0.1开始,ORACLE已经默认开启 DNFS,检查报警日志的启动部分,发现有DNFS的信息,看来确实在使用DNFS,难到RMAN 在 DNFS上备份有问题吗,

        于是马上搜MOS,发现了:RMAN Backups Hang using dNFS With NFSv4 (Doc ID 2504179.1)

        看来是中招了呀,于是,我把备份位置放到其他位置,比如 /oradata,再去进行备份,发现3分钟备份完成,解决办法,一是打补丁,2是更换备份位置。

        我看了一下,我的版本上正好有这个补丁,但生产环境打补丁,需要提前提申请,并且提交应急预案等等,看来算了,还是换个位置吧。

        但是在换个位置后,执行备份脚本,发现还是要不出来,经过跟踪,发现停在 CROSSCHECK BACKUP上,LIST BACKUP上不快,于是想到前面的备份应该还在NFS上,怎么能够快速去掉NFS上的备份,不让它去检查呢?

RMAN> list backup of database;


List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time   
------- ---- -- ---------- ----------- ------------ -------------------
7799    Full    391.05M    DISK        00:05:53     2024-03-24 05:13:58
        BP Key: 7815   Status: AVAILABLE  Compressed: YES  Tag: CDBFULL
        Piece Name: /dbak/cdb_bak/whole_20240324_js2mfjtl_1_1_CDB.bak
  List of Datafiles in backup set 7799
  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- ------------------- ----------- ------ ----
  3       Full 282303837  2024-03-24 05:08:05              NO    +DATA/CDB/DATAFILE/sysaux01.dbf
  8       Full 282303837  2024-03-24 05:08:05              NO    +DATA/CDB/DATAFILE/undotbs2.350.1131740169

BS Key  Type LV Size       Device Type Elapsed Time Completion Time   
------- ---- -- ---------- ----------- ------------ -------------------
7800    Full    39.26M     DISK        00:05:05     2024-03-24 05:19:10
        BP Key: 7816   Status: AVAILABLE  Compressed: YES  Tag: CDBFULL
        Piece Name: /dbak/cdb_bak/whole_20240324_jv2mfk8t_1_1_CDB.bak
  List of Datafiles in backup set 7800
  Container ID: 6, PDB Name: TD_CUS
  File LV Type Ckp SCN    Ckp Time            Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- ------------------- ----------- ------ ----
  18      Full 282306012  2024-03-24 05:14:05              NO    +DATA/CDB/E720C99EF5DB0A43E05335D3640AB996/DATAFILE/system.293.1131740169
  20      Full 282306012  2024-03-24 05:14:05              NO    +DATA/CDB/E720C99EF5DB0A43E05335D3640AB996/DATAFILE/users.284.1131740169

如果把备份的元信息去掉,是否就不会去找了呢?

想到使用 change backuppiece 'xxxx' uncatalog;应该可以,于是执行以下语句:

RMAN> change backuppiece '/dbak/cdb_bak/whole_20240324_js2mfjtl_1_1_CDB.bak' uncatalog;

uncataloged backup piece
backup piece handle=/dbak/cdb_bak/whole_20240324_js2mfjtl_1_1_CDB.bak RECID=7815 STAMP=1164431285
Uncataloged 1 objects


RMAN> change backuppiece '/dbak/cdb_bak/whole_20240324_jv2mfk8t_1_1_CDB.bak' uncatalog;

uncataloged backup piece
backup piece handle=/dbak/cdb_bak/whole_20240324_jv2mfk8t_1_1_CDB.bak RECID=7816 STAMP=1164431645
Uncataloged 1 objects

再去执行crosscheck backup;后不再HANG住。

3.问题解决:

        修改备份脚本,更换备份文件到非NFS位置,然后,再使用操作系统CP命令,把备份文件拷贝到NFS位置即可。

好了,按照惯例:最后介绍一下我自己,主要从事ORACLE数据库10年以上工作,有10G OCP,10G OCM,11g ocp,11G OCM ,12C OCM,19c ocp,19C OCM,MYSQL5.7  OCP, PGCE ,ogca等等,为了方便交流,我建立了一个微信群:水煮数据库,主要交流日常工作中用到的数据库问题,包含但不限于:ORACLE,PG,MYSQL,SQLSERVER,OB,TIDB,达梦,TDSQL,OPENGAUSS,人大金仓,GBASE等等,如果有兴趣交流,可以加我微信:zq24803366, 我可以拉你入群。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/cqsztech/article/details/138276141

这篇关于ORACLE12.2.0.1 直接备份数据库到NFS HANG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944791

相关文章

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区