Oracle 11g 使用RMAN备份数据库

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

使用Oracle自带的备份恢复工具RMAN(Recovery Manager)具有以下几种优势:

  • 支持增量备份

  • 能自动管理备份文件

  • 自动化备份与恢复

  • 备份的文件有效性检查


配置快闪恢复区(flash recovery area)

快闪恢复区是存储备份和恢复数据文件以及相关信息的存储区。需要设置两个参数:db_recovery_file_dest_size(快闪恢复区的最大容量),db_recovery_file_dest(快闪恢复区所在的路径)。

查看快闪恢复区信息:

1
2
3
4
5
SQL> show parameter db_recovery_file_dest;
NAME      TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string /data/app/oracle/recovery_area
db_recovery_file_dest_size     big  integer  3882M

修改快闪恢复区大小:

1
2
3
4
5
6
7
SQL>  alter  system  set  db_recovery_file_dest_size=2g;
System altered.
SQL> show parameter db_recovery_file_dest;
NAME      TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string /data/app/oracle/recovery_area
db_recovery_file_dest_size     big  integer  2G

查看使用情况:

1
2
3
4
5
6
7
SQL>  select  name ,space_limit,space_used,number_of_files  from  v$recovery_file_dest;
NAME
--------------------------------------------------------------------------------
SPACE_LIMIT SPACE_USED NUMBER_OF_FILES
----------- ---------- ---------------
/data/app/oracle/recovery_area
  2147483648     0     0

显示没有使用。

也可以使用此命令查看详细信息:

1
SQL>  select  file_type,percent_space_used,percent_space_reclaimable,number_of_files  from  v$flash_recovery_area_usage;


建立RMAN到数据库的连接

创建rman用户,并授权:

1
2
3
4
5
6
7
8
[oracle@ temp -test oracle]$ sqlplus /nolog
SQL>   connect / as  sysdba
Connected.
SQL>  create  user  rman identified  by  oracle;
User  created.
SQL>  grant  resource, connect ,dba  to  rman;
Grant  succeeded.
SQL> quit

使用rman用户登录RMAN:

1
2
3
4
5
[oracle@ temp -test oracle]$ rman target rman/oracle
Recovery Manager: Release 11.2.0.1.0 - Production  on  Fri Nov 3 16:59:27 2017
Copyright (c) 1982, 2009, Oracle  and / or  its affiliates.   All  rights reserved.
connected  to  target  database : ORCL (DBID=1486802665)
RMAN>

也可以使用如下方式登录:

1
2
3
4
5
6
[oracle@ temp -test oracle]$ rman
Recovery Manager: Release 11.2.0.1.0 - Production  on  Fri Nov 3 17:00:35 2017
Copyright (c) 1982, 2009, Oracle  and / or  its affiliates.   All  rights reserved.
RMAN>  connect  target system/rman
connected  to  target  database : ORCL (DBID=1486802665)
RMAN>  connect  target rman/oracle

也可以使用操作系统认证连接RMAN:

1
2
3
4
5
[oracle@ temp -test oracle]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production  on  Fri Nov 3 17:02:52 2017
Copyright (c) 1982, 2009, Oracle  and / or  its affiliates.   All  rights reserved.
connected  to  target  database : ORCL (DBID=1486802665)
RMAN>


配置RMAN

查看RMAN的配置参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
RMAN> show  all ;
using target  database  control file  instead  of  recovery catalog
RMAN configuration parameters  for  database  with  db_unique_name ORCL are:
CONFIGURE RETENTION POLICY  TO  REDUNDANCY 1; #  default
CONFIGURE BACKUP OPTIMIZATION  OFF ; #  default
CONFIGURE  DEFAULT  DEVICE TYPE  TO  DISK; #  default
CONFIGURE CONTROLFILE AUTOBACKUP  OFF ; #  default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT  FOR  DEVICE TYPE DISK  TO  '%F' ; #  default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE  TO  BACKUPSET; #  default
CONFIGURE DATAFILE BACKUP COPIES  FOR  DEVICE TYPE DISK  TO  1; #  default
CONFIGURE ARCHIVELOG BACKUP COPIES  FOR  DEVICE TYPE DISK  TO  1; #  default
CONFIGURE MAXSETSIZE  TO  UNLIMITED; #  default
CONFIGURE ENCRYPTION  FOR  DATABASE  OFF ; #  default
CONFIGURE ENCRYPTION ALGORITHM  'AES128' ; #  default
CONFIGURE COMPRESSION ALGORITHM  'BASIC'  AS  OF  RELEASE  'DEFAULT'  OPTIMIZE  FOR  LOAD  TRUE  ; #  default
CONFIGURE ARCHIVELOG DELETION POLICY  TO  NONE; #  default
CONFIGURE SNAPSHOT CONTROLFILE  NAME  TO  '/data/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f' ; #  default

参数含义:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1

保留的备份副本数量,表示只保留一个数据文件的副本,并且保留最新的备份副本。

