当前位置: 首页 > 工具软件 > RMan > 使用案例 >

RMAN备份数据库_使用RMAN备份数据库文件

茹正祥
2023-12-01

1.使用RMAN备份整个数据库

可以在数据库挂载或打开时执行整个数据库备份。

使用BACKUP DATABASE命令从RMAN提示符中执行整个数据库的备份。

你可能想从整个数据库备份中排除特定的表空间。可以通过执行CONFIGURE EXCLUDE命令跨RMAN会话持续地跳过你总是想跳过的每个表空间。可以使用BACKUP … NOEXCLUDE命令覆盖配置的设置。

备份数据库:
1) 启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2) 确保数据库处于挂载或打开状态。
3) 在RMAN提示符下执行BACKUP DATABASE命令。

最简单的命令格式不需要选项或参数:
BACKUP DATABASE;

备份的文件(数据文件,控制文件,spfile)列表取决于在BACKUP命令中使用的关键字。

以下示例备份数据库,切换在线redo日志和包括归档日志在备份中:
BACKUP DATABASE PLUS ARCHIVELOG;

在备份之后立即归档日志,可以确保有备份期间的一整组归档日志。这样,保证在还原备份之后可以执行介质恢复。


2.使用RMAN备份表空间和数据文件

可以使用BACKUP TABLESPACE命令备份一个或多个表空间,使用BACKUP DATAFILE命令备份一个或多个数据文件。

当指定表空间时,RMAN内部转换表空间名称到一个数据文件列表。数据库可以处于挂载或打开状态。表空间可以是读写或只读状态。

注:可传输的表空间不需要像在之前的版本中一样必须处于读写模式来做备份。

当数据文件1包含在备份中时,RMAN自动备份控制文件和spfile(如果实例使用spfile启动)。如果控制文件自动备份已启用,那么RMAN将当前的控制文件和spfile写到不同的自动备份片。否则,RMAN将这些文件包含在包含数据文件1的备份集中。

备份表空间或数据文件:
1) 启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2) 确保数据库处于挂载或打开状态。
3)在RMAN提示符下执行BACKUP TABLESPACE或BACKUP DATAFILE命令。

以下示例备份users和tools表空间到磁带:
BACKUP
  DEVICE TYPE sbt
  TABLESPACE users, tools;

以下示例使用SBT 通道备份数据文件1到4和存储在/tmp/system01.db的数据文件拷贝到磁带:
BACKUP
  DEVICE TYPE sbt
  DATAFILE 1,2,3,4
  DATAFILECOPY ‘/tmp/system01.dbf’;


3.使用RMAN备份控制文件

当数据库挂载或打开时,可以备份控制文件。RMAN使用控制文件的快照来确保一个读一致的版本。

如果CONFIGURE CONTROLFILE AUTOBACKUP命令设置为ON(缺省是OFF),那么RMAN在每次备份和数据库结构更改之后自动备份控制文件和spfile。控制文件自动备份包含之前的备份的元数据,对于灾难恢复是至关重要的。

注:可以还原在一个Data Guard数据库上做的控制文件的备份到环境中的其它任何数据库。主和备控制文件备份是可互相交换的。

如果自动备份特性没有设置,那么必须使用以下一种方式手动备份控制文件:
1) 运行BACKUP CURRENT CONTROLFILE
2) 使用BACKUP命令的INCLUDE CURRENT CONTROLFILE选项来包含控制文件的备份在备份中。
3) 备份数据文件1,因为RMAN自动包含控制文件和spfile在数据文件1的备份中。

注:如果控制文件的块大小与数据文件1的块大小不同,那么控制文件不能写到与数据文件相同的备份集中,如果块大小不同,RMAN将控制文件写到一个单独的备份集中。列V$CONTROLFILE.BLOCK_SIZE表示控制文件的块大小,而DB_BLOCK_SIZE初始化参数表示数据文件1的块大小。


3.1.关于控制文件的手动备份

