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

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

MySQL容灾备份的实现方案

《MySQL容灾备份的实现方案》进行MySQL的容灾备份是确保数据安全和业务连续性的关键步骤,容灾备份可以分为本地备份和远程备份,主要包括逻辑备份和物理备份两种方式,下面就来具体介绍一下... 目录一、逻辑备份1. 使用mysqldump进行逻辑备份1.1 全库备份1.2 单库备份1.3 单表备份2. 恢复

MybatisPlus中removeById删除数据库未变解决方案

《MybatisPlus中removeById删除数据库未变解决方案》MyBatisPlus中,removeById需实体类标注@TableId注解以识别数据库主键,若字段名不一致,应通过value属... 目录MyBATisPlus中removeBypythonId删除数据库未变removeById(Se

在 Spring Boot 中连接 MySQL 数据库的详细步骤

《在SpringBoot中连接MySQL数据库的详细步骤》本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,... 目录一、添加依赖二、配置数据库连接三、创建实体类四、创建仓库接口五、创建服务类六、创建控制器七、运行应用程序八