jueves, 17 de febrero de 2011

Migrando desde Sql Server 2005 Hacia Oracle

Algunos hemos tenido la necesidad de migrar desde Bases de datos de SQL Server hacia Oracle,  cuando son tablas sencillas, bastaría un DTS pero en esquemas más complejos esta opción no es viable, Oracle ha ampliado su herramienta de Oracle SQL developer para incorporar esta  funcionalidad.
Aquí va un pequeño Ejemplo con la base de datos de Sql Server AdventureWorks :).

El primer paso es descargar el sql developer de la página de oracle http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

Luego vamos a necesitar un driver JDBC para SQL Server, lo podemos descargar de la pagina  http://sourceforge.net/projects/jtds/files/jtds/1.2.5/

Despues de abrir el SQL Developer vamos a la opción Preferences del menu Tools

lunes, 7 de febrero de 2011

Instalando Oracle 11g R2 en ASM en HP-UX

En dias pasados, vimos como instalar el  ASM 11g R2 ahora sobre este ASM, realizaremos la instalación de la base de datos Oracle 11g R2. 

De nuevo asumimos que el usuario Oracle y los grupos DBA y Oinstall se encuentran creados y con sus respectivos permisos

PREREQUISITOS

Memoria

-- Requisitos Minimos de Memoria: Al menos 1 Gb de RAM
-- Requisitos de memoria swap
  • Entre 1024 MB and 2048 MB 1.5 del tamaño de la memoria RAM
  • Entre 2049 MB and 8192 MB Igual al tamañao de la memoria RAMMas de 
  • 8192 MB 0.75 del tamaño de la memoria RAM
Parches de Sistema Operativo
PHSS_35979: s700_800 11.23 linker + fdp cumulative patch
PHSS_35978: s700_800 11.23 ac++ runtime (ia: a.06.14, pa: a.03.76)
PHCO_35524: s700_800 11.23 lvm commands patch
PHKL_35478: s700_800 11.23 shmget(2) cumulative patch
PHCO_36673: s700_800 11.23 libc cumulative patch
PHKL_35029: s700_800 11.23 ksleep cumulative patch For HPIA 11.31:
PHKL_35900: 11.31 evacd performance, kvaddr leak panic
PHKL_36248: 11.31 esctl cumulative patch
PHKL_36249: 11.31 esdisk cumulative patch
PHKL_35936: 11.31 call to read(2) or write(2) may incorrectly return -1

miércoles, 19 de enero de 2011

Implementando Oracle Virtual Private Database

Virtual Private Database (VPD) es una de las funcionalidades que nos brinda Oracle Enterprise Edition  para poder realizar restricciones a nivel de filas esto también se podría realizar con vistas o variables de contexto, pero es mucho más simple con VPD. Aquí va un ejemplo de cómo podemos realizarla





**** Nos conectamos como usuarios Sys
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jan 13 13:04:06 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production

sábado, 8 de enero de 2011

Instalando Oracle ASM 11g R2 en HP-UX

En versiones anteriores, el ASM hacia parte del instalador de la base de datos, a partir de Oracle 11g R2, el ASM(Automatic Storage Management)  hace parte de Oracle Grid Infrastructure, así que si queremos que nuestra base de datos use ASM, debemos instalar Oracle Grid Infrastructure antes de instalar la base de datos.aquí va una guia de como hacerlo para un servidor standalone.


PREREQUISITOS
Memoria
-- Requisitos Minimos de Memoria : 4Gigas  Para ver la memoria en HP-UX
 /usr/contrib/bin/machinfo | grep -i Memory
-- Requisitos Minimos de Memoria Swap : 4Gigas Para ver la memoria swap en HP-UX
/usr/sbin/swapinfo –a

Parches de Sistema Operativo
HP-UX 11iV3 patch Bundle Sep/ 2008 (B.11.31.0809.326a) tal vez lo encuentres como PHKL_40682
PHCO_40381 11.31 Disk Owner Patch
PHKL_38038 vm cumulative patch
PHKL_38938 11.31 SCSI cumulative I/O patch
PHKL_39351 Scheduler patch : post wait hang
PHSS_36354 11.31 assembler patch
PHSS_37042 11.31 hppac (packed decimal)
PHSS_37959 Libcl patch for alternate stack issue fix (QXCR1000818011)
PHSS_39094 11.31 linker + fdp cumulative patch
PHSS_39100 11.31 Math Library Cumulative Patch
PHSS_39102 11.31 Integrity Unwind
PHSS_38141 11.31 aC++ Runtime+

Creación de Links
# cd /usr/lib
# ln -s libX11.3 libX11.sl
# ln -s libXIE.2 libXIE.sl
# ln -s libXext.3 libXext.sl
# ln -s libXhp11.3 libXhp11.sl
# ln -s libXi.3 libXi.sl
# ln -s libXm.4 libXm.sl
# ln -s libXp.2 libXp.sl
# ln -s libXt.3 libXt.sl
# ln -s libXtst.2 libXtst.sl++

Creamos el Oracle Home para la instalación
/oracle/app/oracle/product/11.2.0/grid
Configuramos los discos fisicos para el ASM
Para asegurarnos que los discos estan disponibles, ingresamos a la carpeta /dev/rdisk como usuario root y con la instrucción 
/usr/sbin/ioscan -fun -C disk podemos verlo
y cambiamos los permisos sobre los discos que usaremos

 



Instalador
Iniciamos el Instalador para un servidor standalone