控制文件的手动备份与控制文件的自动备份不相同。RMAN在备份BACKUP命令中指定的文件之后做控制文件的自动备份。

因此,自动备份(不像手动的控制文件备份)包含了关于刚刚完成的备份的元数据。另外,RMAN可以自动还原自动备份而不使用恢复目录。

可以作为备份集或映像拷贝手动备份当前的控制文件。对于备份集,RMAN首先为读一致性创建一个快照控制文件。可以配置快照控制文件的文件名称和位置。在做映像拷贝时不需要一个快照控制文件。

在Oracle RAC环境中,会应用下面的限制:
1) 快照控制文件必须在共享存储上,也就是说,可以被所有实例访问的存储。
2) 当前控制文件的映像拷贝的目的地必须是共享存储。


3.2.手动备份控制文件

可以在备份其它文件时指定INCLUDE CURRENT CONTROLFILE或指定BACKUP CURRENT CONTROLFILE来手动备份控制文件。

也可以通过指定CONTROLFILECOPY参数来备份磁盘上的控制文件拷贝。

手动备份控制文件:
1) 启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2)确保数据库处于挂载或打开状态。
3)在RMAN提示符下执行BACKUP命令和期望的控制文件子语句。

以下示例备份表空间users到磁带和包含当前的控制文件到备份:
BACKUP DEVICE TYPE sbt
 TABLESPACE users
 INCLUDE CURRENT CONTROLFILE;


以下示例作为备份集备份当前控制文件到快速恢复区域:
BACKUP CURRENT CONTROLFILE;
RMAN首先创建快照控制文件。

以下示例作为映像拷贝备份当前控制文件到缺省的磁盘设备:
BACKUP AS COPY
 CURRENT CONTROLFILE
 FORMAT ‘/tmp/control01.ctl’;


以下示例备份在之前的示例中创建的控制文件拷贝到磁带:
BACKUP DEVICE TYPE sbt
 CONTROLFILECOPY ‘/tmp/control01.ctl’;

当备份一个控制文件拷贝时,快照控制文件是不需要的。

如果控制文件自动备份特性已启用,那么RMAN在这些示例中做2个控制文件备份:在BACKUP命令中指定的文件的显式备份和控制文件与spfile的自动备份。


4.使用RMAN备份服务器参数文件spfile

RMAN在某些情况中自动备份当前的spfile。BACKUP SPFILE命令显式备份参数文件。备份的spfile是当前被实例使用的服务器参数文件。

备份spfile:
1)启动RMAN,连接到目标数据库和恢复目录(如果使用的话)。
2)确保数据库处于挂载或打开状态。
数据库必须使用spfile启动。如果实例使用客户端的初始化参数文件pfile启动,那么RMAN在执行BACKUP … SPFILE时报错。
3)执行BACKUP … SPFILE命令。

以下示例备份spfile到磁带:
BACKUP DEVICE TYPE sbt SPFILE;


5.在非归档模式备份数据库

只有数据库在关闭和一致的状态时,才能在非归档(NOARCHIVELOG)模式下备份数据库。

以下脚本将数据库置于一致的整个数据库备份的正确模式,然后备份数据库。脚本假设控制文件的自动备份已经为数据库启用。

可以跳过表空间,比如只读表空间,但如果数据库从备份中还原,任何跳过的从上一次备份以来没有脱机的或只读的表空间会丢失。

在非归档模式备份数据库:
SHUTDOWN IMMEDIATE;

# Start the database in case it suffered instance failure or was
# closed with SHUTDOWN ABORT before starting this script.
STARTUP FORCE DBA;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

# this example uses automatic channels to make the backup
BACKUP
 INCREMENTAL LEVEL 0
 MAXSETSIZE 10G
  DATABASE
  TAG ‘BACKUP_1’;

# Now that the backup is complete, open the database.
ALTER DATABASE OPEN;



来源:《Oracle Database Backup and Recovery User’s Guide,19c》

 类似资料: