Sistemas operativos compatibles
Microsoft SQL Server ha sido siempre una parte de la familia de servidores Windows y hay pocas posibilidades de que Microsoft
vaya a lanzar una versión para otro sistema operativo. En la
actualidad, SQL Server se ejecuta en XP, Vista, Windows Server 2000,
2003 y 2008. La plataforma de base de datos está disponible para los de 32 bits y 64 bits de Windows.
Para el caso de Oracle, software de base de datos con soporte
multiplataforma incluye no sólo Windows (32 bits y 64 bits), pero Linux y
diferentes variantes de Unix (Solaris, HP-UX, AIX, etc) también.
Versiones y ediciones
En el momento de escribir esto, SQL Server 2008 es la versión actual del producto de base de datos de Microsoft.
La próxima versión que saldrá es SQL Server 2008 R2 que se encuentra en
su fase de CTP. La versión anterior, SQL Server 2005, vio una
importante actualización de su predecesor, SQL Server 2000. SQL Server
2005 es todavía relativamente nueva para muchas empresas y hay todavía
un gran número de organizaciones que utilicen bases de datos de SQL
Server 2000.
Oracle por otro lado ha recorrido un largo camino desde sus
primeros
días y ahora está en la versión 11g R2. La versión más prominente de
10g R2 ha estado presente en el mercado por algún tiempo y es
considerado un caballo de batalla. 10g es la primera versión de Oracle
que introdujo el concepto de “grid computing”. Hay empresas que siguen
utilizando Oracle 9i para sus aplicaciones de negocio.
En términos de ediciones de SQL Server 2008 R2 ofrece actualmente los siguientes:
- Enterprise Edition: La edición Enterprise tiene todas habilitadas las características avanzadas y es apto para a gran escala, sitios de base de datos de alto volumen.
- Standard Edition: Esto ofrece una plataforma
asequible para las empresas que no requieren de las funciones avanzadas
de la Enterprise Edition. La mayoría de las empresas suele desplegar sus
bases de datos en los instancias de la edición estándar.
- Workgroup Edition: La edición de grupo de trabajo es adecuada para pequeñas aplicaciones departamentales e incorpora las características esenciales del producto.
- Web Edition: Esta es la destinada a ser utilizada
por los proveedores de alojamiento como solución back-end de bajo coste
para aplicaciones web.
- Express Edition: motor del servidor SQL embebido
que puede ser utilizados para el almacenamiento local de datos y sistema
de desarrollo de pequeñas escala. La edición Express se puede descargar gratis y pueden ser distribuída gratuitamente con un software.
- Compact Edition: La edición Compact permite a los
usuarios desarrollar aplicaciones para computadoras de escritorio de
Windows y dispositivos de mano.
- Developer Edition: Todas las características de la
versión Enterprise Edition está disponible en la edición para
desarrolladores. Sin embargo, tiene licencia de uso por un usuario a la
vez y está destinado a ser utilizado para fines de desarrollo y pruebas.
Aparte de la versión Enterprise Edition, SQL Server 2008 R2 también
ofrecerá dos ediciones “premium” para los grandes centros de datos y
data warehouses. Estas ediciones se llamarán
Datacenter Edition y el
Parallel Data Warehouse Edition, respectivamente.
Para Oracle 11g R2, los variantes son:
- Enterprise Edition: Esta ofrece el máximo
rendimiento por tu dinero. Al igual que el SQL Server Enterprise
Edition, todas las características y las capacidades del producto están
permitido en esta edición.
- Standard Edition: Al igual que el estándar SQL Server Edition, la edición estándar de Oracle tiene habilitadas las principales características del producto y es adecuado para aplicaciones de negocios.
- Standard Edition One: Esta edición está diseñada para pequeños grupos de trabajo y la licencia para un mñaximo de 5 usuarios.
- Express Edition: En pequeña escala, base de datos
inicial para fines de desarrollo y tiene licencia para redistribuirlo
libremente. Express Edition 10g está todavía en la versión R2.
El siguiente cuadro muestra la comparación entre las distintas ediciones de SQL Server y Oracle:
SQL Server 2008 R2 |
Oracle Database 11g R2 |
Enterprise Edition |
Enterprise Edition |
Standard Edition |
Standard Edition |
Workgroup Edition |
Standard Edition One |
Edición Express |
Express Edition |
Web Edition |
X |
Compact Edition |
X |
Developer Edition |
Enterprise Edition |
Instancias, bases de datos y de tablas
Tal vez la primera diferencia de nivel entre la arquitectura de SQL Server y Oracle se encuentra en el concepto de
instancias y
bases de datos.
Una instancia en términos de SQL Server, significa un
servicio de aplicación autocontenida que implica
archivos del sistema operativo, las estructuras de memoria, los
procesos de segundo plano y la información de registro. Una instancia está representada por un servicio
en Windows y puede estar en ejecución o estado detenido. Cuando se
ejecuta, una instancia ocupa una porción de la memoria del servidor, y
también genera una serie de procesos de segundo plano.
Lo central de una instancia de SQL Server son sus bases de datos. Una base de datos de SQL Server es el repositorio de datos y el código del
programa
para la manipulación de esos datos. Si una instancia no se está
ejecutando, las bases de datos dentro de ella no se puede acceder.
Hay dos tipos de bases de datos de SQL Server: bases de datos de
sistema y de bases de datos de usuario. Cuando una instancia de SQL
Server se instala por primera vez, cinco bases de datos del sistema se
crean:
model,
tempdb,
master,
msdb y
resource.
Si existe más de una instancia de SQL Server que se ejecuta en un
equipo, cada instancia tendrá su propio grupo dedicado de bases de datos
del sistema. Una instancia no puede iniciar si cualquiera de sus bases
de datos del sistema, excepto msdb esta inaccesible o está dañada. Las
bases de datos del usuario por otro lado son creadas por desarrolladores
y administradores de bases después que la instancia se ha instalado y
el sistema de bases de datos ha iniciado. Estas son las bases de datos
que almacenan la información de negocios de las organizaciones.
Así pues, en definitiva, una instancia de SQL Server siempre incluye
bases de datos (incluso si sólo están las del sistema) y una base de
datos estará siempre asociado con una (y sólo una) instancia.
En el nivel físico, una base de datos de SQL Server está representada
por un conjunto de archivos del sistema operativo que residen en el
sistema de disco del servidor. Hay dos tipos de archivos de base de
datos: el
archivo de datos (
data file) y el
archivo de registro de transacciones (
transaction log file).
Como mínimo, una base de datos tendrá un archivo de datos y un archivo
de registro de transacciones. Un archivo de datos es el repositorio
central de información en una base de datos SQL. Un archivo de registro
de transacciones de otro lado registra los cambios que se han aplicado a
los datos. Este archivo es requerido por SQL Server para la
recuperación del sistema. Un archivo de datos o de registro siempre
pertenecen a una determinada base de datos: no hay dos bases de datos
pueden compartir los mismos datos o archivo de registro. Si la base de
datos es grande, puede tener múltiples archivos de datos. Múltiples
archivos de datos de en una base de datos puede ser lógicamente
agrupadas en estructuras conocidas como
grupos de archivos.
Con Oracle, las cosas funcionan en la dirección inversa. Cuando
Oracle se inicia, funciona igual que SQL en que una porción de la
memoria del servidor se asigna para su funcionamiento. Esta área de
memoria, conocido como el
Área Global de Sistema (
SGA),
se divide en una serie de estructuras diferentes. Junto con el espacio
de memoria, una serie de procesos de fondo que también se inician para
interactuar con el SGA. En conjunto, el espacio de memoria y los
procesos constituyen una instancia de Oracle. Tenga en cuenta que la
base de datos Oracle todavía no está presente. De hecho, una instancia
de Oracle podría estar funcionando perfectamente bien sin su base de
datos en línea o incluso ser accesible. Cuando instalas Oracle, hay una
opción para instalar sólo el software y crear la base de datos más
tarde.
Una base de datos en Oracle es una colección de archivos de sistema
operativo. A diferencia de SQL Server, una base de datos Oracle no
representan a la agrupación lógica de los objetos, sino que es un único
término genérico para una serie de archivos en el disco que
principalmente tienen datos.
Los archivos que componen una base de datos de Oracle se pueden clasificar en tres tipos: el
archivo de datos (
data file),
archivo de rehacer (
redo log file) y el
archivo de control (
control file).
Los archivos de datos es donde residen todos los datos. Puede haber
cualquier número de archivos de datos en una base de datos de Oracle.
Archivos Rehacer son como los archivos de registro de transacciones de
SQL Server que registra que cada cambio realizado a los datos y se
utiliza para la recuperación del sistema. Los archivos de control son un
tipo especial de archivo que contiene pequeñas piezas de información
vital acerca de la base de datos. Sin este archivo, la instancia no será
capaz de abrir la base de datos.
Aparte de los archivos de datos, archivos rehacer y los archivos de control, la base de datos contendrá también un
archivo de parámetros , y un
archivo de contraseñas, opcionalmente,
archivos de registro de archivado (archive log file). Vamos a discutir acerca de cada tipo de archivos de base de datos Oracle en breve.
Cuando se inicia un sistema de Oracle, primero la instancia se crea
en la memoria. La instancia a continuación, se conecta a la base de
datos que residen en el disco y, finalmente, se abre la base de datos
para la interacción del usuario. Cuando el sistema se apaga, la
instancia se borrará de la memoria: todas las estructuras de memoria y
los procesos se terminan, pero la base de datos todavía existen en el
disco, aunque en un estado cerrado. Como se dijo anteriormente, es
posible tener la instancia de Oracle que se ejecutan sin necesidad de
abrir la base de datos – es una gran diferencia de SQL Server donde una
instancia no puede comenzar sin primero tener sus bases de datos de
sistemas en línea. Sin embargo, como SQL Server, es imposible conectarse
a una base de datos de Oracle, si la instancia no ha comenzado.
En general, la relación entre una instancia de Oracle y su base de
datos es uno a uno. Una instancia tendrá una base de datos asociada con
ella. Una base de datos por otra parte puede tener una o más instancias
para acceder a ella. Una instalación independiente de Oracle constará de
una única instancia de acceso a una base de datos única. Las
instalaciones de Oracle configuradas como
RAC (
Real Application Cluster) tendrán varias instancias que se ejecutan en diferentes máquinas que acceden a la misma base de datos en un disco compartido.
Entonces, ¿dónde está la agrupación lógica de los objetos de base de
datos Oracle? En SQL Server, esta agrupación lógica es realizada por la
propia base de datos. Para Oracle, se realiza a través de algo llamado
espacios de tablas (
tablespaces).
Un espacio de tablas de Oracle es una estructura lógica que agrupa a
las tablas, vistas, índices y otros objetos de la base de datos. Por
ejemplo, la base de datos Oracle de producción puede tener uno de tablas
dedicado a la aplicación de recursos humanos y otro de tablas para la
nómina. Cada espacio de tablas está físicamente representado por uno o
más archivos de datos en el disco y forma parte de la base de datos. La
base de datos es, lógicamente, compuesto de una serie de espacios de
tabla y los espacios de tabla, a su vez están físicamente compuesto de
uno o más archivos de datos.
El equivalente de Oracle para las base de datos de SQL Server es un espacio de tablas.
Y puesto que son tan similares en sus funciones, el proceso de
creación de una base de datos en SQL Server es muy similar a la creación
de un espacio de tablas en Oracle. Cuando se crea una base de datos o
de un espacio de tablas, el DBA debe especificar un nombre. El DBA
asigna uno o más archivos de datos a la base de datos o tablas de
espacios y especifica el tamaño inicial y los incrementos de crecimiento
de cada archivo.
Al igual que una base de datos de usuario de SQL Server se puede
poner fuera de línea o de sólo lectura, también se puede en un espacio
de tablas de usuario de Oracle. Y al igual que uno o más archivos de
datos en una base de datos de usuarios de SQL Server puede ser de sólo
lectura, uno o más archivos de datos en un espacio de tablas de usuarios
de Oracle pueden ser marcados fuera de línea.
Sin embargo, las bases de datos y de tablas difieren entre sí en las siguientes puntos:
- En SQL Server, los archivos de datos puede ser, lógicamente,
agrupados en grupos de archivos. Los espacios de tablas de Oracle no
tienen este concepto.
- En las bases de datos SQL Server, cada base de datos tendrá su
propio registro de transacciones y las propiedades del archivo de
registro deberá ser especificado durante la creación de bases de datos.
Para Oracle, las transacciones de la base de datos completa (esto
significa que por cada espacio de tablas) se registran en un registro
rehacer (redo log). Por consiguiente, no existe ninguna disposición para
crear archivos de registro individuales para espacios de tablas.
- Para SQL Server, la base de datos puede ser creada con el modo de recuperación simple.
El modo de recuperación simple: la parte inactiva del registro de base
de datos se trunca después de cada punto de control. Oracle tiene un
concepto similar, que veremos más adelante – pero no es posible
configurar esa propiedad para espacios de tablas individuales.
Los nombres de instancia vs SID
Ambos SQL Server y Oracle permiten ejecutar simultáneamente varias
instancias del software servidor en el mismo equipo. Estos múltiples
contextos de ejecución son totalmente independientes unos de otros: en
lo que se refiere a un motor de base de datos, no sabe ni le importa si
otro se está ejecutando en el mismo equipo.
En SQL Server, este mecanismo se activa a través del concepto de
instancias. SQL Server puede funcionar tanto como una instancia nombrada
o como una instancia predeterminada. La instancia predeterminada tiene
el mismo nombre que el servidor de Windows que lo hospeda. Obviamente,
puede ser acogida una sola instancia predeterminada, pero es posible
ejecutar varias instancias nombradas en esa misma máquina. Una instancia
con nombre se identifica en la forma de HOSTNAME\INSTANCE_NAME, donde
cada INSTANCE_NAME ejecutándose en la máquina tiene que ser único. Cada
instancia tendrá su propio conjunto de archivos binarios con algunos
componentes comunes y compartidos entre todos.
Para Oracle, funciona de la misma manera. Cuando se instala Oracle, el DBA debe especificar un
nombre global de base de datos (
Global Database Name) y un
identificador del sistema (
SID).
La instancia y bases de datos son entidades completamente separadas en
Oracle. Un nombre de base de datos global identifica unívocamente a una
base de datos en la red donde se encuentra alojada y puede tener un
nombre completo en la forma de
database_name.network_domain_name.
Un SID por otra parte identifica la instancia asociada con la base de
datos. En la mayoría de los casos una sola instancia se asocia a una
única base de datos, el SID y el nombre de base de datos será el mismo.
Los entornos de Oracle Real Application Cluster (RAC) son una excepción:
RAC permite que múltiples instancias accedan a la misma base de datos
alojada en un almacenamiento compartido; los nombres de instancia son
diferentes del nombre de base de datos en estos casos. Sin embargo, al
igual que un equipo de SQL Server, un servidor de base de datos Oracle
no puede tener dos instancias en ejecución con el mismo SID.
Un DBA de SQL Server puede ejecutar la siguiente consulta para saber
el nombre de la instancia a la que está actualmente conectado a:
Un DBA Oracle ejecutar consultas como la siguiente para obtener la instancia y el nombre de base de datos:
1
2
|
SELECT INSTANCE_NAME, HOST_NAME, VERSION, DATABASE_STATUS FROM V$INSTANCE;
SELECT NAME , DATABASE_ROLE, CREATED FROM V$ DATABASE ;
|
Sistema de bases de datos y sistema de tablas
Una instancia de SQL Server dispondrá de cinco bases de datos de
sistema (cuatro para las versiones anteriores de 2005) presente: master,
model, msdb, tempdb y resource. Una base de datos Oracle necesita un
mínimo de tres espacios de tablas de sistema para su funcionamiento:
SYSTEM ,
SYSAUX y
TEMP.
Las base de datos master y resource son los repositorios centrales de
toda la información de SQL Server para gestionar las necesidades de sí
mismo. Entre muchas otras cosas, contiene la configuración de su
sistema, la lista de bases de datos y la ubicación de sus archivos,
puntos finales, servidores vinculados y las cuentas de usuario (o
“logins”). Objetos de nivel de sistema se almacenan en una base de datos
de sólo lectura conocida como base de datos “resource”.
Para Oracle, el espacio de tablas del sistema es el equivalente de la
base de datos master. El espacio de tablas SYSTEM contiene el
diccionario de datos,
que son los metadatos de Oracle sobre sí misma. El diccionario de datos
se puede comparar con la base de datos de recursos de SQL. Y
probablemente ya has adivinado: Oracle no se iniciará si el espacio de
tablas del sistema no está disponible o está dañado.
Para una instancia de SQL Server, la base de datos model es la
“plantilla” que se utiliza para crear cada nueva base de datos en esa
instancia. Se puede realizar un cambio en la base de datos model y el
cambio se reflejará después en cada nueva base de datos creada. Para
Oracle, no existe tal modelo, pero cuando se crea un espacio de tablas,
puede especificar si será un espacio de tablas permanente o de cualquier
otro tipo como un espacio de tablas TEMP o UNDO. Los espacios de tablas
permanentes son los que contienen datos de usuario.
Tempdb de SQL Server se utiliza como una “scratch pad” para la
instancia en su conjunto. Tempdb se crea cada vez que la instancia se
reinicia y destruyó cada vez que la instancia se cierra. Los espacio de
tablas TEMP de después hacen más o menos la misma tarea: se utiliza para
ordenar los resultados que tienen operaciones a gran escala. Sin
embargo, tempdb de SQL también se puede utilizar para
versionado de filas.
Cuando se activa para una base de datos, el versionado de filas asegura
que el motor de base de datos mantiene un registro de cada versión de
una fila de datos cuando se modifican. El copia pre-modificada de la
fila es copiada en un almacén de versiones en la base de datos tempdb.
Las consultas solicitando la fila de datos siempre tendrán la última
versión confirmada. Cuando una operación de lectura utiliza un nivel de
aislamiento basado en versionado de filas, no bloquea otras
transacciones que intentan modificar los mismos datos. Esto es porque la
consulta de lectura no pone un bloqueo compartido en las filas de
datos. Sin embargo, este comportamiento debe ser explícitamente
habilitado para cada base de datos.
Oracle utiliza el mismo concepto con otro tipo de espacios de tablas – conocido como el espacio de tablas
UNDO.
Un espacio de tablas UNDO tiene la posibilidad de copiar lecturas
consistentes de datos que están siendo modificadas por una declaración
DML. Cuando un usuario comienza a hacer cambios a los datos, una versión
previa a la modificación de los datos es almacenada en el espacio de
tabla UNDO. Si otro usuario desea consultar las mismas filas de los
datos, obtendrá la versión previa a la modificación desde el espacio de
tabla UNDO. A diferencia de SQL, esta función no tiene que ser activada
explícitamente – es parte del mecanismo de acceso concurrente a datos
de Oracle.
Por último, la base de datos msdb de SQL Server es necesaria para el
funcionamiento de su servicio de Agente. El Agente SQL Server es el
responsable de los trabajos programados, alertas, la replicación y el
trasvase entre muchas otras cosas. Sin la base de datos msdb, el
servicio del agente no se ejecuta.
No existe un equivalente claro de msdb en Oracle. El espacio de
tablas SYSAUX es un espacio de tablas del sistema, creado durante el
proceso de instalación. Contiene información como el
Repositorio de Carga de Trabajo Automático (
AWR) de Oracle, datos espaciales y multimedia, bases de datos XML, etc