1. ORACLE VS SQL SERVER<br />La publicación de una base de datos de Oracle se diseña para que funcione casi idénticamente a la publicación de una base de datos de Microsoft SQL Server. No obstante, debe tener en cuenta las siguientes limitaciones y problemas:<br />La opción de puerta de enlace de Oracle proporciona mejor rendimiento que la opción Completo. No obstante, esta opción no se puede utilizar para publicar la misma tabla en varias publicaciones transaccionales. Una tabla puede aparecer como máximo en una publicación transaccional y en cualquier número de publicaciones de instantánea. Si necesita publicar la misma tabla en varias publicaciones transaccionales, elija la opción Completo de Oracle.<br />La replicación admite la publicación de tablas, índices y vistas materializadas. No se replican otros objetos.<br />Existen pequeñas diferencias entre el almacenamiento y el procesamiento de datos en Oracle y las bases de datos de SQL Server que afectan a la replicación.<br />Existen ciertas diferencias en el modo en que se admiten las características de replicación al utilizar un publicador de Oracle.<br />Compatibilidad con objetos de publicación de Oracle <br />La replicación admite los siguientes objetos de las bases de datos de Oracle:<br />Tablas<br />Tablas organizadas por índices<br />Índices<br />Vistas materializadas (se replican como tablas)<br />Los siguientes elementos pueden aparecer en tablas publicadas pero no se replican:<br />Índices basados en dominios<br />Índices basados en funciones<br />Valores predeterminados<br />Restricciones CHECK<br />Claves externas<br />Opciones de almacenamiento (espacios de tabla, clústeres, etc.)<br />No es posible replicar los siguientes objetos:<br />Tablas anidadas<br />Vistas<br />Paquetes, cuerpos de paquetes, procedimientos y desencadenadores<br />Colas<br />Secuencias<br />Sinónimos<br />Diferencias entre Oracle y SQL Server <br />Oracle tiene límites de tamaño máximo diferentes para algunos objetos. Cualquier objeto creado en la base de datos de publicación de Oracle debe respetar los límites de tamaño máximo de los correspondientes objetos en SQL Server. Para obtener información sobre límites en SQL Server, vea Especificaciones de capacidad máxima para SQL Server.<br />Los nombres de objeto de Oracle se crean de manera predeterminada en mayúsculas. Asegúrese de proporcionar los nombres de los objetos de Oracle en mayúsculas al publicarlos a través de un distribuidor de SQL Server si están en mayúsculas en la base de datos de Oracle. Si no se especifican los objetos en mayúsculas o minúsculas correctamente, se puede producir un mensaje de error que indica que no se puede encontrar el objeto.<br />Oracle tiene un dialecto SQL ligeramente diferente de SQL Server; los filtros de fila se deben escribir en sintaxis compatible con Oracle.<br />Consideraciones para objetos grandes<br />Los datos de objetos grandes (LOB) no se almacenan en la tabla de registro de artículos; las actualizaciones de datos LOB se recuperan directamente en la tabla publicada. Las actualizaciones se replican en publicaciones transaccionales solamente si la operación que afecta al LOB activa el desencadenador de replicación en la tabla replicada. Los desencadenadores de Oracle se activan cuando se insertan o eliminan filas que contienen LOB; sin embargo, las actualizaciones de columnas LOB no activan los desencadenadores. Una actualización de una columna LOB se replicará inmediatamente sólo si una columna no LOB de la misma fila se actualiza también en la misma transacción de Oracle. Si no, la columna LOB se actualizará en el suscriptor cuando se produzca la siguiente actualización de una columna no LOB de la misma fila. Asegúrese de que este comportamiento es aceptable para su aplicación.<br />Para replicar actualizaciones de columnas LOB en publicaciones transaccionales, considere una de las siguientes estrategias cuando escriba la aplicación:<br />Elimine y vuelva a insertar las filas en una transacción en lugar de actualizar la fila: especifique el nuevo LOB al volver a insertar la fila.Como la eliminación y la inserción activan desencadenadores, la fila se replicará.<br />Incluya una columna no LOB en la actualización de filas además de la columna LOB, o actualice una columna no LOB de la fila como parte de la misma transacción de Oracle. En ambos casos, la actualización de la columna no LOB garantiza que se active el desencadenador.<br />Índices y restricciones únicos<br />En la replicación de instantáneas y transaccional, las columnas contenidas en índices y restricciones únicos (incluidas las restricciones de clave principal) deben respetar ciertas limitaciones Si no se respetan dichas limitaciones, la restricción o el índice no se replican.<br />El número máximo de columnas permitido en un índice en SQL Server es de 16.<br />Todas las columnas incluidas en restricciones únicas deben tener tipos de datos admitidos. Para obtener más información acerca de los tipos de datos.<br />Todas las columnas incluidas en restricciones únicas se deben publicar (no se pueden filtrar).<br />Las columnas incluidas en restricciones o índices únicos no deben ser de tipo NULL.<br />Considere también los siguientes problemas:<br />Oracle y SQL Server tratan los valores NULL de forma diferente: Oracle permite varias filas con valores NULL para columnas que admiten valores NULL y están incluidas en restricciones o índices únicos. SQL Server aplica la unicidad al permitir una única fila con valor NULL para la misma columna.No puede publicar un índice o restricción únicos que permita el valor NULL porque se produciría una infracción de restricción en el suscriptor si la tabla publicada contiene varias filas con valores NULL para cualquiera de las columnas incluidas en el índice o restricción.<br />Al probar la unicidad, SQL Server omite los espacios en blanco de un campo pero Oracle no.<br />Como en la replicación transaccional de SQL Server, las tablas de las publicaciones transaccionales de Oracle requieren una clave principal, que debe ser única según las reglas especificadas anteriormente. Si la clave principal no sigue las reglas indicadas anteriormente, no se puede publicar la tabla para la replicación transaccional.<br />Diferencias entre la publicación de Oracle y la replicación transaccional estándar <br />Un publicador de Oracle no puede tener el mismo nombre que su distribuidor de SQL Server ni el mismo nombre que ninguno de los publicadores de SQL Server que utilizan el mismo distribuidor, ni que ninguno de los suscriptores que reciben la publicación.Las publicaciones a las que da servicio el mismo distribuidor deben tener nombres únicos.<br />Una tabla publicada en una publicación de Oracle no puede recibir datos replicados. Por eso, la publicación de Oracle no es compatible con publicaciones con suscripciones de actualización inmediata o de actualización en cola, ni con topologías en las que las tablas de publicación son a la vez tablas de suscripción, como la replicación punto a punto y bidireccional.<br />Las relaciones de clave principal a clave externa de la base de datos de Oracle no se replican en los suscriptores. No obstante, se mantienen las relaciones en los datos cuando se entregan los cambios.<br />Las publicaciones transaccionales estándar admiten tablas de hasta 1000 columnas. Las publicaciones transaccionales de Oracle admiten 995 columnas (la replicación agrega cinco columnas a cada tabla publicada).<br />Se agregan cláusulas de intercalación a las instrucciones CREATE TABLE para habilitar las comparaciones que distinguen entre mayúsculas y minúsculas, que es importante para las claves principales y las restricciones únicas. Este comportamiento se controla con la opción de esquema 0x1000, que se especifica con el parámetro @schema_option de sp_addarticle (Transact-SQL).<br />Si utiliza procedimientos almacenados para configurar o mantener un publicador de Oracle, no coloque los procedimientos dentro de una transacción explícita. El servidor vinculado que se utiliza para conectar al publicador de Oracle no admite dicha transacción.<br />Si crea una suscripción de extracción en una publicación de Oracle con un asistente, debe utilizar el Asistente para nueva suscripción con SQL Server 2005 y versiones posteriores. No obstante, para las versiones anteriores de SQL Server, puede utilizar el procedimiento almacenado y las interfaces SQL-DMO para configurar suscripciones de extracción a publicaciones de Oracle.<br />Si utiliza procedimientos almacenados para propagar los cambios a los suscriptores (valor predeterminado), tenga en cuenta que se admite la sintaxis MCALL, pero que su comportamiento es diferente cuando la publicación es de un publicador de Oracle. Normalmente MCALL proporciona un mapa de bits que muestra qué columnas se han actualizado en el publicador. Con una publicación de Oracle, el mapa de bits muestra siempre que todas las columnas han sido actualizadas. Para obtener más información sobre el uso de procedimientos almacenados, vea Especificar cómo se propagan los cambios para los artículos transaccionales.<br />Compatibilidad con características de replicación transaccional<br />Las publicaciones de Oracle no admiten todas las opciones de esquema que admiten las publicaciones de SQL Server. Para obtener más información sobre las opciones de esquema, vea sp_addarticle (Transact-SQL).<br />Los suscriptores de publicaciones de Oracle no pueden utilizar suscripciones de actualización inmediata o de actualización en cola, ni ser nodos en una topología del mismo nivel o bidireccional. <br />Los suscriptores de publicaciones de Oracle no se pueden inicializar automáticamente desde una copia de seguridad.<br />SQL Server admite dos tipos de validación: binaria y de recuento de filas.Los publicadores de Oracle admiten la validación de recuento de filas.<br />SQL Server proporciona dos formatos de instantánea: modo bcp nativo y modo de carácter.Los publicadores de Oracle admiten las instantáneas en modo de carácter.<br />No se admiten los cambios de esquema en las tablas de Oracle publicadas. Para realizar los cambios de esquema, quite primero la publicación, realice los cambios y vuelva a crear la publicación y todas las suscripciones.<br />Comparación de la plataforma <br />SQL Server 2000 sólo funciona en las plataformas basadas en Windows, incluyendo Windows 9 x, Windows NT, Windows 2000 y Windows CE. En comparación con SQL Server 2000, bases de datos Oracle 9i soporta todas las plataformas conocidas, incluidos los basados en Windows, plataformas, sistemas de AIX-Based, Compaq Tru64 UNIX, HP 9000 Series HP-UX, Linux Intel, Sun Solaris y así sucesivamente. <br />Requisitos de hardware <br />Para instalar SQL Server 2000, debe tener el Intel o compatible con plataformas y el hardware siguiente: <br />Hardware Requisitos Procesador Pentium a 166 MHz o superior Memoria 32 MB de RAM (mínimo para Desktop Engine), 64 MB de RAM (mínimo para todas las otras ediciones), 128 MB de RAM o más recomendados Espacio en disco duro 270 MB (instalación completa), 250 MB (típico) 95 MB (mínimo), Motor de escritorio: 44 MB Analysis Services: mínimo de 50 MB y 130 MB típico English Query: 80 MB <br />Oracle 9i es compatible con Intel o compatible con plataformas, sistemas de AIX-Based, Compaq Tru64 UNIX, HP 9000 Series HP-UX, Linux Intel, Sun Solaris y así sucesivamente. Para instalar Oracle 9i bajo Intel o plataformas compatibles, debe tener el hardware siguiente: <br />Hardware Requisitos Procesador Pentium a 166 MHz o superior Memoria RAM: 128 MB (256 MB recomendado) Memoria virtual: 400 MB de tamaño inicial de tamaño 200 MB, máximo Espacio en disco duro 140 MB en la unidad del sistema Además de 4,5 GB para el disco de inicio de Oracle (FAT) o 2,8 GB de la unidad de inicio de Oracle (NTFS) <br />Para instalar la base de datos de Oracle 9i en virtud de los sistemas UNIX, tales como sistemas de AIX-Based, Compaq Tru64 UNIX, HP 9000 Series HP-UX y Solaris de Sun, debe tener el hardware siguiente: <br />Hardware Requisitos Memoria Un mínimo de 512 MB de RAM Espacio de intercambio Un mínimo de 2 x RAM o 400 MB, sea mayor Espacio en disco duro 4.5 GB <br />Requisitos de software <br />SQL Server 2000 que se viene en seis ediciones: Enterprise, Standard, personal, Developer, Desktop Engine y SQL Server CE (una versión compatible de Windows CE) y requiere el software siguiente: <br />Sistema operativo Enterprise Edition Standard Edition Personal Edition Developer Edition Motor de escritorio SQL Server CE Windows CE No No No No No Sí Windows 9 x No No Sí No Sí No Estación de trabajo de Windows NT 4.0 con Service Pack 5 No No Sí Sí Sí No Windows NT 4.0 Server con Service Pack 5 Sí Sí Sí Sí Sí No Windows NT 4.0 Server Enterprise Edition con Service Pack 5 Sí Sí Sí Sí Sí No Windows 2000 Professional No No Sí Sí Sí No Windows 2000 Server Sí Sí Sí Sí Sí No Windows 2000 Advanced Server Sí Sí Sí Sí Sí No Windows 2000 DataCenter Sí Sí Sí Sí Sí No Windows XP Professional No No Sí Sí Sí No <br />Oracle 9i Database viene en tres ediciones: Enterprise, Standard y personal y requiere el software siguiente: <br />Plataforma Versión del sistema operativo Parches necesarios Basado en Windows Windows NT 4.0 Service Pack 5 Basado en Windows Windows 2000 Service Pack 1 Basado en Windows Windows XP No es necesario AIX-based AIX 4.3.3 Nivel de mantenimiento 09 y IY24568, IY25282, IY27614, IY30151 AIX-based AIX 5.1 AIX 5 L versión 5.1 ML01 + (IY22854), IY26778, IY28766, IY28949, IY29965, IY30150 Compaq Tru64 UNIX Tru64 5.1 5.1 remonta 4 Compaq Tru64 UNIX Tru64 5.1A 5.1A remonta 1 HP-UX HP-UX versión 11.0 (64 bits) Paquete de calidad de septiembre de 2001, PHCO_23792, PHCO_24148, PHKL_24268, PHKL_24729, PHKL_ 25475, PHKL_25525, PHNE_24715, PHSS_23670, PHSS_24301, PHSS_24303, PHSS_24627, PHSS_22868 Linux SuSE Linux Enterprise Server 7 (o SLES 7) con kernel 2.4.7, y glibc 2.2.2 No es necesario Sun Solaris Solaris 2.6 de 32-bit (5.6), 7 (5,7) o 8 (5.8) No es necesario Sun Solaris Solaris 8 de 64-bit (5.8) Actualización Nº 5 <br />Comparación de performance <br />Es muy difícil hacer la comparación de rendimiento entre SQL Server 2000 y bases de datos Oracle 9i. El rendimiento de las bases de datos depende bastante de la experiencia de los desarrolladores de bases de datos y administrador de la base de datos que desde proveedor de la base de datos. Puede usar tanto de estos RDBMS para construir el sistema estable y eficiente. Sin embargo, es posible definir las transacciones típicas, que se utilizan en sistemas de control de inventario, sistemas de reserva de la aerolínea y sistemas bancarios. Después de definir estas transacciones típicas, es posible ejecutar bajo la base de datos de diferente sistemas de gestión que trabajan en las plataformas de software y hardware diferente.<br />Una de la principal ventaja de Microsoft SQL Server 2000 en comparación con bases de datos Oracle 9i es que SQL Server es más barato. Otra ventaja de SQL Server es que Microsoft incluye el procesamiento analítico en línea (OLAP) y minería de datos como características estándar en SQL Server 2000 Enterprise Edition. Por lo tanto, puede guardar hasta cuatro veces con SQL Server 2000 Enterprise Edition si utiliza OLAP y minería de datos. Las comparaciones de precios a continuación se basan en la Comparación de precios SQL Server 2000 y Oracle artículo de Microsoft. <br />Comparar precios de SQL Server 2000 Standard Edition y Oracle9i Standard Edition: <br />Número de CPU Oracle9i Standard Edition SQL Server 2000 Standard Edition 1 $15,000 $4,999 2 $30,000 $9,998 4 $60,000 $19,996 8 $120,000 $39,992 16 $240,000 $79,984 32 $480,000 $159,968 <br />Comparar precios de SQL Server 2000 Enterprise Edition (que incluyen OLAP y minería de datos) y Oracle9i Enterprise Edition con OLAP y minería de datos: <br />Número de CPU Oracle9i Enterprise Edition Oracle9i Enterprise Edition con OLAP o minería de datos Oracle9i Enterprise Edition con OLAP y minería de datos SQL Server 2000 Enterprise Edition 1 $40,000 $60,000 $80,000 $19,999 2 $80,000 $120,000 $160,000 $39,998 4 $160,000 $240,000 $320,000 $79,996 8 $320,000 $480,000 $640,000 $159,992 16 $640,000 $960,000 $1,280,000 $319,984 32 $1,280,000 $1,920,000 $2,560,000 $639,968 <br />Nota. Esto no es una comparación de precio completo entre SQL Server 2000 y bases de datos Oracle 9i. Es sólo una breve comparación. Puede tener cualquier descuentos y los precios pueden ser aumentados o disminuidos en el futuro. <br />Comparación de características <br />SQL Server 2000 y bases de datos Oracle 9i apoyar el nivel de entrada de ANSI SQL-92 y no son compatibles con el nivel intermedio de ANSI SQL-92. En la sección de comparación de características de este artículo que quiero hacer la comparación breve de Transact-SQL con PL/SQL y mostrar algunos SQL Server 2000 y límites de bases de datos Oracle 9i. <br />T-SQL vs PL/SQL <br />El dialecto de SQL compatible con Microsoft SQL Server 2000 se llama Transact-SQL (T-SQL). El dialecto de SQL compatible con bases de datos Oracle 9i se llama PL/SQL. PL/SQL es el lenguaje más potente de T-SQL. Esta es la breve comparación de PL/SQL y T-SQL: <br />Característica PL/SQL T-SQL Índices Índices de arbol-B, Mapa de bits, índices, Índices con particiones, En el caso de los índices basados en funciones, Índices de dominio Índices B-tree Tablas Tablas relacionales, Tablas de objeto, Tablas temporales, Tablas con particiones, Tablas externas, Índice de tablas organizadas Tablas relacionales, Tablas temporales Desencadenadores ANTES de desencadenadores, Desencadenadores, AFTER INSTEAD OF desencadenadores, Desencadenadores de eventos de base de datos Desencadenadores, AFTER Desencadenadores INSTEAD OF Procedimientos Declaraciones de PL/SQL, Métodos de Java, lenguaje de tercera generación Rutinas de (3GL) Instrucciones T-SQL Arreglos de discos Admite No compatible <br />Límites de SQL Server 2000 y Oracle 9i <br />Aquí puede encontrar algunos SQL Server 2000 y Oracle 9i Database límites: <br />Característica SQL Server 2000 Base de datos de Oracle 9i longitud del nombre de base de datos 128 8 longitud del nombre de columna 128 30 longitud del nombre del índice 128 30 longitud del nombre de tabla 128 30 longitud del nombre vista 128 30 longitud del nombre del procedimiento almacenado 128 30 Max columnas por índice 16 32 tamaño de char() máx. 8000 2000 tamaño máximo de varchar() 8000 4000 Max columnas por tabla 1024 1000 longitud de fila de tabla máx. 8036 255000 tamaño máximo de consulta 16777216 16777216 subconsultas recursiva 40 64 tamaño de la cadena constante en SELECT 16777207 4000 tamaño de la cadena constante en WHERE 8000 4000 <br />