Oracle数据库如何进行冷备份和恢复

数据库的冷备份指的是数据库处于关闭或者MOUNT状态下的备份,备份文件包括数据文件、日志文件和控制文件。数据库冷备份所用的时间主要受数据库大小和磁盘I/O性能的影响。由于数据库需要关闭才能进行冷备份,所以这种备份技术并不适用7×24小时的系统。尽管冷备份并不需要开启归档模式,但还是建议开启了归档模式后进行冷备份。当数据库发生灾难时,只要归档日志和在线日志存在,归档模式下的冷备份可做到数据不丢失。
9.2.1 冷备份数据库步骤
在关闭数据库之前,可以从数据库视图中查找所需要备份的文件。

  1. 备份数据文件
    可以从视图V D A T A F I L E 中查找所需要备份的数据文件,如下所示: S Q L > s e l e c t n a m e f r o m v DATAFILE中查找所需要备份的数据文件,如下所示: SQL> select name from v DATAFILE中查找所需要备份的数据文件,如下所示:SQL>selectnamefromvdatafile;

NAME

/ora10205/oradata/ora10205/system01.dbf
/ora10205/oradata/ora10205/users02.dbf
/ora10205/oradata/ora10205/sysaux01.dbf
/ora10205/oradata/ora10205/users01.dbf
/ora10205/oradata/ora10205/test01.dbf
/ora10205/oradata/ora10205/manual01.dbf
/oradata/ZHOUL/datafile/o1_mf_zhoul_8cppdlq7_.dbf
/ora10205/oradata/ora10205/undotbs2.dbf
/ora10205/oradata/ora10205/test_lmt01.dbf

9 rows selected.
需要注意的是,由于临时文件是不永久存放业务数据的,所以在冷备份时并不需要备份临时文件。而且临时文件往往被撑得很大,备份临时文件会导致备份时间变长。
2. 备份日志文件
可以从V L O G F I L E 中获取所需要备份的日志文件,如下所示: S Q L > s e l e c t m e m b e r f r o m v LOGFILE中获取所需要备份的日志文件,如下所示: SQL> select member from v LOGFILE中获取所需要备份的日志文件,如下所示:SQL>selectmemberfromvlogfile where type<>‘STANDBY’;

MEMBER

/ora10205/oradata/ora10205/redo02.log
/ora10205/oradata/ora10205/redo01.log
/ora10205/oradata/ora10205/redo05.log
/ora10205/oradata/ora10205/redo04.log
/ora10205/oradata/ora10205/redo03.log
需要注意的是,如果数据库创建有STANDBYREDOLOG,该文件在日常运行的过程中不需要用到,所以在冷备份过程中可以不备份。
3. 备份控制文件
可以从V C O N T R O L F I L E 中获取所需要备份的控制文件,如下所示: S Q L > s e l e c t n a m e f r o m v CONTROLFILE中获取所需要备份的控制文件,如下所示: SQL> select name from v CONTROLFILE中获取所需要备份的控制文件,如下所示:SQL>selectnamefromvcontrolfile;

NAME

