Sidebar

A veces los mismos desarrolladores requieren cargar información a algunas bases de datos de sus ambientes de prueba, por lo que para el DBA estas tareas se pueden tornar un tanto monótonas o repetitivas cuando ésta área están en días de pruebas. Incluso si das de alta una instancia en tu archivo de interfaces con su puerto e ip correcta podrás cargar un respaldo remoto.

Este shell lo que hace es cargar respaldos, sin necesidad de arriesgar la seguridad y aparte repara los logines -–Esto porque normalmente los respaldos vienen con usuarios diferentes de los que existen en tu producción a los que están en tu ambiente de desarrollo--- al ejecutar este shell solamente pedirá el nombre de la instancia,
la base de datos (su nombre) y el nombre del respaldo con la ruta completa.

El script se encargará se buscar en la ruta "/filesystem/dba_scripts/seguridad/TU_ARCHIVO_DONDE_LEERÁ_LOS_PASSWORDS.txt"
el password (sa o sa_role) del manejador para poderse conectar mediante “isql” a tu instancia donde vas a cargar.
Es importante configurar la seguridad del archivo y directorio donde estará esta contraseña.

El archivo de passwords deberá llevar la siguiente estructura (comandos a seguir):

Desde tu sistema operativo UNIX:

Con el editor vi, hacer el siguiente archivo.
$ pwd
/filesystem/dba_scripts/seguridad/
$ vi TU_ARCHIVO_DONDE_LEERÁ_LOS_PASSWORDS.txt

#usuario,instancia,contraseña, ojo: línea comentada.
sa,INSTANCIA1,instancia1_sa
sa,INSTANCIA2,instancia2_sa
sa,INSTANCIA_remota,instancia_remota_sa

Ya una vez configurado tu archivo de contraseñas podrás crear tu shell satisfactoriamente.
Nota: Todos los paths del shell que hayas configurado deben de coincidir con las rutas de tu server.

Instrucciones para cargar la info:

Es importante que el respaldo no esté comprimido antes de ejecutar el shell, de otra forma tendra errores.
Si estas desde un sistema operativo SUN puedes modificar la palabra "compress" por "gzip"


---------------------------------------------------------------------------
---------------------------------------------------------------------------

$pwd
/filesystem/desarrollo/dba

$ls -lrt carga_respaldo.sh
-rwxr----- 1 sybase sybase 2854 Feb 18 13:43 carga_respaldo.sh

$ carga_respaldo.sh


........:::::::::: Carga de Respaldos ::::::::::::.........
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Nombre de la Instancia:
INSTANCIA1 /*------------------------------------------- > Puede ser INSTANCIA_REMOTA */
Nombre de la Base de Datos:
bdprueba
Ruta completa, junto con el archivo(sin comillas) :
/filesystem/respaldos_produccion/bdprueba.dump



Estos son los datos introducidos:

Instancia: INSTANCIA1
Base de Datos: bdprueba
Ruta + Archivo: /filesystem/respaldos_produccion/bdprueba.dump


Son correctos los datos, si (s), no (n).
s
HORA DE INICIO:
Wed Aug 10 10:05:56 CDT 2005

---------------------------------------------------------------------------
---------------------------------------------------------------------------

Aqui carga el respaldo, repara logins, vuelve a comprimir el dump.


El shell es el siguiente, espero sea de su ayuda.

 

/***********************************************/
/* SHELL (UNIX) Carga_respaldo */
/* http://www.dbasupport.com.mx */
/* Author: Carlos I. Contreras, DBA */
/***********************************************/

function DefineVariables {
#Se definene las variables de ambiente
export SYBASE=/FILESYSTEM_DEL_ASE/sybase
export PATH=/ FILESYSTEM_DEL_ASE /sybase/ASE-12_0/bin:/ FILESYSTEM_DEL_ASE /sybase/OCS-12_0/bin:$PATH
export SHLIB_PATH=/ FILESYSTEM_DEL_ASE /sybase/ASE-12_0/lib:/ FILESYSTEM_DEL_ASE /sybase/FTS-12_0/lib:/ FILESYSTEM_DEL_ASE /sybase/OCS-12_0/lib:/usr/lib:/lib:/usr/lib/Motif1.H
export SYBASE_OCS=OCS-12_0
export SYBASE_ASE=ASE-12_0
SCRIPTS=/filesystem/dba_scripts/TU_NOMBRE
ISQL=$SYBASE/OCS-12_0/bin/isql
}

echo " "
echo " "

echo "........:::::::::: Carga de Respaldos ::::::::::::......... "
echo ":::::::::::::::::::::::::CCC::::::::::::::::::::::::::::::: "
echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: "
echo " "
function Obten_Datos {
echo "Nombre de la Instancia: "
read Instancia?
Instancia=$(echo $Instancia | tr "[:lower:]" "[:upper:]")
echo "Nombre de la Base de Datos:"
read BaseDatos?
echo "Ruta completa, junto con el archivo(sin comillas) :"
read Ruta?

echo " "
echo " "
echo " "

echo "Estos son los datos introducidos:"
echo " "
echo "Instancia: " $Instancia
echo "Base de Datos: " $BaseDatos
echo "Ruta + Archivo: " $Ruta

echo " "
echo " "
}

DefineVariables
Obten_Datos
varpaso="'$Ruta'"
echo "Son correctos los datos, si (s), no (n)."
read c?
if [ $c = "n" ]
then
Obten_Datos
fi

print 'HORA DE INICIO: '
date

Instancia=$(echo $Instancia | tr "[:lower:]" "[:upper:]")
for i in $(cat /filesystem/dba_scripts/seguridad/TU_ARCHIVO_DONDE_LEERÁ_LOS_PASSWORDS.txt)
do
var1=$(echo $i | cut -f2 -d,)
echo $Instancia

if [ "$var1" = "$Instancia" ]
then
user=$(echo $i | cut -f1 -d,)
pass=$(echo $i | cut -f3 -d,)
band=1
break
fi
done

echo "Espere por favor..."

rm $SCRIPTS/salida.out
function consulta {
$ISQL -U$user -P$pass -S$Instancia << EOF >> $SCRIPTS/salida.out
select @@servername
go
use master
go
killusuarios $BaseDatos
go
load database $BaseDatos from $varpaso
go
online database $BaseDatos
go
EOF
}

consulta

isql -Usa -S$Instancia -P$pass << EOF| sed 's/-//g'
|grep -v rows > /tmp/upd_log.$$
use $BaseDatos
go
select 'update sysusers set suid=', sl.suid+500, 'where name=',"'"+sl.name+"'"
from sysusers su, master..syslogins sl
where su.name=sl.name
go
quit
EOF

isql -Usa -S$Instancia -P$pass << EOF|grep -v "suid "|sed 's/-//g'
|grep -v rows > /tmp/upd_usr.$$
use $BaseDatos
go
select 'update sysusers set suid=',sl.suid, 'where name=',"'"+sl.name+"'"
from sysusers su, master..syslogins sl
where su.name=sl.name
go
quit
EOF

isql -U$user -S$Instancia -P$pass << EOF3|grep -v affected
use $BaseDatos
go
:r /tmp/upd_log.$$
go
:r /tmp/upd_usr.$$
go
delete sysalternates
go
quit
EOF3

rm -f /tmp/upd_log.$$
rm -f /tmp/upd_usr.$$


compress $Ruta
cat $SCRIPTS/salida.out
echo " "
echo "Ha finalizado la carga de respaldos!"
print 'Fecha y hora de Finalizacion'
date


Tips BD