天天看点

RMAN备份环境配置-进阶

Technorati 标签: RMAN, 备份, oracle

RMAN备份环境配置-进阶

配置 RMAN 制作备份到介质管理器

在大多数平台上,备份到磁带上,或从磁带上转储时,必须将磁带与Oracle集成起来。介质管理器不是Oracle产品,因此如果选择RMAN与介质管理器一起工作,必须从供应商处得到所有产品相关的信息。

配置RMAN使用介质管理器的基本步骤如下:

RMAN 使用介质管理器的要求

首先必须安装它并且确保RMAN能够与它通信,通常这一步在供应商文档上有具体说明。安装完成后,首先需要确保非RMAN备份可以正确工作。这个步骤可以使随后的故障处理更容易,可以确保介质管理其能够正确在OS上工作。

然后得到并安装第三方介质管理模块与服务器集成。这个模块包含Oracle用来加载和访问介质管理器的介质管理器库。通常这个产品需要单独购买。

定位介质管理库: SBT_LIBRARY 参数

当为RMAN分配或配置通道用来与介质管理器通信时,需要设置SBT_LIBRARY参数提供介质管理软件库。在实际RMAN执行时,会尝试加载SBT_LIBRARY中的库。如果没有设置该值,将在平台的默认位置查找,$ORACLE_HOME/lib/libobk.so,后缀可能为.sl, .a等,在Windows下为%ORACLE_HOME%/bin/orasbt.dll。

默认情况下,库不是数据库安装的一部分,必须安装介质管理软件。

如果RMAN定位错误,将会得到ORA-27211错误。

无论何时通道分配失败,USER_DUMP_DEST下的跟踪文件都会写入以下信息:

SKGFQ OSD: Error in function sbtinit on line 2278

SKGFQ OSD: Look for SBT Trace messages in file /oracle/rdbms/log/sbtio.log

SBT Initialize failed for /oracle/lib/libobk.so

测试介质管理库是否以正确集成

在确认数据库服务器能够加载介质管理库后,需要测试以确保RMAN能够备份到介质管理器。

RMAN 备份配置介质管理软件

安装完介质管理软件后,执行任何供应商要求的配置以使软件可以接受RMAN备份。有可能要配置介质池,用户,类等等。

然后确定ALLOCATE CHANNEL或CONFIGURE CHANNEL所需的PARMS设置。以及BACKUP推荐的FORMAT格式。PARMS参数用来发送指令到介质管理器。具体在产品文档中会有说明。

配置介质管理器的备份片名和大小

因为介质管理器可能会有大小限制,因此需要配置RMAN限制这些备份片的名称和大小。

配置备份片名:备份片名由BACKUP,CONFIGURE CHANNEL,ALLOCATE CHANNEL的FORMAT字符串定义。

配置备份片大小:备份片大小由CONFIGURE CHANNEL,ALLOCATE CHANNEL的MAXPIECESIZE参数决定。

在介质管理器上测试 ALLOCATE CHANNEL

使用以下过程确认RMAN在为介质管理器分配通道时可以加载介质管理库:

1. 连接到目标库;

2. 运行带PARMS的ALLOCATE CHANNEL命令,如下:

RUN

{

ALLOCATE CHANNEL c1 DEVICE TYPE sbt

PARMS='SBT_LIBRARY=/mediavendor/lib/libobk.so ENV=(NSR_SERVER=tape_srv,NSR_

GROUP=oracle_tapes)';

}

如果没有得到错误消息,则RMAN正确的加载了介质管理库,否则会发生ORA-27211错误。

RMAN-00571: ===========================================================

RMAN-00569: ======= ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03009: failure of allocate command on c1 channel at 11/30/2001 13:57:18

ORA-19554: error allocating device, device type: SBT_TAPE, device name:

ORA-27211: Failed to load Media Management Library

Additional information: 25

此时就需要重新检查安装是否正确,SBT_LIBRARY是否正确。

测试备份到介质管理库

在测试通道分配以后,就需要测试备份。

RUN

{

ALLOCATE CHANNEL c1 DEVICE TYPE sbt

PARMS='SBT_LIBRARY=/mediavendor/lib/libobk.so

ENV=(NSR_SERVER=tape_srv,NSR_GROUP=oracle_tapes)';

BACKUP CURRENT CONTROLFILE;

}

PARMS和FORMAT依赖于具体的产品。如果成功就可以开始备份。错误的情况包括如下:

ORA-19511:没有正确配置介质管理软件;

备份挂起:介质管理器等待挂载磁带;

配置 SBT 通道使用介质管理器

1.RMAN> CONFIGURE CHANNEL DEVICE TYPE sbt

PARMS='SBT_LIBRARY=/mediavendor/lib/libobk.so

ENV=(NSR_SERVER=tape_svr,NSR_CLIENT=oracleclnt,NSR_GROUP=ora_tapes)'

FORMAT "BACKUP_%U";

2.RMAN> BACKUP DEVICE TYPE sbt CURRENT CONTROLFILE;

3.RMAN> SHOW CHANNEL FOR DEVICE TYPE sbt;

4.RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;

配置备份优化

备份优化仅仅适用于以下命令:

·BACKUP DATABASE

·BACKUP ARCHIVELOG…ALL | LIKE;

·BACKUP BACKUPSET ALL

任何时候都可以使用BACKUP命令的FORCE选项覆盖,如下:

