Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
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 - Copia de seguridad física BD Oracle de todos los ficheros
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Copia de seguridad física BD Oracle de todos los ficheros

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
rman-oracle
Invitado





Asunto: Copia de seguridad física BD Oracle de todos los ficheros Responder citando

Cuando se habla de una copia de seguridad física de Oracle ¿qué ficheros hay que copiar? ¿qué ficheros son necesarios para restaurar una BD de Oracle en otro PC (para hacer una réplica exacta)?

Sé que se puede hacer con RMAN pero quisiera saber cómo hacerlo manualmente.

Gracias.
MensajePublicado:
Mar Ago 15, 2006 9:22 am
Top of Page
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Copia de seguridad física BD Oracle de todos los fichero Responder citando



Anuncios



A continuación te explicamos paso a paso lo que has de hacer, ten en cuenta que para hacer una copia de seguridad de los ficheros (física) de Oracle sin RMAN tendrás que detener la base de datos completamente. Con lo cual deberás realizarlo cuando no haya usuarios conectados (o perderán la conexión). Algunas de las consultas y comandos que se van a ejecutar requieren permisos de conexión SYSDBA:

1. En primer lugar has de recopilar la siguiente información, necesaria para los restantes pasos:

* Ubicación de los ficheros de datos (los que componen los TableSpaces), para ello puedes ejecutar la siguiente consulta SQL:

Código:

select substr(name, 1, 255)
from v$datafile


Devolverá algo así como:


E:\ORACLE\ORADATA\ORACL\SYSTEM01.DBF
E:\ORACLE\ORADATA\ORACL\UNDOTBS01.DBF
E:\ORACLE\ORADATA\ORACL\DRSYS01.DBF
E:\ORACLE\ORADATA\ORACL\USERS01.DBF
E:\ORACLE\ORADATA\ORACL\EXAMPLE01.DBF
...


Obviamente tendrás ubicaciones diferentes.



* También es conveniente (aunque no necesario) que guardes el resultado de esta consulta (Tablespaces y ficheros de los mismos):

Código:

Select t.tablespace_name "Tablespace", t.status "Estado",
  ROUND(MAX(d.bytes)/1024/1024,2) "MB Tamaño",
  ROUND((MAX(d.bytes)/1024/1024) -
  (SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024),2) "MB Usados",
  ROUND(SUM(decode(f.bytes, NULL,0, f.bytes))/1024/1024,2) "MB Libres",
  t.pct_increase "% incremento",
  SUBSTR(d.file_name,1,80) "Fichero de datos"
FROM DBA_FREE_SPACE f, DBA_DATA_FILES d, DBA_TABLESPACES t
WHERE t.tablespace_name = d.tablespace_name AND
  f.tablespace_name(+) = d.tablespace_name
  AND f.file_id(+) = d.file_id GROUP BY t.tablespace_name,
  d.file_name, t.pct_increase, t.status
ORDER BY 1,3 DESC




* Ejecuta también la siguiente consulta (devolverá los ficheros de Redo Log, el estado, el grupo al que pertenecen y la ubicación):

Código:

select group#, status, type, substr(member, 1, 255)
from V$LOGFILE
order by group#




* Por otro lado también necesitaremos saber la ubicación de los ficheros de control (controlfiles). Para ello ejecuta la consulta:

Código:

select substr(value, 1, 255)
from v$system_parameter
where name = 'control_files'


Devolverá algo así como:


E:\Oracle\oradata\oracl\CONTROL01.CTL, E:\Oracle\oradata\oracl\CONTROL02.CTL,
E:\Oracle\oradata\oracl\CONTROL03.CTL




* La siguiente consulta nos indicará si la base de datos está en modo ARCHIVELOG:

Código:

select log_mode 
from V$DATABASE



* Si la consulta anterior devuelve "ARCHIVELOG" guardaremos la ubicación de los log archivados, con la consulta:

Código:

select recid, substr(name, 1, 255), deleted, archived 
from V$ARCHIVED_LOG




* Esta otra consulta nos dará el nombre de la base de datos, la versión de Oracle y el nombre del host donde está instalada (esta información puede ser necesaria para duplicar la base de datos):

Código:

select instance_name, host_name, version
from v$instance



* También nos puede ser útil saber cuánto ocupa la base de datos, para reservar el espacio necesario para la restauración. Ejecutaremos la consulta:

Código:

select sum(BYTES)/1024/1024 MB
from DBA_EXTENTS




