iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何进行ORACLE RMAN备份及还原
  • 595
分享到

如何进行ORACLE RMAN备份及还原

2023-06-06 02:06:52 595人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关如何进行oracle RMAN备份及还原,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 RMAN可以进行增量备份:数据库,表空间,数据文件只有使用过的block

这期内容当中小编将会给大家带来有关如何进行oracle RMAN备份及还原,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

 

RMAN可以进行增量备份:数据库,表空间,数据文件

只有使用过的block可以被备份成backup set

表空间与数据文件对应关系:dba_data_files / v$datafile_header

在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间

ORACLE RMAN停机备份:

备份

RMAN连接上ORACLE,windows下在命令模式下

RMAN TARGET /

连接本地数据库用的是本地认证模式。RMAN连接数据库必须在dedicate模式下。因此在share模式下的数据库应配置一个dedicate的连接用于RMAN连接。

如果要把控制文件、参数文件也一起备份

configure controfile autobackup on;//打开autobackup 
configure controfile autobackup off;//关闭autobackup
关闭数据库
RMAN>shutdown immediate
mount 数据库RMAN的备份必须在MOUNT模式下,这也就是控制文件备份的重要。
RMAN>startup mount
最简单的备份
RMAN>backup database
就这一句就OK了
这样的备份,备份集在数据库默认位置。%oracle_home%/ora92/database
当然你也可以用run来灵活的定义你的备份。
RMAN>run{
>allocate chennel d1 type disk; //分配通道
>backup full database           //全备份数据库
>include current controlfile    //包括当前的controlfile
>fORMat 'e:\oracle\orders\db_%d_%s_%p_%t_%T'; //备份文件位置和文件名格式
>release channel d1;//释放通道
>}

恢复
1、数据文件损坏,而控制文件是好,或者已经恢复
 RMAN连上数据库
 startup mount
 restore database
 recover database noredo;
 alter database open resetlogs;
 recover database noredo该命令指示RMAN执行最后的恢复操作以准备打开这个数据库。因为是在NOARCHiveLOG模式下并且不应用任何归档的重做日志并且丢失了联机重做日志,所以要求在这条命令中使用noredo参数。

最后使用alter database open resetlogs打开数据库。由于已经还原了控制文件并且需要重新构建重做日志,所以必须用resetlogs。
2、还原控制文件
startup nomount;
set dbid = <dbid>
restore controlfile from autobackup ;
alter database mount;
restore database;
recover database noredo;
alter database open resetlogs;
alter database open;
在这个例子中有一个DBID这个可以
select * from v$database中查到。但是一个数据库在控制文件坏掉了不能OPEN如何能看的到呢这就在平时把这个DBID记下来。
这是最简单的用RMAN备份与恢复的例子,但从中可以看到RMAN备份与恢复的梗概。

ORACLE RMAN在线备份:

1. ORACLE RMAN在线备份之前需要切换日志方式为归档日志;

a. 关闭数据库
sql> shutdown immediate;

b. 启动数据库到mount状态
SQL> startup mount;

c. 启用归档模式
SQL> alter database archivelog;

d. 查看修改后的数据库备份和恢复策略及归档文件的位置
SQL> archive log list;

注意:修改成archive模式之后,之前所有的数据库备份均无效。

e. 修改相应的初始化参数
Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。
可用SQL> show parameter log_archive_start;查看
NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------
log_archive_start                    boolean     FALSE
SQL> alter system set log_archive_start=true scope=spfile;
重启数据库此参数生效,此时数据库处于自动归档模式。

当然你也可以不做第5步,直接
SQL>archive log start
使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。

2. 运行:RMAN target /

3. RMAN信息保存:默认保存在control file中,保存周期7天

调整:alter system set control_file_record_keep_time=天数;

4. 搭建独立数据库保存RMAN备份信息

由于只有一个数据库,就建在本身数据库上

a. 创建表空间RC:create tablespace rc datafile size 10M autoextend on next 1M

b. 创建用户RC:

CREATE USER rc IDENTIFIED BY rc TEMPORARY TABLESPACE temp DEFAULT TABLESPACE  rc QUOTA UNLIMITED ON rc;

c. 授权RC: GRANT RECOVERY_CATALOG_OWNER TO rc;

d. 搭建:

rman catalog rc/rc@orcl

RMAN>create catalog;

RMAN>exit

rman target / catalog rc/rc@orcl

RMAN>reGISter database;

e. 使用:

