tivoli-storage-manager

公司的 Oracle 数据库的备份工具使用的是 IBM 公司的 Tivoli Storage Manager (TSM),它主要的功能是自动将 Oracle RMAN 备份数据写入磁带库。网上有很多配置 Tivoli 和 RMAN 实现自动写入磁带库的方案,不过写的都不太具体,这几天我一直在看 Tivoli 的教程,过些天我会写一篇详细的配置博文,感兴趣的朋友可以关注一下。闲话少说,让我们进入今天的主题吧。因为 TSM 也是利用 RMAN 实现备份并写入磁带库的,所以恢复数据库的过程基本是个 RMAN 备份过程的逆过程。找到 TSM 的 RMAN 备份脚本文件 rman_FULL_tape.rcv,其内容如下:

run {
configure controlfile autobackup on;
configure controlfile autobackup format FOR DEVICE TYPE ‘sbt_tape’ TO ‘CF_%d_%T_%F’;
configure retention policy to recovery window of 7 days;
allocate channel t1 type ‘sbt_tape’ parms
‘ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin/tdpo.opt)’;
BACKUP
FULL
filesperset 5
FORMAT ‘FULL_%d_%T_%U’
DATABASE include current controlfile;
RELEASE CHANNEL t1;
allocate channel t2 type ‘sbt_tape’ parms
‘ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin/tdpo.opt)’;
sql ‘alter system archive log current’;
crosscheck archivelog all;
BACKUP
filesperset 10
FORMAT ‘ARCH_%d_%T_%U’
ARCHIVELOG ALL DELETE INPUT;
crosscheck backup;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE;
release channel t2;
}

找到 RMAN 备份脚本后,参照备份脚本编写恢复脚本即可,如下内容是详细的恢复操作流程:

$ export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
$ export NLS_DATE_FORMAT=”DD-MM-YYYY HH24:MI:SS”

RMAN> shutdown immediate;
RMAN> startup mount;
RMAN>RUN {
allocate channel t1 type ‘sbt_tape’ parms
‘ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin/tdpo.opt)’;
SET UNTIL TIME = ’12-05-2011 12:00:00′;
RESTORE DATABASE;
RECOVER DATABASE;
RELEASE CHANNEL t1;
ALTER DATABASE OPEN RESETLOGS; }

在实际的操作中,我遇到了以下错误:

using target database control file instead of recovery catalog
RMAN-00571: ====================================================
RMAN-00569:
=============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ====================================================
RMAN-03009: failure of allocate command on t1 channel at 05/05/2011 19:30:57
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
ORA-27000: skgfqsbi: failed to initialize storage subsystem (SBT) layer
Linux Error: 106: Transport endpoint is already connected
Additional information: 7011
ORA-19511: Error received from media manager layer, error text:
SBT error = 7011, errno = 106, sbtopen: system error

这个错误的原因我是在这篇 文章 中找到的。这个错误在一般情况下不会遇到,由于实际操作的系统中有两套 Oracle 数据库并分别运行一个实例(不知道当初为什么不直接运行两个实例),所以它使用了两个不同 Linux 用户来进行管理,这就产生了恢复过程中的操作权限问题。解决办法很简单,操作如下:

chown -R orasug:dba /opt/tivoli/tsm/client

更改权限后,运行重新执行下恢复脚本,即可成功从 TSM 的磁带库中提取备份文件并把 Oracle 数据库恢复到制定时间,需要说明的是,由于我们执行的是不完全恢复,因此必须在选项中加入 RESETLOGS 选项,这样的后果是系统重做日志文件或归档日志文件的 SCN 全部归零,这样数据库无法恢复到本次恢复演练前的状态,所以我们在演练前对数据库进行了冷备份,这样我们可以在演练成功后把 Oracle 数据库恢复到演练前的状态,如果你不太了解 Oracle 的冷备份,请参考这篇文章

相关日志:

Tagged with:
 

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>