/ora10205/oradata/ora10205/control02.ctl
/ora10205/oradata/ora10205/control01.ctl
如果在MOUNT状态使用操作系统命令备份控制文件,则需要注意分裂块。分裂块指的是数据块在更新过程中同时被另外的进程拷贝,以致拷贝出来的数据块一部分是拷贝前的数据,一部分是拷贝后的数据。这些分裂块对Oracle来说就是损坏块。损坏块意味着不可用。由于控制文件的BLOCK SIZE和操作系统的最小I/O单位不同,因此在拷贝控制文件的过程中可能会产生分裂块,所以不建议在数据库MOUNT状态或者OPEN状态中使用操作系统命令拷贝控制文件,虽然拷贝出来的控制文件在绝大多数情况下是可用的。
4. 备份参数文件
参数文件默认位于 O R A C L E H O M E / d b s 下,其名字默认为 i n i t ORACLE_HOME/dbs下,其名字默认为init ORACLEHOME/dbs下,其名字默认为initORACLE_SID.ora或者spfile O R A C L E S I D . o r a 。由于参数文件不存放业务数据,所以理论上来讲,参数文件即使丢失了也可以重建。但参数文件重建需要时间,所以在冷备份的过程中最好也备份参数文件。由于数据库在 N O M O U N T 的过程中会读取参数文件,然后将读取的内容写进警告日志。所以当参数文件丢失且没有备份时,可以从警告日志中获取数据库参数列表重建参数文件。 5. 备份监听相关配置文件监听相关的配置文件指的是 l i s t e n e r . o r a 、 s q l n e t . o r a 、 t n s n a m e s . o r a 等。默认位于 ORACLE_SID.ora。由于参数文件不存放业务数据,所以理论上来讲,参数文件即使丢失了也可以重建。但参数文件重建需要时间,所以在冷备份的过程中最好也备份参数文件。由于数据库在NOMOUNT的过程中会读取参数文件,然后将读取的内容写进警告日志。所以当参数文件丢失且没有备份时,可以从警告日志中获取数据库参数列表重建参数文件。 5. 备份监听相关配置文件 监听相关的配置文件指的是listener.ora、sqlnet.ora、tnsnames.ora等。默认位于 ORACLESID.ora。由于参数文件不存放业务数据,所以理论上来讲,参数文件即使丢失了也可以重建。但参数文件重建需要时间,所以在冷备份的过程中最好也备份参数文件。由于数据库在NOMOUNT的过程中会读取参数文件,然后将读取的内容写进警告日志。所以当参数文件丢失且没有备份时,可以从警告日志中获取数据库参数列表重建参数文件。5.备份监听相关配置文件监听相关的配置文件指的是listener.orasqlnet.oratnsnames.ora等。默认位于ORACLE_HOME/network/admin中。当Oracle软件不可用时,虽然可以重装Oracle软件来解决,但配置文件中的内容需要重建,尤其是tnsnames.ora配置文件,它往往和数据库中的DBLINK相关。当tnsnames.ora配置文件不存在或者配置有问题时,DBLINK往往也会随之失效(如果建DBLINK时采用tnsnams.ora中的连接串)。tnsnames.ora在分布式事务中起着举足轻重的作用,但在数据库备份过程中很容易被DBA忽视。此外,冷备份数据库时最好也备份/etc/fstab、/etc/filesystems或者/etc/hosts等操作系统配置文件,因为要考虑到操作系统不可用的情况。
9.2.2 冷备份下的数据库恢复
如果数据库的冷备份是在非归档模式下进行的备份。那么当发生灾难时,只要将冷备份中数据文件、控制文件、日志文件拷贝至生产系统的原目录中,就可以打开数据库了。此时的恢复时间取决于数据库的大小和磁盘的I/O速度。如果冷备份放在其他主机或介质中,那么恢复时间还取决于从其他系统中导出的时间和网络带宽。非归档模式下的备份可能会导致数据丢失。
如果数据库的冷备份是在归档模式下进行的备份。那么发生灾难时,只要控制文件、归档日志文件、在线日志文件没损坏,那么就可以只将冷备份的数据文件拷贝至生产系统的原目录中,然后应用归档日志和在线日志,这样就可以做到数据不丢失了。以下为模拟数据库灾难的过程。
(1)假设有一张T1表,建立在zhou1用户下,如下所示:
SQL> select count(*) from zhou1.t1;

COUNT(*)

 51732

(2)数据库某个数据文件损坏导致了表zhou1.t1读取异常,如下所示:
SQL> select count() from zhou1.t1;
select count(
) from zhou1.t1
*
ERROR at line 1:
ORA-00376: file 4 cannot be read at this time
ORA-01110: data file 4: ‘/ora10205/oradata/ora10205/users01.dbf’
(3)如果数据文件有冷备份,只要将备份集拷贝至生产系统原目录中,然后应用归档日志和在线日志就可以恢复数据,如下所示:
SQL> alter database datafile 4 offline;

