Migración de Base de Datos
Sybase a DB2 con SQLWays
6.0
Número de Sesión 3796A
Diana Lugova, Ispirer Systems Ltd
Pavel Leonov, Ispirer Systems Ltd
#ibmiod
Agenda
• Sobre Ispirer Systems
• Modernización y Migración
• Impulsores del Mercado para Migración
• Por qué Salir de Sybase
• Consideración de la Migración con SQLWays 6.0 de Ispirer
• Especificidad de Migración de Sybase a DB2
• Demo en Vivo
• Preguntas y Respuestas
1
#ibmiod
Sobre Ispirer Systems
Ispirer Systems ha estado trabajando en el campo de migración
de bases de datos y aplicaciones desde 1999
Más de 400 empresas de todo el mundo utilizan nuestro software
incluyendo Barclays Capital, Citigroup, ChevronTexaco, JP
Morgan, EDS, Shell, Fujitsu, Accenture, Carrefour, CAP Gemini,
Thomson Reuters y muchas otras
El producto estrella es una herramienta de migración de
vanguardia SQLWays
2
#ibmiod
Clientes
3
#ibmiod
Trabajando con Ispirer –
Modelo de Cooperación
 Licencias del Software
 SQLWays está licenciado para equipo de servicios IBM o para
terceros.
 El costo de la licencia es por proyecto, no por usuario y depende
del alcance del proyecto, duración y complejidad.
 Después de la terminación del proyecto - período de garantía
(normalmente 25-30% de la duración del proyecto)
 Servicios de Migración
 Ispirer realiza migración y pruebas de todos los objetos (datos,
tablas, esquemas y lógica de negocio).
 IBM y/o SI hace las pruebas, despliegue e integración in situ
4
#ibmiod
Modernización y Migración
Cómo tratar con las aplicaciones heredadas:
En la encuesta de 2011 habían 4 razones principales para la
modernización de aplicaciones heredadas:
 Facilitar la integración con otras aplicaciones en su cartera
 Reducir los costes de mantenimiento
 Realizar solicitudes de cambio de usuario más rápidamente
 Eliminar hardware y software sin soporte
5
Reemplazo de
Aplicaciones
Redesarrollo de
Aplicaciones
Migración de
Aplicaciones
No Hacer Nada
#ibmiod
Impulsores del Mercado para Migración
Impulsor
del Mercado 1: Coste
•
o ¿Paga usted demasiado por su base de datos?
• Los sistemas heredados y diverso número de plataformas
requieren alto mantenimiento en términos de las licencias y el
coste del personal.
Impulsor del Mercado 2: Rendimiento
o Está usted satisfecho con el rendimiento de base de datos?
• El rendimiento es peor de lo esperado /requerido.
•Impulsor del Mercado 3: Competencia
o ¿Está usted o su sistema de TI listo para mantener la
competitividad en los próximos 3-5 años?
• Nuevas Tecnologías/Hosting/SaaS/Nube/
6
#ibmiod
Por qué Salir de Sybase
ASE ya no es
Estratégico
Prácticas de
precios de Sybase
de rapiña
Rendimiento
No hay inversiones
en investigación y
desarrollo en ASE
No hay hoja de ruta
futura
7
#ibmiod
Consideración de la Migración con SQLWays 6.0
de Ispirer
SQLWays convierte automáticamente los objetos :
 Procedimientos Almacenados (SP)
 Funciones
 Triggers
 DDL
 Datos
de Sybase ASE a IBM DB2.
Además de lógica de negocio de servidor, SQLWays también convierte
las consultas SQL en las aplicaciones front-end y scripts.
SQLWays es capaz de convertir procedimientos y funciones a Java y
.NET.
8
#ibmiod
Mapeo de Proceso de Migración
Migración
de Base de
Datos
Migración de
Lógica de
Negocio/SQL
Scripts
 Tablas,
Datos
 Índices,
Vistas
 Procedimientos
Almacenados,
Funciones y
Triggers
 Sentencias de
SQL
Incorporado y
APIs de bases
de datos
9
Pruebas
 Pruebas de
esquema de
base de datos y
de datos
 Pruebas
integradas de
aplicaciones y
bases de datos
Despliegue
 Soporte de
base de datos
convertida
 Soporte de
Lógica de
Negocio/
Aplicación
 Funcionamiento
paralelo en
entorno de
prueba
#ibmiod
SQLWays - Migración no Emulación
• Factores de Éxito de Migración – Ventajas Directas
• Coste de Migración Reducido
• Tiempo del Proyecto Reducido
30-80% más barato
2 – 5 veces más rápido
Ahorre en Licencias
• Coste Reducido
y Mantenimiento
• Rendimiento Mejorado
10
#ibmiod
Migración de Sybase y SQL a DB2 con
SQLWays 6.0
Capacidades y Características de SQLWays