2. A continuación copiaremos el fichero de configuración actual de nuestra BD de Oracle. Ejecutando la siguiente consulta SQL obtendremos dónde se encuentra:

Código:

select name, substr(value, 1, 255)
from v$parameter
where name like '%spfile%'


Devolverá algo como esto:
%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA

donde "%ORACLE_HOME%" será el directorio de instalación de Oracle y "%ORACLE_SID%" será el nombre de la base de datos. Copiaremos también este fichero.

Un ejemplo del contenido de este fichero:

Código:

*.aq_tm_processes=1
*.background_dump_dest='E:\Oracle\admin\oracl\bdump'
*.compatible='9.2.0.0.0'
*.control_files='E:\Oracle\oradata\oracl\CONTROL01.CTL',
'E:\Oracle\oradata\oracl\CONTROL02.CTL',
'E:\Oracle\oradata\oracl\CONTROL03.CTL'
*.core_dump_dest='E:\Oracle\admin\oracl\cdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='oracl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oraclXDB)'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='oracl'
*.java_pool_size=33554432
*.job_queue_processes=10
*.large_pool_size=8388608
*.log_archive_start=FALSE
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=50331648
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='E:\Oracle\admin\oracl\udump'







3. Detenemos la base de datos desde SQL Plus con el siguiente comando. Recuerda que al hacer esto cualquier transacción que haya ejecutándose sin que se haya hecho commit se perderá:

shutdown immediate;




4. Una vez detenida la base de datos, procederemos a copiar todos los ficheros obtenidos en los pasos anteriores al destino deseado para la copia de seguridad (unidad USB extraíble, unidad de cinta, etc):

* Ficheros de datos (Datafiles)
* Redo log
* Log archivado (log archived)
* Ficheros de control (control files)
* Fichero .ora de configuración




5. También será necesario el fichero de contraseñas de los usuarios DBA de Oracle. Es un fichero donde Oracle guarda la contraseña (encriptada, por supuesto) de los usuarios administradores. Este fichero se suele encontrar en:

C:\Oracle\database\PWDOracl.ora

Teniendo en cuenta que "C:\Oracle" será el directorio de instalación de Orace y "Oracl" será el nombre de la base de datos de Oracle.







En principio, con estos ficheros y guardando los resultados de las consultas SQL anteriores sería suficiente para poder restaurar esta copia en cualquier otro equipo con Oracle Server instalado (recomendable la misma versión que la que hemos copiado).

Para restaurar la base de datos, sería suficiente con:

1. Instalar Oracle Server (misma versión).

2. Crear una base de datos (a ser posible con el mismo nombre SID), utilizando el asistente. Esta base de datos no es necesario configurarla.

3. Detener la base de datos creada.

4. Machacar el fichero de contraseñas "PWDNombreBD.ora" por el copiado.

5. Copiar todos los ficheros anteriores (datafiles, controlfiles, redolog, etc) a las mismas unidades y carpetas de las que se copiaron. Reemplazando, incluso, el fichero del tablespace system y los ficheros de control.

Es conveniente respetar las rutas, si no se respetan habrá que iniciar la base de datos en modo "mount" con "startup mount" y cambiar las ubicaciones de los ficheros de datos con "alter database rename file 'ubiacion_anterior_nombre_fichero' to 'ubicacion_nueva_nombre_fichero'.

6. Reemplazar el fichero de configuración "SPFILE%ORACLE_SID%.ORA".

7. Iniciar la base de datos en modo normal con:

startup


Ultima edición por alonsojpd el Jue May 31, 2007 4:36 am, editado 1 vez
MensajePublicado:
Mar Ago 15, 2006 11:43 am
Top of PageVer perfil de usuario
Invitado






Asunto: Responder citando

He probado y no me ha funcionado, se ha quedado caída la instancia y me ha sido imposible iniciarla. He instalado otro oracle en otro server, la misma versión y con el mismo nombre, he seguido los pasos anteriores. Había dbf ubicados en ubicación distinta, he aplicado el comando alter database rename.... y se ha ejecutado correctamente, pero a la hora de arrancar la instancia con startup da error y no me deja iniciarla.
En una bd noarchivelog se podrían copiar los dbf y llevarlos a otra bd tambien en noarchivelog e intentar hacer que la otra bd use ese dbf? En definitiva, hacer lo que se puede hacer con sql server 2000, copiar mdf y ldf en otro server y adjuntar.
Muchas gracias.
MensajePublicado:
Mie Ago 30, 2006 11:13 am
Top of Page
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