使用RMAN 备份与恢复数据库

2024-04-16 04:48

本文主要是介绍使用RMAN 备份与恢复数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我的备份和恢复都是在归档模式下完成的,本文开头部分需要启停数据库,因此请不要在生产环境上操作,如果在生产环境上操作由此产生的任何问题与博主无关。

1.检查数据库是否为归档模式:

oracle@linux:~>sqlplus / as sysdba;

红框中所示为非归档模式,停止数据库,使用如下命令开启归档模式,并设置为自动归档:

SQL> alter database archivelog;

SQL> alter system archive log start;



2.连接RMAN

oracle@linux:~>rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Mon Sep 5 11:04:39 2016

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: ZXIN (DBID=1576697541)

RMAN>

3.检查是否已经有备份文件,注意,在非归档模式下备份的备件集在归档模式下无效。


RMAN> list backup of database;

检查是否有过期或无效的备份

4.最简单的备份:

重启数据库为mount模式
RMAN> shutdown immediate;

RMAN> startup mount;

RMAN> backup database;

5.检查刚刚的备份结果:

RMAN> list backup of database;

6.自定义备份,使用run脚本实现:

RMAN> run {
2> allocate channel d1 type disk;     //分配通道
3> backup full database                  //全库备份
4> include current controlfile           //备份控制文件
5>  format '/home/oracle/product/10.2.0/db_1/dbs/%d_%s_%p_%t_%T';  //指定备份路径及备份格式
6> release channel d1;    //释放通道
7> }  //run脚本结束

其中的变量说明:

%d 数据库名

%s 备份集号

%p 该备份集的片号(从1开始编号)

%t  备份集时间戳

%T 年月日格式(YYYYMMDD)

使用如下命令查看一下刚刚的备份结果:

RMAN> list backup;

BS Key  备份集关键字

Type  备份类型 full为完整备份,incr为增量备份

LV        备份级别,如1级备份,0级备份

Size      备份大小

Device Type 设备类型 Disk为磁盘

Elapsed Time 消耗时间

Completion Time  完成时间

BP Key  备份片关键字

Status    备份状态 AVAILABLE代表可用

Compressed  是否压缩

Tag   标签
Piece Name  备份片物理路径

Ckp SCN Check Point SCN

Ckp time  Check Point 时间

7.删除一个数据文件,测试是否可以正常恢复:

关闭数据库再重新启动:

启动失败,找不到users01.dbf这个数据文件

使用rman恢复:

RMAN> restore database;
RMAN> recover database;

打开数据库:

一.模拟控制文件丢失:

数据库已经无法正常打开

使用RMAN恢复:


RMAN> set dbid 1576697541;

executing command: SET DBID


RMAN> restore controlfile to '/home/oracle/oradata/zxin/control01.ctl' from '/home/oracle/product/10.2.0/db_1/dbs/ZXIN_21_1_921756993_20160905';


Starting restore at 2016.09.05 13:41:06
using channel ORA_DISK_1

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 2016.09.05 13:41:09

打开数据库:

RMAN> alter database open resetlogs;

二.模拟数据文件丢失:

oracle@linux:~/data/oradata/zxin> rm -rf zxin_data.dbf
oracle@linux:~/data/oradata/zxin>

oracle@linux:~/data/oradata/zxin> sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 17 11:53:57 2016

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

此时尝试启动数据库,启动失败,提示找不到数据文件。

SQL> startup
ORACLE instance started.

Total System Global Area 1375731712 bytes
Fixed Size                  2083848 bytes
Variable Size             385876984 bytes
Database Buffers          973078528 bytes
Redo Buffers               14692352 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/home/oracle/data/oradata/zxin/zxin_data.dbf'


SQL>

SQL> select file#,error from v$recover_file;
FILE# ERROR
---------- -----------------------------------------------------------------
         5 FILE NOT FOUND
SQL>

SQL> select file#,name from v$datafile where file#=5;
FILE# NAME
---------- ----------------------------------------  
         5 /home/oracle/data/oradata/zxin/zxin_data.dbf
SQL>

然后我们使用RMAN 恢复:

oracle@linux:~> rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Mon Oct 17 12:40:20 2016
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
connected to target database: ZXIN (DBID=1579813944, not open)
RMAN> run{
2> sql 'alter database datafile 5 offline';
3> sql 'alter database open';
4> restore datafile 5;
5> recover datafile 5;
6> sql 'alter database datafile 5 online';
7> }
using target database control file instead of recovery catalog
sql statement: alter database datafile 5 offline
sql statement: alter database open
Starting restore at 2016.10.17 12:42:28
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00005 to /home/oracle/data/oradata/zxin/zxin_data.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/product/10.2.0/db_1/dbs/ZXIN_4_1_925470454_20161017
channel ORA_DISK_1: restored backup piece 1
piece handle=/home/oracle/product/10.2.0/db_1/dbs/ZXIN_4_1_925470454_20161017 tag=TAG20161017T110734
channel ORA_DISK_1: restore complete, elapsed time: 00:00:16
Finished restore at 2016.10.17 12:42:45
Starting recover at 2016.10.17 12:42:45
using channel ORA_DISK_1
starting media recovery
archive log thread 1 sequence 15 is already on disk as file /home/oracle/product/10.2.0/db_1/dbs/arch1_15_924523320.dbf
archive log thread 1 sequence 16 is already on disk as file /home/oracle/product/10.2.0/db_1/dbs/arch1_16_924523320.dbf
archive log thread 1 sequence 17 is already on disk as file /home/oracle/product/10.2.0/db_1/dbs/arch1_17_924523320.dbf
archive log filename=/home/oracle/product/10.2.0/db_1/dbs/arch1_15_924523320.dbf thread=1 sequence=15
media recovery complete, elapsed time: 00:00:00
Finished recover at 2016.10.17 12:42:45
sql statement: alter database datafile 5 online
RMAN>
SQL> select file#,name,status from v$datafile;
FILE# NAME                                                                                       STATUS
---------- ----------------------------------------------------------------------------------- -----------
         1 /home/oracle/data/oradata/zxin/system01.dbf                             SYSTEM
         2 /home/oracle/data/oradata/zxin/undotbs01.dbf                           ONLINE
         3 /home/oracle/data/oradata/zxin/sysaux01.dbf                             ONLINE
         4 /home/oracle/data/oradata/zxin/users01.dbf                               ONLINE
         5 /home/oracle/data/oradata/zxin/zxin_data.dbf                             ONLINE
SQL>
恢复完成






这篇关于使用RMAN 备份与恢复数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(