rman target / catalog rc/rc@orcl

这种连接方式后,数据就会在控制文件和catalog各存一份

5. 全局参数配置:

查看:show all;

修改:configure 参数名称 具体设置

例如:修改是否自动保存control file:configure controlfile autobackup on;

恢复默认值:configure 参数名称 clear;

关键参数:

a. 保存周期:retention policy

默认是redundancy 1:保留一个备份;

可用值:recovery window of 7 days:保留可以满足7天恢复周期的备份

根据条件检查:report obsolete:RMAN会根据保存周期参数来列出可以删除的备份

删除多于备份:delete obsolete

b. 优化备份:backup optimization:RMAN会自动忽略已经备份过的内容(数据文件,归档日志,备份块)

前提:备份指定同一个channel

c. 默认备份渠道:default device type to disk:默认备份到磁盘,路径为flash recovery area

渠道类型:

disk:文件系统路径

flash recovery area:默认路径

sbt:磁带设备

修改到磁盘其他路径:configure channel device type disk format '路径/%U';

例如:configure channel device type disk format '/tmp/movedata/%U';

6. 备份结果

backupset:backup (as backupset) 备份内容,里面分割成一个或多个backup piece,只有该类型备份可以进行压缩。

copy:backup as copy 备份内容

按类型查看:

backupset 查看:list backup summary(list backupset summary)

查看详情:list backupset BS

copy查看:list copy

按内容查看:

整个数据库:list backup of database;

tablespace:list backup of tablespace users;

数据文件:list backup of datafile n;

控制文件:list backup of controlfile;

归档日志:list archivelog all;

按规则查看:

查看根据保存规则可删除文件:report obsolete;

查看根据保存规则需要备份内容:report

RMAN和OS结合检查:corsscheck 内容;

7. 备份方式

full:全备;

Incremental:增量备份

可以增量备份的类型:数据库,数据文件,表空间

a. 首先需要做level 0备份作为基础。例如:backup incremental level 0 备份内容;(备份内容:所有使用过的data block,和image copy不同)

b. 增量类型:

累计增量:backup cumulative level 1 备份内容;

差异增量:backup incremental level 1 备份内容;

区别:累计增量始终是基于level 0的备份;

第一次差异增量是基于level 0的备份;从第二开始就是基于前一次增量备份

c. Image备份增量方式:

第一次:以Image全备为基础;

第二次:基于全备,做增量备份;完成后合成成一个Image全备

第三次:基于第二次的Image全备,做增量备份;完成后合成成一个Image全备

实现:

例如:针对tablespace example

RUN {
   RECOVER COPY OF tablespace example WITH TAG 'incr_update';
   BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'
       tablespace example;
   }

d. 开启参数"block change tracking",可以提高速度

查看状态:SELECT status FROM v$block_change_tracking;

默认值:DISABLED

开启:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;(默认存放路径OMF中的DB_CREATE_FILE_DEST)

设置文件路径:

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/oradata/MYSID/rman_change_track.f' REUSE;

关闭:ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

备份并检查:bakcup check logical 备份内容;

不备份只是检查文件:backup validate 备份内容;

如果检查有报错,查看:v$backup_corruption;v$copy_corruption

8. 备份内容:

整个数据库:RMAN>backup database;

经典整库备份:backup as compressed backupset database include current controlfile plus archivelog delete input;

tablespace:RMAN>backup tablespace 名字;

数据文件:RMAN>backup datafile n; (n:具体的数据文件编号select file_name,file_id,tablespace_name from dba_data_files;)

控制文件:RMAN>backup current controlfile;

或者RMAN>backup database include current controlfile;

日志文件:RMAN>backup archivelog all;

或者RMAN>backup database plus archivelog;

参数文件:RMAN>backup spfile;

9. 还原

a. 完全恢复

方法一:从最近的备份集恢复整个数据库,数据库会自动运行redo和archive日志(完全恢复):

SQL>shutdown immediate

SQL>startup mount

RMAN>restore database;

RMAN>recover database;

RMAN>sql 'alter database open';

方法二:从tag恢复整个数据库,数据库也会运行redo 和archive 日志(完全恢复),结果与上面的脚本一样:

查看标签:

RMAN> list backupset summary;
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
25      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T104634
28      B  0  A DISK        25-JUL-11       1       1       NO         TAG20110725T104645
29      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T104711
30      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T104713
31      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105333
32      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105350
33      B  1  A DISK        25-JUL-11       1       1       NO         TAG20110725T105353
34      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105408
35      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T105411
36      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T111403
37      B  1  A DISK        25-JUL-11       1       1       NO         TAG20110725T111405
38      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T111421
39      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T111423

还原数据库:

SQL>shutdown immediate;
SQL>startup mount;
RMAN>restore database from tag TAG20110725T104645;

RMAN> recover database from tag TAG20110725T104645;

RMAN> alter database open;

b. 不完全恢复:

SQL>shutdown immediate;
SQL>startup mount;
RMAN>restore database from tag TAG20110725T104645;

RMAN>recover database until time "to_date('2011-08-04 15:37:25','yyyy/mm/dd hh34:mi:ss')";

RMAN>alter database open resetlogs;
注意:使用后所有的备份集都无效了,确保安全需要重新对数据库进行全备(ORACLE10G之后,resetlog之前的备份还是可以用的)

关键表空间恢复(system / undotbs1 / sysaux):

SQL>shutdown abort

SQL>startup mount

RMAN>restore tablespace 名字;

RMAN>recover tablespace 名字;

RMAN>sql 'alter database open';

非关键表空间恢复(example / users ):

select * from v$datafile_header; 表空间与数据文件对应关系

SQL>alter database datafile 数字 offline;

RMAN>restore tablespace 名字;

RMAN>recover tablespace 名字;

SQL>alter database datafile 数字 online;

10. 删除备份

所有backup备份集:delete backup;

所有copy备份机:delete copy;

特定备份机:delete backupset 19;

删除根据保存规则可删除文件:delete obsolete;

删除过期的备份:

delete expired backupset;

delete expired copy;

11. RUN块

例如:

RMAN> RUN {
          ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
          ALLOCATE CHANNEL c2 DEVICE TYPE sbt;
          ALLOCATE CHANNEL c3 DEVICE TYPE sbt;
          BACKUP
         INCREMENTAL LEVEL = 0
         FORMAT '/disk1/backup/df_%d_%s_%p.bak'
         (DATAFILE 1,4,5 CHANNEL c1)
         (DATAFILE 2,3,9 CHANNEL c2)
        (DATAFILE 6,7,8 CHANNEL c3);
          ALTER SYSTEM ARCHIVE LOG CURRENT;
       }
12. 外部变量:

语言:set nls_lang=american

日期:set nls_date_format=yyyy-mm-dd....

13. RMAN sciprt

前提条件:有catalog

写法:(global表示可以由多个数据库调用)

create global script. 名

comment "备注说明"

{脚本内容}

例如:

create global script. abc

comment "test"

{backup current controlfile;}

调用:run {execute script. 名}

例如:run {execute script. abc;}

查看:print script. 名

改写:

replace global script. 名

comment "备注说明"

{脚本内容}

删除:delete script. 名;

14. 永久保留备份

条件是备份不能保留在flash recovery area中;

a. 创建备份:

RUN

{
ALLOCATE CHANNEL c1 DEVICE TYPE disk format '/tmp/autobackup/%U';
BACKUP tablespace example;
}

b. 查找该备份:

list backupset of tablespace example;

c. 修改属性为永久

change backupset 编号 keep forever nologs;

15. 建立多个固定大小的备份

例如:example 测试备份大小是大于50M

run

{

allocate channel c1 device type disk maxpiecesize 10M format '/tmp/autobackup/%U';

backup tablespace example;

}

/tmp/autobackup目录下有六个文件

16.运行脚本:backup recovery area

备份内容:

a. control file autobackup;

b. incremental backup sets

17.block change tracking

a. 针对整个数据库;

b. 默认存放路径:background_dump_dest

上述就是小编为大家分享的如何进行ORACLE RMAN备份及还原了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何进行ORACLE RMAN备份及还原