CONFIGURE DEFAULT DEVICE TYPE TO DISK

数据文件默认备份到磁盘上,也可以是其他设备如磁带(sbt)

CONFIGURE BACKUP OPTIMIZATION OFF

不使用备份优化,启用备份优化的作用是如果已经备份了某个文件的相同版本,则不会再备份该文件。,只保留一份备份文件。

CONFIGURE CONTROLFILE AUTOBACKUP OFF

不启动控制文件的自动备份,修改为ON之后,如果数据库结构发生变化或者在备份数据库过程中,控制文件会自动再备份到指定目录下

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET

备份通道数量为1,默认使用备份集的方式。通道数量越多,执行任务时间越短。


如果要修改参数,可以执行如下命令:

开启备份优化:

1
2
3
4
RMAN> CONFIGURE BACKUP OPTIMIZATION  ON ;
new RMAN configuration parameters:
CONFIGURE BACKUP OPTIMIZATION  ON ;
new RMAN configuration parameters are successfully stored

设置备份类型为Copy,也就是映像模式:

1
2
3
4
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE  TO  COPY;                          
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE  TO  COPY PARALLELISM 1;
new RMAN configuration parameters are successfully stored

备份控制文件到快闪恢复区:

1
2
3
4
5
6
7
8
RMAN> backup  current  controlfile;
Starting backup  at  03-NOV-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying  current  control file
output  file  name =/data/app/oracle/recovery_area/ORCL/controlfile/o1_mf_TAG20171103T180113_dzrhm9vk_.ctl tag=TAG20171103T180113 RECID=3 STAMP=959104874
channel ORA_DISK_1: datafile copy complete, elapsed  time : 00:00:01
Finished backup  at  03-NOV-17

如果没有指定快闪恢复区也可以用手动指定路径:

将快闪恢复区改为test目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SQL> connect /as  sysdba
Connected.
SQL> show parameter db_recovery_file_dest;
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string  /data/app/oracle/recovery_area
db_recovery_file_dest_size     big integer 2G
SQL> alter system  set  db_recovery_file_dest= '/data/app/oracle/test' ;
 
System altered.
 
SQL> show parameter db_recovery_file_dest;
 
NAME                     TYPE   VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest            string      /data/app/oracle/test
db_recovery_file_dest_size       big integer 2G

配置控制文件备份的磁盘类型和备份目录,路径以%F结尾:

1
2
3
4
5
RMAN> configure controlfile autobackup  format  for  device  type  disk to  '/data/app/oracle/test/%F' ;
 
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO  '/data/app/oracle/test/%F' ;
new RMAN configuration parameters are successfully stored


RMAN脱机备份

RMAN脱机备份需要关闭数据库,启动数据库到mount状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[oracle@ temp -test oracle]$ sqlplus /nolog
SQL>  connect / as  sysdba
Connected.
SQL> shutdown immediate;
Database  closed.
Database  dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
 
Total System  Global  Area 1586708480 bytes
Fixed  Size          2213736 bytes
Variable  Size         939526296 bytes
Database  Buffers     637534208 bytes
Redo Buffers           7434240 bytes
Database  mounted.
SQL> quit

进入RMAN,备份数据:

先查看数据备份的默认参数,备份方式(copy或backupset),和备份格式(disk 或其他)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
RMAN> show  all ;
using target  database  control file  instead  of  recovery catalog
RMAN configuration parameters  for  database  with  db_unique_name ORCL are:
CONFIGURE RETENTION POLICY  TO  REDUNDANCY 1; #  default
CONFIGURE BACKUP OPTIMIZATION  ON ;
CONFIGURE  DEFAULT  DEVICE TYPE  TO  DISK; #  default
CONFIGURE CONTROLFILE AUTOBACKUP  OFF ; #  default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT  FOR  DEVICE TYPE DISK  TO  '%F' ; #  default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE  TO  COPY PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES  FOR  DEVICE TYPE DISK  TO  1; #  default
CONFIGURE ARCHIVELOG BACKUP COPIES  FOR  DEVICE TYPE DISK  TO  1; #  default
CONFIGURE MAXSETSIZE  TO  UNLIMITED; #  default
CONFIGURE ENCRYPTION  FOR  DATABASE  OFF ; #  default
CONFIGURE ENCRYPTION ALGORITHM  'AES128' ; #  default
CONFIGURE COMPRESSION ALGORITHM  'BASIC'  AS  OF  RELEASE  'DEFAULT'  OPTIMIZE  FOR  LOAD  TRUE  ; #  default
CONFIGURE ARCHIVELOG DELETION POLICY  TO  NONE; #  default
CONFIGURE SNAPSHOT CONTROLFILE  NAME  TO  '/data/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f' ; #  default

执行备份命令使用copy方式,映像复制整个库:

1
RMAN> backup  as  copy  database ;

如果是使用默认的backupset模式,可以使用:

1
RMAN> backup  as  compressed backupset  database ;