SQLWays convierte esquema de base de datos (DDL), datos y lógica de negocio de
servidor de Sybase ASE/ a IBM DB2 z/OS o IBM DB2 LUW

Diseñado para bases de datos empresariales - capaz de tratar con miles de tablas y
grandes volúmenes de datos

Para obtener más información acerca de migración específica de diferentes
plataformas a DB2 por favor siga el enlace http://www.ispirer.com/products/db2migration
• Versiones Soportadas:
 IBM DB2 para Linux, Unix y Windows 10, 9.x, 8.x, 7.x, 6.1 y 5.2
 IBM DB2 para z/OS y OS/390 9.x, 8.x, 7.x, 6.x y 5.x
 IBM DB2 para iSeries y AS/400 V5R4, V5R3, V5R2, V5R1, V4R5 y V4R4
11
#ibmiod
5 Etapa - Proyecto de Migración
Migración se basa en SQLWays, un producto de migración de bases
de datos capaz de migrar datos, esquemas de bases de datos y lógica
The
main project steps are as follows:
de negocio.
12
Etapa 1:
Evaluación
Etapa 2:
Diseño
Etapa 3:
Migración Experimental (POC/Migración de Prueba)
Etapa 4:
Migración de Producción
Etapa 5:
Pruebas e Implementación
#ibmiod
Especificidad de Migración de Sybase a DB2
 Aunque las tareas de conversión y las soluciones varían de un
proyecto a otro, muchas de ellas son típicas de cualquier migración.
Todas las conversiones que se describen a continuación son
hechas por SQLWays automáticamente.
DDL
 Ambas Sybase ASE e IBM DB2 soportan la sentencia CREATE
TABLE, pero hay muchas diferencias de sintaxis.
Tipos de
Datos
Sybase ASE
CREATE TABLE employees
IBM DB2
CREATE TABLE employees
(
(
)
13
id NUMERIC(5),
id NUMERIC(5,0),
hire_date DATETIME,
hire_date TIMESTAMP,
dept_id TINYINT,
dept_id SMALLINT,
dept_id_small SMALLINT,
dept_id_small SMALLINT,
image_file IMAGE,
image_file BLOB(2G) NOT LOGGED,
text_file TEXT
text_file CLOB(2G) NOT LOGGED
)
#ibmiod
Especificidad de Migración de Sybase a DB2

Palabras Reservadas

Sybase ASE y IBM DB2 utilizan diferentes conjuntos de palabras reservadas,
así que algunos nombres de columna ahora tienen que ser citados en las
consultas de IBM DB2.
Sybase ASE
SELECT product_id, OLD
FROM product_data;
IBM DB2
SELECT product_id, “OLD” FROM
product_data;
 Consultas y Código T-SQL
 Es necesario modificar las sentencias SQL principalmente para cambiar la
sintaxis de funciones y expresiones. T-SQL debe ser completamente convertido
a sintaxis de procedimientos de IBM DB2 SQL.
 Combinaciones Externas - Sybase ASE soporta la sintaxis específica para