Database altered.
[ora10205@mcdbatest bak]$ cp users01.dbf …/users01.dbf
SQL> recover datafile 4;
ORA-00279: change 12770129123740 generated at 12/06/2012 14:52:43 needed for
thread 1
ORA-00289: suggestion : /archlog/ora10205/1_19_800383891.dbf
ORA-00280: change 12770129123740 for thread 1 is in sequence #19

Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 12770129124885 generated at 12/06/2012 15:02:40 needed for
thread 1
ORA-00289: suggestion : /archlog/ora10205/1_20_800383891.dbf
ORA-00280: change 12770129124885 for thread 1 is in sequence #20
ORA-00278: log file ‘/archlog/ora10205/1_19_800383891.dbf’ no longer needed for
this recovery

Log applied.
Media recovery complete.
SQL> alter database datafile 4 online;

Database altered.

SQL> select count(*) from zhou1.t1;

COUNT(*)

 51732

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP HCM 0008数据存储逻辑

0008信息类型&#xff1a;0008信息类型是存储员工基本薪酬的地方&#xff0c;因为很多企业都会都薪酬带宽&#xff0c;都会按岗定薪&#xff0c;所以在上线前为体现工资体系的标准化&#xff0c;都会在配置对应的薪酬关系&#xff0c;HCM叫间接评估&#xff0c;今天我们就分析下…

FPGA在光谱相机中的核心作用

FPGA&#xff08;现场可编程门阵列&#xff09;作为光谱相机的核心控制与加速单元&#xff0c;通过硬件级并行处理能力和动态可编程特性&#xff0c;实现高速、高精度的光谱数据采集与处理。以下是其具体作用分类&#xff1a; 一、高速光电信号处理 ‌实时光谱复原‌ 通过硬…

入门OpenTelemetry——部署OpenTelemetry

OpenTelemetry 部署模式 OpenTelemetry Collector 按部署方式分为 Agent 和Gateway 模式。 Agent 模式 在 Agent 模式下&#xff0c;OpenTelemetry 检测的应用程序将数据发送到与应用程序一起驻留的&#xff08;收集器&#xff09;代理。然后&#xff0c;该代理程序将接管并…

Windows 上安装下载并配置 Apache Maven

1. 下载 Maven 访问官网&#xff1a; 打开 Apache Maven 下载页面。 选择版本&#xff1a; 下载最新的 Binary zip archive&#xff08;例如 apache-maven-3.9.9-bin.zip&#xff09;。 注意&#xff1a;不要下载 -src 版本&#xff08;那是源码包&#xff09;。 2. 解压 Mave…

摩方 12 代 N200 迷你主机(Ubuntu 系统)WiFi 抓包环境配置教程

摩方12代N200迷你主机标配 Intel AX201无线网卡&#xff0c;支持 WiFi 6 协议&#xff08;802.11ax&#xff09;及蓝牙5.2。此网卡兼容主流抓包工具&#xff0c;但需注意&#xff1a; 驱动兼容性&#xff1a;Ubuntu 20.04及以上内核版本&#xff08;5.4&#xff09;默认支持AX2…

轻量、优雅、高扩展的事件驱动框架——Hibiscus-Signal

在现代企业级应用中&#xff0c;事件驱动架构&#xff08;EDA&#xff09;已成为解耦系统、提升扩展性的利器。今天给大家推荐一个非常优秀的国产轻量级事件驱动框架 —— Hibiscus Signal&#xff0c;它不仅天然整合 Spring Boot&#xff0c;还提供完整的事件生命周期支持&…

集合-进阶

