TSM下db2备份及恢复
1. 安装TSM客户端软件
2. 编辑用户环境文件 (db2用户)如果db2是64位,tsmclient要64位 #vi $HOME/.profile加入(db2的64位版本,要安装bin64,相关bin改为bin64) export DSMI_DIR=/usr/tivoli/tsm/client/api/bin64(标识 API 可信代理进程文件(dsmtca)所在的用户定义目录路径)
export DSMI_CONFIG=/usr/tivoli/tsm/client/api/bin64/dsm.opt (标识 dsm.opt 文件(它包含 TSM 用户选项)的用户定义目录路径。与另外两个变量不同,此变量应包含全路径和文件名)
export DSMI_LOG=/usr/tivoli/tsm/client/ba/bin/dsmerror.log (标识将在其中创建错误日志(dsierror.log)的用户定义目录路径)
3. 配置/usr/tivoli/tsm/client/api/bin/dsm.opt及/usr/tivoli/client/api/bin/dsm.sys #vi /usr/tivoli/tsm/client/api/bin/dsm.opt SErvername #vi /usr/tivoli/client/api/bin/dsm.sys SErvername /tmp/tsmdb2.log (要与DSMI_LOG下的路径一致,并且要有 相应的读写权限) 这一行一定要用到 4. 运行命令dsmapipw,(位于db2实例目录/sqllib/adsm中),tsm api与server连接 的密码. 设置TSM密码 这里要用root用户,并且先运行 . /home/db2inst1/.profile。然后再运行 /home/db2inst1/sqllib/adsm/dsmapipw 先输入旧密码,再输入新密码。(不一定要改)node 的密码 输完之后,仔细看有没有错误产生。完了之后,你可以在/etc/security/adsm下面看到一个TSM.PWD文件,这里包含了你新输入的密码,当然是加密过后的。 5. 修改db2相关参数: 在使数据库进入备份模式之前,需要使用归档日志. a)确保没有用户使用Db2: #db2 list applications for db dbname #db2stop force #db2start b)db2版本8.2以上,不必再为日志文件配置用户出口。不得不分别发送日志 文件并试图断定应使用哪个日志文件的日子已一去不复返。需要做的只是在备份命令中加上短语 include logs。一旦有了一次原始备份,并且所有日志均完好无损,即可保证不损失任何数据。 运行db2 update db cfg for db using logretain on即可。 c)db2版本低于8.2.需要启用用户出口(需要编译相关用户出口程序) # db2 update db cfg for sample using userexit on 启用用户出口 #db2 update db cfg for sample using logretain on 启用归档日志 6. 开启上述参数后,数据库处于backup pending状态,要求做一次数据库的离 线全备份。 #db2 backup db dbname use tsm 7. 在线备份命令 db2>=8.2时 #db2 backup db db2<8.2时 #db2 backup db 8. 数据库恢复 a)使用db2adutl和db2 list history察看备份纪录. #db2adutl #db2 list history backup all for db_name b)恢复备份历史纪录(每次backup,不论类型,都会备份历史纪录文件)。这里的时间戳应该是最新的 #db2 restore db c)使用db2的恢复帮助工具: #db2ckrst –d d)恢复数据库 #db2 restore db e) 这时数据库处于rollforward-pending state的状态,需要做roll forward 操作: #db2 rollforward db 9. 关于是否要设置logarchmeth1(主日志归档方法)参数问题: 此参数指定已归档日志的主要目标的介质类型。 如果更新 userexit 或 logretain 配置参数,将自动更新 logarchmeth1,反之亦然。所以上面配置db2参数时,已经隐式配置了它. 注意,如果您要使用 userexit 或 logretain, 必须将 logarchmeth2 设置为 OFF。 10. 编译用户出口 复制sqllib\\samples\\c\\db2uext2.cadsm为db2uext2.c a)windows下 修改下列参数: #define BUFFER_SIZE 4096 /* transmit or receive the log */ /* file in 4k portions */ #define AUDIT_ACTIVE 1 /* enable audit trail logging */ #define ERROR_ACTIVE 1 /* enable error trail logging */ #define AUDIT_ERROR_PATH \"c:\\\\mylogs\\\\\" /* path must end with a slash */ #define AUDIT_ERROR_ATTR \"a\" /* append to text file */ 运行 cl db2uext2.c –I 复制db2uext2.ext到sqllib\\adm下. b)linux下 修改下列参数: #define BUFFER_SIZE 4096 /* transmit or receive the log */ /* file in 4k portions */ #define AUDIT_ACTIVE 1 /* enable audit trail logging */ #define ERROR_ACTIVE 1 /* enable error trail logging */ #define AUDIT_ERROR_PATH \"/export/home/db2inst1/tsm/\" /* path must end with a slash */ #define AUDIT_ERROR_ATTR \"a\" /* append to text file */ 运行gcc –I< tsm api目录>/bin/samples -L/usr/lib -lApiDS -o db2uext2 db2uext2.c 复制到$HOME/sqllib/adm下 c)Aix下(安装了Visual Age C Compiler) 修改下列参数: #define BUFFER_SIZE 4096 /* transmit or receive the log */ /* file in 4k portions */ #define AUDIT_ACTIVE 1 /* enable audit trail logging */ #define ERROR_ACTIVE 1 /* enable error trail logging */ #define AUDIT_ERROR_PATH \"/home/db2inst1/tsm/\" /* path must end with a slash */ #define AUDIT_ERROR_ATTR \"a\" /* append to text file */ 运行cc –I< tsm api目录>/bin/samples -L/usr/lib -lApiDS -o db2uext2 db2uext2.c 复制到$HOME/sqllib/adm下 我这里在crontab里有个命令,在每天00:00执行 /db2adutl delete full keep 30 db $DB password abcd nodename a80 owner db2inst1 without prompting 用来删除TSM的磁带上备份时间超过30天的备份文件。前几天我把磁带库中不能用的磁带通过checkout命令给拿出来了。结果从前天开始,定时执行的那条命令出现了以下错误: db2adutl delete logs between S0000000.log and S0000638.log DB ITM without promptin 因篇幅问题不能全部显示,请点此查看更多更全内容