Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Crear réplica en equipo Linux de Oracle en equipo Windows
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Crear réplica en equipo Linux de Oracle en equipo Windows

Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Crear réplica en equipo Linux de Oracle en equipo Windows Responder citando

Tengo un servidor con Windows Server 2003 y Oracle Database 10g instalado. Lo utilizo como servidor de base de datos, lo que quiero es crear una "réplica" en otro servidor, éste con GNU Linux Ubuntu Server.

Ya tengo instalado Oracle Database 10g en el equipo con GNU Linux Server, funciona correctamente. Ahora lo que quiero es hacer la réplica.

¿Cómo lo hago?
MensajePublicado:
Vie Jun 11, 2010 5:50 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Crear réplica en equipo Linux de Oracle en equipo Window Responder citando

varios escribió:
Tengo un servidor con Windows Server 2003 y Oracle Database 10g instalado. Lo utilizo como servidor de base de datos, lo que quiero es crear una "réplica" en otro servidor, éste con GNU Linux Ubuntu Server.

Ya tengo instalado Oracle Database 10g en el equipo con GNU Linux Server, funciona correctamente. Ahora lo que quiero es hacer la réplica.

¿Cómo lo hago?


Hay varias formas, si conoces RMAN puedes usarlo para estos menesteres.
Otra posibilidad es un expor full en el equipo con Windows y un import full en el equipo cliente.

La forma que consideramos más "óptima" es la siguiente:

1. Conectado en el servidor de Oracle en producción de Windows, obtén todos los usuarios (el de Windows Server 2003). Puedes obtener la consulta SQL de creación de cada usuario de forma masiva ejecutando la siguiente sentencia SQL:

Código:

SELECT 'create user ' || username || ' identified by " "' || '
  default tablespace ' || default_tablespace || ' temporary tablespace '
  || temporary_tablespace
FROM dba_users
WHERE default_tablespace <> 'SYSTEM' and
  default_tablespace <> 'DRSYS' and
  default_tablespace <> 'EXAMPLE' and
  default_tablespace <> 'XDB' and
  default_tablespace <> 'TOOLS' and
  default_tablespace <> 'ODM' and
  default_tablespace <> 'CWMLITE';


Devolverá algo así:

create user FACTURACION identified by " "
default tablespace TBFACTURACION temporary tablespace TEMP

create user CONTABILIDAD identified by " "
default tablespace TBCONTABILIDAD temporary tablespace TEMP


(una línea por cada usuario)

Guarda el resultado de la consulta anterior en un fichero, luego lo utilizaremos para crear todos los usuarios en la base de datos Oracle de Linux. Ten en cuenta que hemos excluído usuarios que tengan como tablespace el SYSTEM, DRSYS, EXAMPLE, XDB, TOOLS, ODM y CWMLITE, que son tablespaces que Oracle crea por defecto. Si tienes algún usuario en estos tablespaces tendrás que añadirlo a la sentencia SQL a ejecutar o quitar del WHERE la exclusión correspondiente.

2. Conectado en el servidor de Oracle en producción de Windows, realizaremos la misma operación para obtener la sentencia de creación de los TABLESPACES correspondientes de la base de datos Oracle en Windows. Para ello ejecuta la siguiente consulta SQL:

Código:

select 'create tablespace ' || df.tablespace_name || chr(10)
|| ' datafile ''' || df.file_name || ''' size ' || df.bytes
|| decode(autoextensible,'N',null, chr(10) || ' autoextend on maxsize '
|| maxbytes)
|| chr(10)
|| 'default storage ( initial ' || initial_extent
|| decode (next_extent, null, null, ' next ' || next_extent )
|| ' minextents ' || min_extents
|| ' maxextents ' ||  decode(max_extents,'2147483645','unlimited',max_extents)
|| ') ;'
from dba_data_files df, dba_tablespaces t
where df.tablespace_name=t.tablespace_name;


Nota 1: con el SQL anterior tendrás que revisar el resultado, pues si tienes varios ficheros de datos en algún tablespace te duplicará la consulta de creación, en este caso modifica manualmente el script. Se podría hacer un procedimiento más elaborado que obtenga los ficheros de datos de cada tablespace y una única consulta SQL de creación del tablespace. Pero de todas formas, puesto que lo vas a replicar en un equipo con Linux, también tienes que cambiar la ruta típica de Windows "C:\...." por la correspondiente de Linux.

Nota 2: si no quieres que aparezca el create tablespace para SYSTEM elimínalo del script o añade una clausula al WHERE para que no te lo muestre. Pues este tablespace ya existirá en el Oracle de Linux.

Delvolverá algo así:

create tablespace TBFACTURACION
datafile 'c:\oracle\oradata\facturacion.dbf' size 18874368000
autoextend on maxsize 0
default storage ( initial 65536 minextents 1 maxextents unlimited) ;

create tablespace TBCONTABILIDAD
datafile 'c:\oracle\oradata\contabilidad.dbf' size 20971520
autoextend on maxsize 34359721984
default storage ( initial 65536 minextents 1 maxextents unlimited) ;


Guardaremos el resultado en un fichero .bat de proceso por lotes, para luego modificarlo y ejecutarlo en Oracle Linux.

3. Comprueba ahora el script de creación de los tablespaces, cambia las rutas de los ficheros de datos y demás personalizaciones que necesites para Linux. Y ejecútalo con cualquier software que te lo permita (SQLPlus, TOAD, etc.), conectado, lógicamente, a la base de datos Oracle de GNU Linux.

4. Comprueba que se han creado los tablespaces en la base de datos Oracle de Linux, cambia lo que necesites (ficheros de datos, tamaño, etc.). Con el siguiente comando SQL puedes ampliar el tamaño de un archivo de datos:

Código:

ALTER DATABASE
DATAFILE '\oradata\ORACLE\FACTURACION.DBF' RESIZE  30000M


5. Conéctate al servidor Oracle con GNU Linux. Crea los usuarios, ejecutando el script generado en el punto 1 (el de creación de usuarios). Para ello utiliza cualquier software que te permita ejecutar consultas SQL en Oracle (SQLPlus, TOAD, etc.).

6. Verifica que los usuarios se han creado correctamente en el servidor de Oracle Database con Linux (puedes usar Oracle Enterprise Manager).

7. Conectado en el servidor de Oracle en producción de Windows, ejecuta ahora la siguiente consulta SQL para generar el script que te permitirá exportar los datos de los usuarios de Oracle (usuario a usuario), utilizando el comando "exp" de Oracle:

Código:

SELECT ' exp userid=' || username || '/contraseña ' ||
   ' file=C:\exp_' || username || '.dmp log=C:\exp_'
  || username || '.log' || ' statistics=none full=n compress=y'
FROM dba_users
WHERE default_tablespace <> 'SYSTEM' and
  default_tablespace <> 'DRSYS' and
  default_tablespace <> 'EXAMPLE' and
  default_tablespace <> 'XDB' and
  default_tablespace <> 'TOOLS' and
  default_tablespace <> 'ODM' and
  default_tablespace <> 'CWMLITE';


8. Cambia "contraseña" por la contraseña correspondiente a cada usuario de Oracle. Comprueba los datos (rutas y ficheros) y guarda el resultado del comando anterior en un fichero .bat que ejecutarás en el servidor en producción con Oracle y Windows. Este fichero .bat deberá generarte dos ficheros por cada usuario (un .dmp con los datos del export lógico y un .log con el resultado del export).

9. Transfiere los ficheros .dmp creados anteriormente al equipo con GNU Linux y Oracle. Puedes hacerlo mediante FTP, como indica este manual:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=156

o utilizando SAMBA, como indica este otro manual:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=266

o incluso, si tienes correctamente configurado el tnsnames.ora podrás conectarte al equipo con GNU Linux desde el de Windows, así no necesitarás mover los ficheros .dmp, pero esto es un poco más "peligroso".


9. Conectado en el servidor de Oracle en producción de Windows, ejecuta ahora la siguiente consulta SQL para generar el script que te permitirá importar los datos de los usuarios de Oracle (usuario a usuario):

Código:

SELECT ' imp system/contraseña fromuser=' || username ||
   ' touser=' || username || ' file=/exp_' || username || '.dmp log=/imp_'
  || username || '.log' || ' statistics=none full=n'
FROM dba_users
WHERE default_tablespace <> 'SYSTEM' and
default_tablespace <> 'DRSYS' and
default_tablespace <> 'EXAMPLE' and
default_tablespace <> 'XDB' and
default_tablespace <> 'TOOLS' and
default_tablespace <> 'ODM' and
default_tablespace <> 'CWMLITE';


Comprueba las contraseñas (introduce la contraseña de cada usuario), comprueba las rutas de los ficheros (cambia las rutas de Windows por las de Linux donde estén los ficheros .dmp transferidos en el punto anterior). Guarda el resultado en un fichero .sh (script de Linux), y dale los permisos de ejecución con el comando (en una ventana de terminal de Linux):

Código:

chmod 777 nombre_script.sh


Ejecuta el script con:

Código:

./nombre_script.sh


(es recomendable hacerlo con el usuario de Linux "oracle" que habrás creado en la instalación).

Con esto, si todo es correcto, habrás transferido una copia exacta de Oracle en Windows a Oracle en Linux. Si no tienes muchos usuarios este proceso será rápido y sencillo.
MensajePublicado:
Vie Jun 11, 2010 6:51 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Crear réplica en equipo Linux de Oracle en equipo Window Responder citando

Tanto para el import (imp) como para el export (exp), existe un método para no tener que introducir las contraseñas del usuario, sólo la contraseña de un usuario DBA, sería utilizando este comando:

Código:

exp system/contraseña owner=usuario file=exp_usuario.dmp log=exp_usuario.log statistics=none full=n compress=y


Y para generar el script para el export de todos los usuarios:

Código:

SELECT ' exp system/contraseña owner=' || username ||
   ' file=C:\exp_' || username || '.dmp log=C:\exp_'
  || username || '.log' || ' statistics=none full=n compress=y'
FROM dba_users
WHERE default_tablespace <> 'SYSTEM' and
  default_tablespace <> 'DRSYS' and
  default_tablespace <> 'EXAMPLE' and
  default_tablespace <> 'XDB' and
  default_tablespace <> 'TOOLS' and
  default_tablespace <> 'ODM' and
  default_tablespace <> 'CWMLITE';
MensajePublicado:
Vie Jun 11, 2010 11:28 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A