Collection collection的遍历方式 迭代器遍历 不依赖索引 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class mycollection {public static void main(String[] args) {//1.创建集合并添加元素Collection<String> co…

【八股战神篇】Java集合高频面试题

专栏简介 八股战神篇专栏是基于各平台共上千篇面经&#xff0c;上万道面试题&#xff0c;进行综合排序提炼出排序前百的高频面试题&#xff0c;并对这些高频八股进行关联分析&#xff0c;将每个高频面试题可能进行延伸的题目再次进行排序选出高频延伸八股题。面试官都是以点破…

Android之横向滑动列表

文章目录 前言一、效果图二、使用步骤1.xml布局2.代码3.HomeHxBean3.adapter4.item布局5.两个drawable 总结 前言 横向滑动列表有多种实现方式&#xff0c;也可以用tablayout&#xff0c;也可以用recyclerview&#xff0c;今天主要介绍recyclerview。 一、效果图 二、使用步骤…

关于物联网的基础知识(二)——物联网体系结构分层

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网的基础知识&#xff08;二&a…

【机器人】复现 WMNav 具身导航 | 将VLM集成到世界模型中

WMNav 是由VLM视觉语言模型驱动的&#xff0c;基于世界模型的对象目标导航框架。 设计一种预测环境状态的记忆策略&#xff0c;采用在线好奇心价值图来量化存储&#xff0c;目标在世界模型预测的各种场景中出现的可能性。 本文分享WMNav复现和模型推理的过程&#xff5e; 下…

英语学习5.17

attract &#x1f449; 前缀&#xff1a;at-&#xff08;朝向&#xff09; &#x1f449; 含义&#xff1a;吸引&#xff08;朝某处拉&#xff09; 例句&#xff1a;The flowers attract bees. &#xff08;花吸引蜜蜂。&#xff09; distract &#x1f449; 前缀&#xff…

【软考 McCabe度量法】

McCabe度量法&#xff08;McCabe’s Cyclomatic Complexity&#xff09;是由Thomas McCabe提出的一种用于衡量程序模块环路复杂性的软件度量方法。它通过分析代码的控制流结构来评估程序的复杂度&#xff0c;帮助开发者识别难以维护或测试风险较高的代码区域。 一、McCabe度量法…

解读 TypeScript 枚举Enum

TypeScript 枚举通过命名常量、类型安全和结构化组织&#xff0c;显著提升代码质量。使用时需根据场景选择合适的类型&#xff08;数字、字符串或常量枚举&#xff09;&#xff0c;并权衡性能与动态访问需求。掌握其特性和使用的场景&#xff0c;能在复杂项目中有效提升代码的可…

MODBUS RTU通信协议详解与调试指南

一、MODBUS RTU简介 MODBUS RTU&#xff08;Remote Terminal Unit&#xff09;是一种基于串行通信&#xff08;RS-485/RS-232&#xff09;的工业标准协议&#xff0c;采用二进制数据格式&#xff0c;具有高效、可靠的特点&#xff0c;广泛应用于PLC、传感器、变频器等工业设备…

TCP/UDP协议原理和区别 笔记

从简单到难吧 区别就是TCP一般用于安全稳定的需求&#xff0c;UDP一般用于不那么需要完全数据的需求&#xff0c;比如说直播&#xff0c;视频等。 再然后就是TPC性能慢于UDP。 再然后我们看TCP的原理&#xff08;三次握手&#xff0c;数据传输&#xff0c;四次挥手&#xff0…

Jackson使用详解

JSON Jackson是java提供处理json数据序列化和反序列的工具类&#xff0c;在使用Jackson处理json前&#xff0c;我们得先掌握json。 JSON数据类型 类型示例说明字符串&#xff08;String&#xff09;"hello"双引号包裹&#xff0c;支持转义字符&#xff08;如 \n&a…

C语言| 指针变量的定义

C语言| 指针的优点-CSDN博客 * 表示“指向”&#xff0c;为了说明指针变量和它所指向的变量之间的联系。 int * i&#xff1b;//表示指针变量i里面存放的地址&#xff0c;所指向的存储单元里的【数据】。 【指针变量的定义】 C语言规定所有变量&#xff0c;在使用前必须先定…

Java 快速转 C# 教程

以下是一个针对 Java 开发者快速转向 C# 的简明教程&#xff0c;重点对比 Java 与 C# 的异同&#xff0c;帮助你快速上手。 项目结构&#xff1a; .sln &#xff1a;解决方案文件&#xff0c;管理多个项目之间的依赖关系。.csproj &#xff1a;项目文件&#xff0c;定义目标框…

EasyExcel详解

文章目录 一、easyExcel1.什么是easyExcel2.easyExcel示例demo3.easyExcel read的底层逻辑~~4.easyExcel write的底层逻辑~~ 二、FastExcel1.为什么更换为fastExcel2.fastExcel新功能 一、easyExcel 1.什么是easyExcel 内容摘自官方&#xff1a;Java解析、生成Excel比较有名的…