Oct 14, 2016

MSSQL - Restaurar base de datos full y luego aplicar logs de transaccion via comandos TSM (tivoli data protection)

@author: Felipe Donoso Bastias, fdonoso@cl.ibm.com fecha: 14-10-2016

Esto fue algo que se realizó un cliente de mi actual empresa para Realizar una recuperación en el tiempo (PTR). El cliente solicitaba restaurar una base de datos en particular llamada BD1 a un punto determinado en el tiempo (10:00 hrs del 13-09-2016). La base de datos en cuestión existe en un servidor llamado (PROD)  y la procederemos a restaurar en el equipo QA con el nombre de BD2. Los pasos llevados a cabo para realizar esto son los siguientes:

Tener en cuenta que el ejecutable a usar tdpsqlc quedará en la ruta: c:\progra~1\tivoli\tsm\tdpsql\

1.- Como primer paso se procede a restaurar la base de datos usando la opcion /recovery=no (de ese modo quedará esperando o en modo restoring para luego aplicar los transaction logs). Para el caso de este cliente se tuvo que ocupar la opción stripe en 1.
tdpsqlc restore BD1 /BackupMethod=legacy /recovery=no /strip=1 /object=20160912221502\0000686C /TSMOPTFile="C:\Program Files\Tivoli\TSM\TDPSql\dsm_restore_c030.opt" /TSMPassword=eyre1205 /sqlauth=sql /SQLUser=systsm /SQLPassword=xxxx /fromsqlserver=PROD /SqlServer=tcp:QA /logfile=C:\temp\restore.log /into=BD2 /replace /mountwait=yes

Al terminar de restaurar la base de datos esta quedará con el estado restoring lo cual está correcto (a modo ejemplo):

2.-  Luego se debe obtener el OBJECTID de los respaldos de logs de transaccion para poder realizar la aplicación de estos. Para obtener el objectid desde la consola de TSM se ejecuta la siguiente consulta con los siguientes filtros:
tsm: TSMPREVIRED> select HL_NAME,BACKUP_DATE from backups WHERE NODE_NAME='PV1RPRSQC030_LOG' and BACKUP_DATE like '%2016-09-13%' and HL_NAME like '%\BD1\%' and BACKUP_DATE >= '2016-09-12 22:15:00.000000'

La anterior consulta devolverá el OBJECTID el cual tiene un formato similar a esto: 20160913025623\000048EC

Recordar que dicho Object ID también se puede sacar desde la herramienta misma de TDP revisando la columna OBJECT ID correspondiente a los respaldos de logs que queramos aplicar, ejemplo:

Como dato adicional es probable que el restore de los logs de transacción requiera del uso de un nuevo OPT (en general cuando se ocupa tivoli para respaldar bases, se utiliza un opt distinto  para el respaldo de los transaction logs). Frente a eso es quizás necesario ejecutar lo siguiente (tomando en cuenta que el opt lleva por nombre C:\Users\tsm_admin\Desktop\dsm_30_logs.opt):
C:\Program Files\Tivoli\TSM\baclient>dsmc -optfile=C:\Users\tsm_admin\Desktop\dsm_30_logs.opt

3.- Luego de identificados los object id  de los respaldos de transactions logs se procede hacer restore de estos usando la opción log=*. Se debe indicar en el /object todos los objectid que contengan
los respaldos de logs de transaccion que necesitaremos aplicar (estos pueden ir dividos por ",").  Importante aqui el uso del comando stopat para indicar a que momento se dejará la base de datos.
No olvidar ocupar la opción /recovery=yes para que deje abierta y operativa la base de datos.
tdpsqlc  restore BD1 recovery=yes log=* /stopat="09/13/2016 10:00:00"  /object=20160913025623\000048EC,20160913035626\00005BB0,20160913045619\000040FC,20160913055720\000057FC,20160913065607\000065EC,20160913075604\00006F50,20160913085606\00006C84  /TSMOPTFile="C:\Users\tsm_admin\Desktop\dsm_30_logs.opt" /sqlauth=sql /SQLUser=systsm /SQLPassword=xxx /fromsqlserver=PROD /SqlServer=tcp:QA  /mountwait=yes /into=Restore_PO

Esos son  todos los pasos ya que al ejecutar el comando anterior la base de datos quedará operativa (sin el status RESTORING). Aún así si llegase a quedar dicho status en la base aún se puede ejecutar el siguiente comando para dejarla lista y operativa:

RESTORE DATABASE BD2 WITH RECOVERY
GO
Esos son todos los pasos necesarios.

Saludos.
Para mayor información acerca de los comandos pueden recurrir al siguiente link: Restoring data by using the command-line interface http://www.ibm.com/support/knowledgecenter/SS8TDQ_7.1.6/ve.user/t_vesql_recovercli.html