本文链接: https://www.lsjlt.com/news/245752.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行ORACLE RMAN备份及还原
    这期内容当中小编将会给大家带来有关如何进行ORACLE RMAN备份及还原,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 RMAN可以进行增量备份:数据库,表空间,数据文件只有使用过的block...
    99+
    2023-06-06
  • 如何进行RMAN备份
    本篇文章给大家分享的是有关如何进行RMAN备份,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。RMAN备份详解一、数据库备份与RMAN备份的概念1.数据库完全备份:按归档模式分为...
    99+
    2023-06-06
  • Oracle如何备份还原
    这篇文章主要介绍Oracle如何备份还原,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建表分区create tablespace apps dataf...
    99+
    2024-04-02
  • 使用Oracle进行数据库备份与还原
    目录一、逻辑备份1.某一用户(DBA权限)全库备份:2.某一用户(DBA权限)备份库中某些用户:3.某一用户备份自身:4.某一用户备份自身某些表对象:5.某一用户(具有DBA权限)备份其他用户某些表对象:二、逻辑还原1....
    99+
    2023-04-09
    Oracle数据库备份与还原 Oracle数据库备份 Oracle数据库还原
  • SQLServer中如何进行数据备份和还原
    数据备份和还原是数据库管理中非常重要的操作,可以帮助保障数据安全和灾难恢复。在SQLServer中,可以通过以下步骤进行数据备份和还...
    99+
    2024-04-09
    SQLServer
  • 如何使用Oracle命令进行数据库备份与还原
    这篇文章主要介绍如何使用Oracle命令进行数据库备份与还原,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据导出:将数据库orcl完全导出,用户名system 密码manager 导出到D:\daochu.dmp中...
    99+
    2023-06-21
  • xtrabackup备份工具命令如何进行单库增量备份还原
    这期内容当中小编将会给大家带来有关xtrabackup备份工具命令如何进行单库增量备份还原,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Innobackupex 参数解释...
    99+
    2024-04-02
  • Oracle数据库备份如何还原
    这篇文章主要介绍了Oracle数据库备份如何还原,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。oracle 数据库提供expdp和impdp命令用于备份和恢复数据库。具体可查...
    99+
    2023-06-21
  • 怎么使用Oracle进行数据库备份与还原
    本文小编为大家详细介绍“怎么使用Oracle进行数据库备份与还原”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Oracle进行数据库备份与还原”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Oracle中...
    99+
    2023-07-05
  • 使用Oracle命令进行数据库备份与还原
    数据导出: 1、将数据库orcl完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp system/manager@orcl file=d...
    99+
    2024-04-02
  • oracle rman如何在线热备份
    这篇文章给大家分享的是有关oracle rman如何在线热备份的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。以下是我给出的一些关于备份的建议,作为dba,rman备份策略思路考虑...
    99+
    2024-04-02
  • Oracle中怎么配置和使用RMAN进行备份
    在Oracle数据库中配置和使用RMAN进行备份可以按照以下步骤进行操作: 配置RMAN备份目录:首先需要确定备份文件的存储位置...
    99+
    2024-04-19
    Oracle
  • Linux CentOS7 备份及还原系统
    一、备份 使用root用户切换到 / 目录 su - rootcd / 然后使用下面的命令备份完整的系统: tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --...
    99+
    2023-09-20
    linux 运维 服务器
  • IIS 配置如何备份还原
    这期内容当中小编将会给大家带来有关 IIS 配置如何备份还原,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。备份 IIS 配置 若要备份 IIS 配置,请按照下列步骤操作:1.  在本地...
    99+
    2023-06-14
  • mysqldump+mysqlbinlog执行备份与还原
    服务器的二进制日志文件由用来描述修改数据库内容的事件组成。服务器以二进制方式来写这些文件。为了以文本格式来显示这些内容,可以使用mysqlbinlog工具。也可以使用mysqlbinlog来显示在复制环境中...
    99+
    2024-04-02
  • Oracle数据库备份还原详解
    理论准备 oracle 数据库提供expdp和impdp命令用于备份和恢复数据库。 具体可查阅oracle官方文档 https://docs.oracle.com/en/databa...
    99+
    2024-04-02
  • RMAN是否选择对备份集进行压缩
    本篇内容主要讲解“RMAN是否选择对备份集进行压缩”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“RMAN是否选择对备份集进行压缩”吧!1.  ...
    99+
    2024-04-02
  • 如何备份和还原MySQL数据
    如何备份和还原MySQL数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用mysqldump进行备份和还原使用mysqld...
    99+
    2024-04-02
  • 如何在麒麟操作系统上进行系统的备份和还原
    在麒麟操作系统上进行系统的备份和还原可以通过以下步骤实现:1. 备份系统:- 打开终端并以管理员身份运行。- 使用以下命令创建一个系...
    99+
    2023-10-12
    麒麟操作系统
  • mysql数据库的备份以及还原
    这篇文章主要讲解了“mysql数据库的备份以及还原”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql数据库的备份以及还原”吧!一.数据备份:1.使用m...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作