combinaciones externas que se utiliza ampliamente en aplicaciones viejas.
Sybase ASE
SELECT e.name, d.name
SELECT e.name, d.name
FROM employees e, departments d
FROM employees e LEFT OUTER JOIN
WHERE e.dept_id *= d.id;
14
IBM DB2
departments d ON e.dept_id = d.id;
#ibmiod
Especificidad de Migración de Sybase a DB2
• Devolución de conjuntos de resultados
o En Sybase ASE para devolver el conjunto de resultados, es suficiente sólo para
iniciar la sentencia SELECT dentro del SP. En IBM DB2 usted tiene que declarar
un cursor y dejarlo abierto en el SP con el fin de devolver el conjunto de
resultados
Sybase ASE
IBM DB2
CREATE PROCEDURE get_salaries
(d_id INT)
CREATE OR REPLACE PROCEDURE
get_salaries(d_id INTEGER)
as
LANGUAGE SQL
BEGIN
SELECT id, name, salary
FROM employees
DECLARE SWV_cursor_var CURSOR
WITH RETURN FOR SELECT id, name,
salary
WHERE dept_id = d_id
FROM employees
ORDER BY name;
WHERE dept_id = d_id
ORDER BY name;
OPEN SWV_cursor_var;
END
15
#ibmiod
Especificidad de Migración de Sybase a DB2
Valor NULL en operaciones de concatenación de cadenas
Sybase
create procedure sp_NULL_check
@par1 CHAR(50), @par2
char(50)
AS
BEGIN
SELECT col3,
col1 + col4 as col1_col4,
col2 + col5 as col2_col5,
col6
INTO #tmp_tab
FROM Tab1
WHERE col1 = @par1
and col2 = @par2
END
DB2
create or replace procedure sp_NULL_check(v_par1
CHAR(50), v_par2 CHAR(50))
LANGUAGE SQL
BEGIN
DECLARE GLOBAL TEMPORARY TABLE tt_tmp_tab AS
(
SELECT col3,
COALESCE(col1,'') || COALESCE(col4,'') as col1_col4,
col2 || col5 as col2_col5,
col6
FROM Tab1
) DEFINITION ONLY on commit preserve rows;
INSERT INTO SESSION.tt_tmp_tab SELECT col3,
COALESCE(col1,'') || COALESCE(col4,'') as col1_col4,
col2 || col5 as col2_col5,
col6
FROM Tab1
WHERE (col1 is NULL AND v_par1 IS NULL OR col1 =
v_par1)
and col2 = v_par2;
END
16
#ibmiod
Información de Apoyo
• Para convertir el ejemplo proporcionado correctamente hay dos
características que pueden ser aplicadas:
- Archivo Tables_ddl.sql, colocado en la misma ubicación con el
archivo SQL es convertido y contiene el DDL de la tabla(s) que se
utiliza dentro del objeto de lógica de negocio. El siguiente DDL es
un ejemplo:
• CREATE TABLE Tab1
• (
• col1 char(50) NULL,
• col2 char(50) NOT NULL,
• col3 int,
• col4 char(50) NULL,
• col5 char(50) NOT NULL,
• col6 int NULL )
• go
- La conversión se puede ejecutar con la conexión a la base de datos,
donde la(s) tabla(s) correspondiente(s) es creada.
17
#ibmiod
Concatenación de Valores de Columna a una
Variable
Sybase
CREATE PROCEDURE sp_listagg @par1
int,@par2 int as
DECLARE @var varchar(255)
SELECT col1,
SWT_Al.col2,
col3
INTO #tmp_tab
FROM tab_listagg SWT_Al
WHERE SWT_Al.col1 [email protected]
AND SWT_Al.col2 [email protected]
UPDATE #tmp_tab
SET @var = @var + A.col3
FROM #tmp_tab A
WHERE [email protected]
AND A.col2 [email protected]
DB2
CREATE OR REPLACE PROCEDURE
sp_listagg(@par1 INTEGER,@par2 INTEGER)
LANGUAGE SQL
BEGIN
DECLARE @var VARCHAR(255);
DECLARE GLOBAL TEMPORARY TABLE
tt_tmp_tab AS
(
SELECT col1,
SWT_Al.col2,
col3
FROM tab_listagg SWT_Al
) DEFINITION ONLY on commit preserve rows;
INSERT INTO SESSION.tt_tmp_tab SELECT col1,
SWT_Al.col2,
col3
FROM tab_listagg SWT_Al
WHERE SWT_Al.col1 = @par1
AND SWT_Al.col2 = @par2;
SELECT COALESCE(@var,'') || LISTAGG(A.col3,'')
WITHIN GROUP(ORDER BY A.rowid)
INTO @var from SESSION.tt_tmp_tab A WHERE
(A.col1 = @par1
AND A.col2 = @par2);
PRINT @var
CALL DBMS_OUTPUT.PUT_LINE(@var);
END
18
#ibmiod
Soporte de Funciones Incorporadas
Sybase
DB2
CREATE PROCEDURE sp_convert_109
AS
BEGIN
CREATE OR REPLACE PROCEDURE
sp_convert_109()
LANGUAGE SQL
BEGIN
SELECT convert(char, getdate(), 109)
END
DECLARE SWV_cursor_var CURSOR
WITH RETURN TO CLIENT FOR SELECT
swf_ase_convert(CURRENT TIMESTAMP,
109) FROM SYSIBM.SYSDUMMY1;
OPEN SWV_cursor_var;
END
Información de Soporte
• Cuando se realiza la conversión de funciones incorporadas a DB2, SQLWays proporciona
automáticamente la función incorporada equivalente.
•
• Por ejemplo, hay función GETDATE () que se sustituyó por equivalente CURRENT_TIMESTAMP
en DB2.
•
• Si no hay ninguna función apropiada, se proporciona la función SQL UDF en lugar. Esta función
puede ser extendida para soportar más y más características.
•
• Ejemplo muestra que la función CONVERT fue reemplazada con SWF_ASE_CONVERT.
Actualmente como se puede ver, sólo un formato proporcionado es soportado - 109. Pero esto
puede fácilmente ser reescrito para soportar otros formatos también.
19
#ibmiod
Soporte de Conversión de SQL Dinámico
Sybase
DB2
CREATE PROCEDURE sp_dyn
AS
BEGIN
CREATE OR REPLACE PROCEDURE sp_dyn()
LANGUAGE SQL
BEGIN
CREATE TABLE #TEMP
(
C_DATE DATETIME
)
DECLARE @str VARCHAR(1000);
DECLARE GLOBAL TEMPORARY TABLE
tt_TEMP
(
C_DATE TIMESTAMP
) on commit preserve rows;
DECLARE @str VARCHAR(1000)
SET @str = 'INSERT INTO #TEMP
VALUES(GETDATE())'
SET @str = 'INSERT INTO SESSION.tt_TEMP
VALUES(CURRENT TIMESTAMP)';
EXECUTE IMMEDIATE @str;
END
EXECUTE(@str)
END
20
#ibmiod
Información de Soporte
Conversión de SQL dinámico es una característica compleja separada que
requiere una investigación manual adicional. Pero SQLWays puede convertir
la mayoría de los casos automáticamente e incluso presentar un informe sobre
si el SQL dinámico en el script o el procedimiento exacto fue convertido con
errores o no!
Usted recibirá una lista completa de los objetos que tienen SQL dinámico y
mensajes de guía que muestran si había algún problema con su conversión.
En el informe se ve como:
Conversión que requiera modificación manual
Object Type
Procedure
Procedure
21
Object Name
dbo.sp_dyn
dbo.sp_dyn
Message Type
Description
Info
Contains Dynamic SQL
Warning
Dynamic SQL contains error
#ibmiod
Especificidad de Migración de Sybase a DB2
• Conversión de SQL en aplicaciones Java
o En aplicaciones Java, es posible que tenga que cambiar la sintaxis de sentencias
SQL.
Sybase ASE
IBM DB2
…
…
PreparedStatement ps = null; ResultSet rs =
null;
PreparedStatement ps = null; ResultSet rs = null;
String sql = “SELECT e.name, d.name” +
“FROM employees e, departments d” +
String sql = “SELECT e.name, d.name” + “FROM
employees e LEFT OUTER JOIN” +
“departments d ON e.dept_id = d.id”;
“WHERE e.dept_id *= d.id”;
ps = conn.prepareStatement(sql);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
rs = ps.executeQuery();
…
…
22
#ibmiod
Especificidad de Migración de Sybase a DB2
• Conversión de SQL en aplicaciones PowerBuilder
• En las aplicaciones PowerBuilder, es posible que tenga que cambiar la sintaxis de
sentencias de SQL.
23
Sybase ASE
IBM DB2
datawindow(units=0 processing=0
print.orientation = 0
datawindow(units=0 processing=0
print.orientation = 0
…
…
print.preview.buttons=no)
table(column=(type=char(120)
updatewhereclause=yes name=e_name
dbname="employees.name" )
column=(type=char(120)
updatewhereclause=yes name=d_name
dbname="departments.name" )
retrieve="SELECT e.name, d.name
print.preview.buttons=no)
table(column=(type=char(120)
updatewhereclause=yes name=e_name
dbname="employees.name" )
column=(type=char(120)
updatewhereclause=yes name=d_name
dbname="departments.name" ) retrieve="
SELECT e.name, d.name
FROM employees e, departments d
FROM employees e LEFT OUTER JOIN
WHERE e.dept_id *= d.id”)
departments d ON e.dept_id = d.id”)
#ibmiod
Acknowledgements and Disclaimers:
Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all
countries in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are
provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice
to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is
provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of,
or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the
effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the
applicable license agreement governing the use of IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may
have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these
materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific
sales, revenue growth or other results.
© Copyright IBM Corporation 2012. All rights reserved.
–
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract
with IBM Corp.
–
Please update paragraph below for the particular product or family brand trademarks you mention such as WebSphere, DB2,
Maximo, Clearcase, Lotus, etc
IBM, the IBM logo, ibm.com, [IBM Brand, if trademarked], and [IBM Product, if trademarked] are trademarks or registered trademarks of
International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are
marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common
law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law
trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at
www.ibm.com/legal/copytrade.shtml
f you have mentioned trademarks that are not from IBM, please update and add the following lines:
[Insert any special 3rd party trademark names/attributions here]
Other company, product, or service names may be trademarks or service marks of others.
24
#ibmiod
Gracias!
Su Opinión es Importante!
Por favor visite el sitio web de
Ispirer
www.ispirer.com
25
#ibmiod
Descargar

IBM IOD 2011