La redundancia sera externa, por que sera manejada por Hardware con un RAID 10, así que no necesitamos que el ASM lo haga



Eligiendo en ORACLE_BASE y el ORACLE_HOME
 
Con esto hemos finalizado la instalacion del ASM :)


jueves, 6 de enero de 2011

Instalando Web Logic 10.32 en HP-UX

Instalando Web Logic 10.32 en HP-UX 11.31
Lo primero son los prerequisitos de sistema operativo 
Prerequisitos

Parches de Sistema Operativo
PHKL_35900:11.31 evacd performance, kvaddr leak panic
PHKL_36248:11.31 esctl cumulative patch
PHKL_36249:11.31 esdisk cumulative patch
PHKL_35936:11.31 call to read(2) or write(2) may incorrectly return -l
PHSS_36354
PHSS_37042
PHSS_37959
PHSS_39100
PHSS_39102
PHCO_40381

Para verificar utilice la opción como usuario root
Swlist –l patch |grep PHCO_40381


Crear links 
En  /usr/lib como root










Parametros de Kernel
Para verificar utilice la opción como usuario root
kcweb


ksi_alloc_max (nproc*8)
executable_stack 0
max_thread_proc 1024
maxdsiz 1073741824 (1 GB)
maxdsiz_64bit 2147483648 (2 GB)
maxssiz 134217728 (128 MB)
maxssiz_64bit 1073741824 (1 GB)
maxuprc ((nproc*9)/10)
msgmap (msgtql+2)
msgmni (nproc)
msgseg 32767
msgtql (nproc)
ncsize (ninode+1024)
ncsize (ninode+1024)
nfile (15*nproc+2048)
nflocks (nproc)
ninode (8*nproc+2048)
nkthread (((nproc*7)/4)+16)

Comprobando la version de JAVA 

cd /opt/java6/bin
./java -version
java version "1.6.0.01"
Java(TM) SE Runtime Environment (build 1.6.0.01-jinteg_06_jun_2008_13_24-b00)
Java HotSpot(TM) Server VM (build 1.6.0.01 jinteg:06.07.08-04:50 IA64, mixed mode)

 
Creamos el directorio home
/oracle/app/oracle/product/wl_10.32

Exportar la Variable del JAVA_HOME
export JAVA_HOME=/opt/java6/jre

Asumimos que el usurario Oracle y los grupos ya estan creados, tambien 
que tenemos suficiente memoria y espacio en disco y en  carpeta temporal.

Iniciando la instalación en entorno grafico
$JAVA_HOME/bin/java -d64 -jar wls1032_generic.jar





Sin actualizaciones de seguridad



















Al final podemos continuar el instalador si queremos crear o actualizar  el dominio :)

martes, 28 de diciembre de 2010

Backup Automático en Sql Server Express

El sql server express es una herramienta muy útil, desafortunadamente no cuenta con el sql server agent, asi que ¿como hacer para programar los backups automáticos?
 Lo haremos utilizando El programador de tareas de windows y el OSQL

1. Lo primero sera crear un dispositivo de backup para nuestra base de datos de prueba.


2.Lo segundo crear el script para realizar el backup a través de la utilidad OSQL (Object Structured Query Language), este script lo ponemos en un archivo con extension  .bat
 Osql -S Nombre_Servidor -U Login(p.ejemplo sa)  -P clave -Q "backup database Prueba to BKP_Pruebas WITH INIT,NOUNLOAD"

3.Finalmente ponemos en el programador de tareas de windows. :)




lunes, 27 de diciembre de 2010

Autonomous Transaction


Es una funcionalidad del PL/SQL en la cual un subprograma puede actuar independientepemente de la transacción que lo contiene.




Miremos como funciona con este ejemplo ....

CREATE TABLE tabla1 (campo int);
CREATE TABLE tabla2 (campo int);
CREATE SEQUENCE secuencia_s ;


/* Este es un trigger normal de inserción, si la transaccion se deshace,
se deshace la insercion en la tabla2 */

CREATE OR REPLACE TRIGGER pa_trigger
AFTER INSERT ON tabla1 FOR EACH ROW
DECLARE
 i PLS_INTEGER;
BEGIN
  select secuencia_s.nextval into i from dual;
  INSERT INTO tabla2
  VALUES
  (i);
END;
 

INSERT INTO tabla1 VALUES (1);
SELECT COUNT(*) FROM tabla1;
count(*)
1
SELECT COUNT(*) FROM tabla2;
count(*)
1
Rollback;
SELECT COUNT(*) FROM tabla1;
count(*)
0
SELECT COUNT(*) FROM tabla2;
count(*)
0


Ahora miremoslo con la transacción autónoma

CREATE OR REPLACE TRIGGER PA_trigger
AFTER INSERT ON tabla1 FOR EACH ROW
DECLARE
  PRAGMA AUTONOMOUS_TRANSACTION;
 i PLS_INTEGER;
BEGIN
  select secuencia_s.nextval into i from dual;
  INSERT INTO tabla2
  VALUES
  (i);
  COMMIT;
END;

/*Realizamos la inserción */
 INSERT INTO tabla1 VALUES (1);
SELECT COUNT(*) FROM tabla1;
count(*)
1
SELECT COUNT(*) FROM tabla2;
count(*)
1

/* si deshacemos la transacción  de la tabla1 */
Rollback;
SELECT COUNT(*) FROM tabla1;
count(*)
0


/* la transacción de la tabla2 quedara confirmada, Es ideal para  manejar logs */
SELECT COUNT(*) FROM tabla2;
count(*)
1