BACKUP DATABASE FORCE;

BACKUP ARCHIVELOG ALL FORCE;

默认情况下,备份优化是OFF的,可以通过如下命令启用:

CONFIGURE BACKUP OPTIMIZATION ON;

配置备份复制: CONFIGURE... BACKUP COPIES

CONFIGURE ... BACKUP COPIES声明对于特定类型的备份在特定的设备上需要创建的备份集份数。设置复制的CONFIGURE仅仅影响数据文件,控制文件,归档日志,并且仅仅是到备份集上的。

控制文件自动备份除外。

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE sbt TO 3;

如果将复制特征和多个FORMAT字符串一起使用,可以命令每个备份集的名称。如下:

BACKUP DATABASE FORMAT '/tmp/%U', '?/dbs/%U', '?/oradata/%U';

此时,RMAN会为每个备份集中的备份片创建3个备份,然后根据FORMAT中的字符串进行命名。

如果要清除,可以执行以下命令:

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE sbt CLEAR;

如果不希望设置永久性的复制特定,可以使用BACKUP COPIES和SET BACKUP COPIES命令。

使用 SHOW... BACKUP COPIES 显示复制的份数

连接到目标库后,可以运行SHOW ARCHIVELOG BACKUP COPIES或SHOW DATAFILE BACKUP COPIES命令查看当前的配置。

配置在备份全库时要排除的表空间

使用CONFIGURE EXCLUDE FOR TABLESPACE命令可以配置在备份全库时自动排除的表空间。

即使在配置后,也可以强制将他们包含进来:BACKUP DATABASE NOEXCLUDE;

如果要清除,执行以下命令即可:

CONFIGURE EXCLUDE FOR TABLESPACE TBS_1 CLEAR;

之后在备份全库时,就会将这些表空间包含进来。

配置 Auxiliary 实例数据文件名: CONFIGURE AUXNAME

在使用TSPITR,或通过RMAN复制一个数据库时,在进行实际的TSPITR或者数据库复制前,可以需要设置auxiliary实例的数据文件名。如下:

CONFIGURE AUXNAME FOR datafileSpec TO 'filename';

DatafileSpec:原始的文件名或文件号;filename:新文件的路径。

和其他的设置的清除一样,CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;

当运行DUPLICATE时,CONFIGURE AUXNAME是SET NEWNAME命令的一种替代。区别是使用了AUXNAME后,随后执行其他的DUPLICATE命令不需要再次重设文件名,直到执行了CONFIGURE AUXNAME ... CLEAR。

显示 Auxiliary 通道的默认配置

SHOW AUXNAME;

CONFIGURE AUXNAME FOR DATAFILE '/oracle/oradata/trgt/tools01.dbf' TO '/tmp/tools01.dbf';

设置快照控制文件位置

当RMAN需要从一个读一致性的控制文件版本重新同步时,其将会创建一个快照控制文件。RMAN仅在于RMAN同步或者制作当前控制文件的备份时需要快照。默认情况下,$ORACLE_HOME/dbs/[email protected]中,而不是在FRA。

快照控制文件的默认位置

在当前版本创建一个新数据库:快照使用默认位置,依赖于ORACLE_HOME;

从8.1.7前的版本升级到当前版本:使用存储在控制文件中的快照位置;

查看配置

SHOW SNAPSHOT CONTROLFILE NAME;

设置快照控制文件的位置

使用CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'filename'设置快照控制文件的位置。

如果要更改到其他位置,只需要重新执行指向新的位置即可。

设置共享服务器下的 RMAN 使用

RMAN不能通过共享服务器连接到服务器,必须要求专用服务器。为了确保RMAN在MTS下不会连接到调度器,RMAN使用的连接字符串必须包含(SERVER=DEDICATED)在CONNECT_DATA中。

如下:

inst1_shs =

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=inst1_host)(port1521))

(CONNECT_DATA=(SERVICE_NAME=inst1)(SERVER=shared))

)

inst1是SERVICE_NAMES的一个值;

配置RMAN在MTS下工作如下:

1. 创建一个网络服务名通过非共享SID连接:

inst1_ded =

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=inst1_host)(port1521))

(CONNECT_DATA=(SERVICE_NAME=inst1)(SERVER=dedicated))

)

2. 启动SQL*PLUS测试两个连接字符串:

CONNECT SYS/[email protected]_ded

SELECT SERVER

FROM V$SESSION

WHERE SID = (SELECT DISTINCT SID FROM V$MYSTAT);

CONNECT SYS/[email protected]_shs AS SYSDBA

SELECT SERVER

FROM V$SESSION

WHERE SID = (SELECT DISTINCT SID FROM V$MYSTAT);

3. 使用专用服务名连接到服务器。

关于共享服务器的具体配置

在10g中只要设置shared_servers大于0即可,如下:

alter system set shared_servers=1;

执行命令lsnrctl services,结果如下:

例程 "test", 状态 READY, 包含此服务的 1 个处理程序...

处理程序:

"D000" 已建立:0 已被拒绝:0 当前: 1 最大: 1002 状态: ready

DISPATCHER

(ADDRESS=(PROTOCOL=tcp)(HOST=PD-00167674093A.tcsgegdc.com)(PORT=1579))

然后配置一个TNS服务名,使用1579端口,然后使用该端口配置的TNS服务名连接就是共享服务器。