备份完成后,打开数据库:

1
2
RMAN> sql  'alter database open' ;
sql statement:  alter  database  open


RMAN联机备份整个数据库

联机备份必须要设置快闪恢复区,快闪恢复区要足够大,并且数据库要置于归档模式。在数据库进行备份的同时,可以进行DML操作,可以正常读取,新的DML操作记录会在重做日志文件中,如果备份时间很长,而且在这个期间产生了大量的数据变化,重做日志会切换从而将这些变化的数据写到归档日志文件中。这里的归档日志就类似于mysql的binlog,在出现介质故障的时候,使用备份和归档日志记录和完成数据的全部恢复。

查看数据库归档模式是否开启,当前属于关闭状态:

1
2
3
4
5
6
SQL> archive log list;
Database log mode       No Archive Mode
Automatic archival       Disabled
Archive destination       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     22
Current log sequence       24

开启日志归档:

1
2
3
4
5
6
SQL> alter database archivelog;
alter database archivelog
*
ERROR at line 1:
ORA-01126: database must be mounted  in  this instance and not  open  in  any
instance

日志归档必须在mount模式,关闭数据库启动到mount模式,开启归档模式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SQL>  shutdown  immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
 
SQL> startup  mount ;
ORACLE instance started.
Total System Global Area 1586708480 bytes
Fixed Size    2213736 bytes
Variable Size 1040189592 bytes
Database Buffers  536870912 bytes
Redo Buffers    7434240 bytes
Database mounted.
 
SQL> alter database archivelog;
Database altered.
SQL> alter database  open ;
Database altered.
 
SQL>  archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     22
Next log sequence to archive   24
Current log sequence       24

使用RMAN联机备份数据库:

1
RMAN> backup as compressed backupset database plus archivelog delete all input;

使用备份集格式进行备份,并采用压缩的方式,压缩比例大概为5:1。备份数据文件,同时也备份归档日志文件,备份完成之后会将已经备份的归档日志文件从存储目录中删除,清除归档空间。

备份表空间:

1
2
3
4
5
6
7
8
RMAN> backup tablespace  users ;
Starting backup at 06-NOV-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile  file  number=00004 name= /data/app/oracle/oradata/orcl/users01 .dbf
output  file  name= /data/app/oracle/test/ORCL/datafile/o1_mf_users_dzzxzmxv_ .dbf tag=TAG20171106T134939 RECID=12 STAMP=959348980
channel ORA_DISK_1: datafile copy complete, elapsed  time : 00:00:01
Finished backup at 06-NOV-17

使用压缩:

1
RMAN> backup as compressed backupset tablespace  users ;

使用RMAN备份数据文件,%U表示自动分配一个唯一的命名:

1
RMAN> backup as backupset datafile 1  format  '/data/app/backup/datafile_1_%U' ;

清除命令,慎用

清除旧的备份文件set格式:

1
2
3
RMAN>  delete obsolete; 
RMAN> crosscheck backupset;
RMAN> delete expired backupset;

清楚旧的备份文件和所有备份,copy模式:

1
2
3
4
RMAN>  list datafilecopy all;
RMAN> delete expired backupcopy;
RMAN> crosscheck datafilecopy all;
RMAN> delete expired backupcopy;

如果是由于快闪恢复区容量限制,可以修改快闪恢复区的路径和容量:

1
SQL> alter system  set  db_recovery_file_dest= '/data/app/oracle/test' ;
1
SQL>  alter  system  set  db_recovery_file_dest_size=10g;

RMAN增量备份

使用backup database时,都是全库备份,每次这样备份很耗时也占用磁盘空间,RMAN的增量备份就能解决这些问题。

这里有两种备份级别,级别0备份为全库备份,级别1的备份为增量备份,一般情况下需要对数据进行0级别的备份之后在进行级别1的增量备份。

1
RMAN> backup incremental level 0 database;

级别1的差异增量备份:

1
RMAN> backup incremental level 1 database;


对映像副本进行增量备份

1
2
3
4
RMAN> run {     
2> backup incremental level 1  for  recover of copy with tag  'incr_copy_backup'  database;
3> recover copy of database with tag  'incr_copy_backup' ;
4> }

每次执行这条命令,就可以使用映像的方式对数据库进行增量备份。




 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1979382

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
29天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
152 64
|
19天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
26 7
|
19天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
22 6
|
19天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
17 5
|
25天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
28天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
26 1
|
1月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
53 3
|
2月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
392 2
|
1月前
|
存储 Oracle 关系型数据库
【数据库-Oracle】《Oracle 数据库探秘:基础知识点全攻略》
《Oracle 数据库探秘:基础知识点全攻略》深入介绍 Oracle 数据库的基础知识点,包括数据类型、表结构、查询语句等。通过详细讲解、代码示例和流程图,帮助读者快速掌握 Oracle 数据库的基本操作,为数据库开发和管理打下坚实基础。
37 0
|
1月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,

推荐镜像

更多