Archivo

Entradas Etiquetadas ‘backup and restore oracle’

Modo ArchiveLog

Domingo, 19 de abril de 2009 Jimy Godoy Sin comentarios

Necesitamos realizar hot backup vía RMAN, una base de datos standby, stream, para esto y muchas otras cosas es necesario que nuestra base de datos se encuentre en modo archivelog.
Lo primero es verificar si nuestra base de datos se encuentra en modo archivelog:

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence      9
Current log sequence           11
SQL>

No Archive Mode indica que nuestra base de datos no se encuentra en modo archivelog, USE_DB_RECOVERY_FILE_DEST indica que el destino por defecto para los archivelog es el db_recovery_file_dest.
Para identificar el destino de los archivelog verificamos el parámetro db_recovery_file_dest:

SQL> sho parameters db_recovery_file_dest

NAME                    TYPE       VALUE
db_recovery_file_dest      string     /u01/app/oracle/db/flash_recovery_area
db_recovery_file_dest_size big integer 2G
SQL>

Ahora dejaremos nuestra base de datos en modo archivelog, para ello es necesario que la base de datos se levante modo mount:

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL>

Verificamos nuevamente el modo de nuestra base de datos:

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     9
Next log sequence to archive   11
Current log sequence           11
SQL>

Para probar se genera un archivelog:

SQL> alter system archive log current;

Verificamos el archivelog generado en el direcotrio db_recovery_file_dest, dentro de este directorio se creará un directorio con el nombre de la base de datos y dentro de este otro directorio con la fecha de hoy:

oracle@jimy-desktop$ cd /u01/app/oracle/db/flash_recovery_area/JIMYDB/archivelog/2009_04_19
oracle@jimy-desktop$ ls
o1_mf_1_11_4ypm67z1_.arc
oracle@jimy-desktop$

Si se desea cambiar el formato y directorio de archivelog log_archive_dest_1 y log_archive_format. Para este ejemplo dejaremos como formato de los archivelog el thread seguido del número de secuencia y el stamp con la extensión arc, los archivelogs los guardaremos en el directorio /u02/archivelog:

SQL> alter system set log_archive_dest_1=’LOCATION=/u02/archivelog’ scope=spfile;
SQL> alter system set log_archive_format=’%t_%s_%r.arc’ scope=spfile;
SQL> shutdown immediate;
SQL> startup
SQL> alter system archive log current;

Luego verificamos:

oracle@jimy-desktop$ cd /u02/archivelog/
oracle@jimy-desktop$ ls
1_12_684463284.arc
oracle@jimy-desktop$

Espero la información les sea de utilidad.

pdf Modo ArchiveLogDescargar Articulo Completo Formato PDF

Saludos!
Jimy Godoy Maureira

  • Share/Bookmark

Clonar Base De Datos con RMAN

Martes, 9 de septiembre de 2008 Jimy Godoy 15 comentarios

“Necesito una copia exacta de la base de datos”, “Quiero que clonen esta base de datos aquí, allá, y otro clon para comparar versiones y otro clon para…”. ¿Cuántas veces hemos escuchado esas solicitudes?, afortunadamente RMAN tiene la habilidad de clonar una base de datos, el requisito: un backup de la base de datos a clonar realizado con RMAN. A continuación realizaremos un ejemplo de clonación o duplicación de una base de datos.

Para este ejemplo utilizaremos una base de datos llamada PRUEBADB y la clonaremos con el nombre CLONDB.

Requisitos:

Debe existir al menos un backup de la base de datos a clonar, este backup debe ser realizado con RMAN. Si nuestra base de datos no se encuentra bajo un régimen de respaldos tendremos que realizar un backup de esta.
Para este ejemplo el ORACLE_HOME es /u01/app/oracle/

Paso 0:

Modificar el archivo /etc/oratab y agregar al final la siguiente línea:

CLONDB:/u01/app/oracle/db:N

Luego, debemos ambientarnos:

[oracle@nodo1 ~]$ . oraenv
ORACLE_SID = [oracle] ? PRUEBADB
[oracle@nodo1 ~]$

Si no existe un backup, se realizará uno a través de RMAN.
Se crea el directorio /u02/backup

mkdir -p /u02/backup

Es necesario dejar la base de datos en modo ARCHIVELOG:

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> startup;

Nos conectamos a RMAN:

/u01/app/oracle/db/bin/rman target /

Y ejecutamos el siguiente script:

run {
ALLOCATE CHANNEL d1 DEVICE TYPE disk parms ‘ENV=(OB2BARLIST=PRUEBADB)’;
ALLOCATE CHANNEL d2 DEVICE TYPE disk parms ‘ENV=(OB2BARLIST=PRUEBADB)’;
ALLOCATE CHANNEL d3 DEVICE TYPE disk parms ‘ENV=(OB2BARLIST=PRUEBADB)’;
ALLOCATE CHANNEL d4 DEVICE TYPE disk parms ‘ENV=(OB2BARLIST=PRUEBADB)’;
backup incremental level 0
format ‘/u02/backup/backup<PRUEBADB_%s:%t:%p>.dbf’
database;
backup
format ‘/u02/backup/backup<PRUEBADB_%s:%t:%p>.alf’
archivelog all;
backup
format ‘/u02/backup/backup<PRUEBADB_%s:%t:%p>.ctf’
current controlfile;
}

Paso 1:

Creamos un pfile para extraer los parámetros de inicialización de la base de datos PRUEBADB:

SQL> create pfile=’/u01/app/oracle/db/dbs/initCLONDB.ora’ from spfile;

Modificamos el pfile generado, para este caso el pfile contiene los siguientes parámetros:

[oracle@nodo1 dbs]$ cat /u01/app/oracle/db/dbs/initCLONDB.ora
PRUEBADB.__db_cache_size=188743680
PRUEBADB.__java_pool_size=4194304
PRUEBADB.__large_pool_size=4194304
PRUEBADB.__shared_pool_size=79691776
PRUEBADB.__streams_pool_size=0
*.audit_file_dest=’/u01/app/oracle/admin/PRUEBADB/adump’
*.background_dump_dest=’/u01/app/oracle/admin/PRUEBADB/bdump’
*.compatible=’10.2.0.1.0′
*.control_files=’/u02/oradata/PRUEBADB/control01.ctl’, ‘/u02/oradata/PRUEBADB/control02.ctl’, ‘/u02/oradata/PRUEBADB/control03.ctl’
*.core_dump_dest=’/u01/app/oracle/admin/PRUEBADB/cdump’
*.db_block_size=8192
*.db_domain=”
*.db_file_multiblock_read_count=16
*.db_name=’PRUEBADB’
*.db_recovery_file_dest=’/u01/app/oracle/flash_recovery_area’
*.db_recovery_file_dest_size=2147483648
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=PRUEBADBXDB)’
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.sga_target=285212672
*.undo_management=’AUTO’
*.undo_tablespace=’UNDOTBS1′
*.user_dump_dest=’/u01/app/oracle/admin/PRUEBADB/udump’

Modificamos el archivo initCLONDB.ora cambiando donde referencia PRUEBADB por CLONDB y agregar las siguientes líneas para indicar que los archivos acepten una estructura diferente a como vienen en el backup., luego el archivo initCLONDB.ora debe quedar de la siguiente forma:

[oracle@nodo1 CLONDB]$ cat /u01/app/oracle/db/dbs/initCLONDB.ora
CLONDB.__db_cache_size=188743680
CLONDB.__java_pool_size=4194304
CLONDB.__large_pool_size=4194304
CLONDB.__shared_pool_size=79691776
CLONDB.__streams_pool_size=0
*.audit_file_dest=’/u01/app/oracle/admin/CLONDB/adump’
*.background_dump_dest=’/u01/app/oracle/admin/CLONDB/bdump’
*.compatible=’10.2.0.1.0′
*.control_files=’/u02/oradata/CLONDB/control01.ctl’, ‘/u02/oradata/CLONDB/control02.ctl’, ‘/u02/oradata/CLONDB/control03.ctl’
*.core_dump_dest=’/u01/app/oracle/admin/CLONDB/cdump’
*.db_block_size=8192
*.db_domain=”
*.db_file_multiblock_read_count=16
*.db_name=’CLONDB’
*.db_recovery_file_dest=’/u01/app/oracle/flash_recovery_area’
*.db_recovery_file_dest_size=2147483648
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=CLONDBXDB)’
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.sga_target=285212672
*.undo_management=’AUTO’
*.undo_tablespace=’UNDOTBS1′
*.user_dump_dest=’/u01/app/oracle/admin/CLONDB/udump’
DB_FILE_NAME_CONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/)
LOG_FILE_NAME_CONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/)

Seguido, es necesario crear los directorios que utilice el archivo de parámetros:

[oracle@nodo1 dbs]$ mkdir -p /u01/app/oracle/admin/CLONDB/adump
[oracle@nodo1 dbs]$ mkdir -p /u01/app/oracle/admin/CLONDB/bdump
[oracle@nodo1 dbs]$ mkdir -p /u02/oradata/CLONDB/
[oracle@nodo1 dbs]$ mkdir -p /u01/app/oracle/admin/CLONDB/cdump
[oracle@nodo1 dbs]$ mkdir -p /u01/app/oracle/admin/CLONDB/udump

Paso 2:

Se crea un archivo de password para la nueva base de datos CLONDB:

orapwd file=/u01/app/oracle/db/dbs/orapwCLONDB password=password entries=10;

Paso 3

Modificar listener.ora y tnsnames.ora para la nueva base de datos:

[oracle@nodo1 admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/db/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/db)
(PROGRAM = extproc))
(SID_DESC =
(SID_NAME = PRUEBADB)
(ORACLE_HOME = /u01/app/oracle/db))
(SID_DESC =
(SID_NAME = CLONDB)
(ORACLE_HOME = /u01/app/oracle/db)))
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521))))
[oracle@nodo1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
PRUEBADB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521)))
(CONNECT_DATA =
(SERVICE_NAME = PRUEBADB)))

CLONDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = CLONDB)))

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

Reload el listener

lsnrctl reload

Paso 4

Nos ambientarnos como CLONDB y conectamos vía sqlplus:

[oracle@nodo1 admin]$ . oraenv
ORACLE_SID = [PRUEBADB] ? CLONDB
[oracle@nodo1 admin]$ sqlplus sys/password@CLONDB as sysdba

Luego creamos un SPFILE:

SQL> CREATE SPFILE FROM PFILE=’/u01/app/oracle/db/dbs/initCLONDB.ora’;

Luego levantamos la base de datos en modo nomount:

SQL> startup nomount force;

Paso 5

Con la base de datos clon montada podemos conectarnos a RMAN, es necesario conectarse a la base de datos original (PRUEBADB) y a la clonada como AUXILIARY:

[oracle@nodo1 admin]$ . oraenv
ORACLE_SID = [CLONDB] ?
[oracle@nodo1 admin]$ /u01/app/oracle/db/bin/rman TARGET sys/password@PRUEBADB AUXILIARY sys/password@CLONDB
Recovery Manager: Release 10.2.0.1.0 – Production on Tue Sep 9 17:09:13 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: PRUEBADB (DBID=428612040)
connected to auxiliary database: CLONDB (not mounted)
RMAN>

Paso 6

En RMAN ejecutamos la siguiente instrucción para clonar la base de datos:

RMAN> DUPLICATE TARGET DATABASE TO CLONDB;

Listo, base de datos duplicada!

pdf Clonar Base De Datos con RMANDescargar Articulo Completo Formato PDF

Saludos!
Jimy Godoy.

  • Share/Bookmark