martes, 19 de diciembre de 2017

Duplicate Database From a Full Backup {3 faciles pasos}

Procedimiento para generar una BD Standby a partir de un backup full de la BD Primaria.

0- Iniciamos una instancia en modo mount con solo un parametro en el init.
Db_name=sydxxx

SQL> startup mount pfile='/home/oracle/init_18_12_2017.ora';

1- Debemos generar un backup full en nuestra BD primaria.
Creamos el archivo: backupfull.rman con el siguiente Script (adatamos los canales y rutas a nuestra necesidad)

run {
backup as compressed backupset database format '/respaldos/BACKUP_LEVEL_0%U' TAG 'PARA_STANBY'  INCLUDE CURRENT CONTROLFILE;
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
backup as compressed backupset archivelog all FORMAT '/respaldos/BACKUP_ARCHIVES_%U' tag 'ARCHIVES_PARA_STANBY';
}


2- Una vez finalizado el backup lo copiamos a un directorio donde nuestro server Standby pueda leer las piezas y generamos el siguiente el archivo con el siguiente contenido: duplicate.rman


run {
allocate auxiliary channel stby type disk;
allocate auxiliary channel stby2 type disk;
allocate auxiliary channel stby3 type disk;
allocate auxiliary channel stby4 type disk;
allocate auxiliary channel stby54 type disk;
allocate auxiliary channel stby4a type disk;
allocate auxiliary channel stby4b type disk;
allocate auxiliary channel stbyc4 type disk;
allocate auxiliary channel stby4d type disk;
allocate auxiliary channel stby4e type disk;
allocate auxiliary channel stby4f type disk;
duplicate target database for standby dorecover backup location='/respaldos/BACKUP_FOR_DUPLICATE/'
NOFILENAMECHECK
spfile
parameter_value_convert 'sydarg','sydxxx'
set db_unique_name='sydxxx'
set db_create_file_dest='+DG_DATARG_01'
set db_recovery_file_dest='+DG_FRARG_01'
set db_file_name_convert='+DG_DATARG_01/sydarg','+DG_DATARG_01/sydxxx'
set log_file_name_convert='+DG_FRARG_01/sydarg','+DG_FRARG_01/sydxxx' 
set control_files='+DG_FRARG_01','+DG_DATARG_01'
set log_archive_max_processes='5'
set FAL_SERVER='sydarg' COMMENT 'Es la primaria'
set FAL_CLIENT='sydxxx' COMMENT 'Es la standby'
set log_archive_config='dg_config=(sydarg,sydxxx)'
set log_archive_dest_2='service=sydarg ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=sydxxx'
set log_archive_dest_1='LOCATION=+DG_FRARG_01'
set STANDBY_FILE_MANAGEMENT='auto';
}

---- editar rutas y nombres

3- Nos conectamos a Rman con la siguiente instruccion y ejecutamos el archivo

# rman connect auxiliary / @duplicate.rman

viernes, 15 de diciembre de 2017

Refresh Standby con Backup Incremental - Actualizar Standby con un backup incremental {13 faciles pasos}

1- Detener el proceso de Media Recovery
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
 
2- Select al SCN donde donde se encuentra la Standsby
SELECT to_char(CURRENT_SCN) FROM V$DATABASE;

          








3- Con el Scn realizaremos un backup en la BD primaria. 

RUN {
ALLOCATE CHANNEL D1 TYPE DISK;
ALLOCATE CHANNEL D2 TYPE DISK;
BACKUP INCREMENTAL FROM SCN 13546619995984 DATABASE FORMAT '/backup/rman/BAckup_incre_%U' tag 'FORSTANDBY';
}


4- Una vez finalizado el backup, copiamos todas las piezas a un directorio que pueda leer la DB Standby y catalogamos las piezas desde RMAN en la standby
RMAN> CATALOG START WITH '/backup/ForStandby'; 

4- Luego hacer recover de la Standby 
RMAN> RECOVER DATABASE NOREDO; 
 
5- Realizar un backup del controlfile en la primaria
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/backup/controlStandbyCTRL.bck'; 

6- Copiar el backup del controlfile a un directorio disponible para la Standby

7- En la primaria realizar un backup de los nombres de los datafiles
SQL> 
spool datafile_names_step8.txt
set lines 200
col name format a60
select file#, name from v$datafile order by file# ;
spool off

8- Conectarse a la Standby y restaurar el controlfile
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP NOMOUNT; 
RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/controlStandbyCTRL.bck'; 

9- Shut de Standsby
SQL> SHUTDOWN; 
SQL> STARTUP MOUNT; 

10- Para que la estructura de datafiles en la standby sea reconocida por el controlfile
debemos catalogar los archivos
RMAN> CATALOG START WITH '+DATA/instance/datafile/';
 
11- Hacer que esos Datafiles sean los actuales
RMAN> SWITCH DATABASE TO COPY;  

12- Debemos limpiar todos los redo logs
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3 

13- Reiniciar el proceso de media recovery
SQL> RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

viernes, 6 de octubre de 2017

ORA-07445 dispatcher



dispatcher 'D000' encountered error getting listening address
Fri Oct  6 09:23:20 2017
Errors in file /oracle/product/admin/xxxxx/bdump/xxxxxxxx_ora_8944.trc:
ORA-07445: exception encountered: core dump [kslgetl()+352] [SIGSEGV] [Invalid permissions for mapped object] [0x0000001D8] [] []
ORA-00108: failed to set up dispatcher to accept connection asynchronously
Fri Oct  6 09:23:23 2017
found dead dispatcher 'D000', pid = (36, 215)
Fri Oct  6 09:23:23 2017

Si revisamos el .trc

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /oracle/product/10.2
System name:    HP-UX
Node name:      xxxx
Release:        B.11.31
Version:        U
Machine:        ia64
Instance name: xxxxx
Redo thread mounted by this instance: 1
Oracle process number: 0
Unix process pid: 8944, image: xracle@xx

Ioctl ASYNC_CONFIG error, errno = 1
Warning: keltnfy call to ldmInit failed with error 46
*** 2017-10-06 07:23:05.941
network error encountered getting listening address:
  NS Primary Error: TNS-12533: TNS:illegal ADDRESS parameters
  NS Secondary Error: TNS-12560: TNS:protocol adapter error
  NT Generic Error: TNS-00503: Illegal ADDRESS parameters
OPIRIP: Uncaught error 108. Error stack:
ORA-00108: failed to set up dispatcher to accept connection asynchronously
Exception signal: 11 (SIGSEGV), code: 2 (Invalid permissions for mapped object), addr: 0x1d8, PC: [0x4000000002e30480, kslget
------------------------------------------------------------------------------------------------------------------------
Solucion:
Revisar el archivo /etc/hosts
y confirmar que el ip y hostname de nuestra maquina se encuentra definido y si esta correcto


viernes, 17 de marzo de 2017

ORA-27140, ORA-27300, ORA-27301, ORA-27302, ORA-27303

Si al tratar de logearte en la consola Sqlplus obtienes un error similar a este


------------------------------------------------------------------------------------------------------

ERROR:
ORA-27140: attach to post/wait facility failed
ORA-27300: OS system dependent operation:invalid_egid failed with status: 1
ORA-27301: OS failure message: Operation not permitted
ORA-27302: failure occurred at: skgpwinit6
ORA-27303: additional information: startup egid = 500 (oracle), current egid =
501 (oinstall)

-------------------------------------------------------------------------------------------------------

Es conveniente que revises los permisos del archivo oracle ubicado en $ORACLE_HOME/bin
-------------
# ls -la /u01/app/oracle/product/11.2.0/db/bin/oracle
-rwsr-s--x. 1 oracle oracle   239626683 mar 15 14:45 oracle
-------------

Verifica que el grupo sea el correcto. Es posible que durante una operacion de swichover los permisos del archivo hayan cambiando y eso no te permite logearte. 
Como root cambia el grupo y problema resuelto

# chown oracle:oinstall oracle


Realizar un switchover en DataGuard

Realizar un cambio de Rol en ambiente DataGuard o switchover

En el siguiente video les mostrare como debe comportarse las BD al realizar un switchover. Visualizando los alert_log de cada BD podemos observar los cambios en cada instancia.


Al finalizar el proceso de cambio de rol la nueva Bd Standby no subio de forma automatica, pero no se preocupen. No es nada grave, solo conectarse y subirla manual. 

miércoles, 15 de marzo de 2017

Guia Rapida para Crear y configurar Discos para ASM

Esta es una guia sencilla para crear y configurar discos para usarlos en ASM.

Debemos instalar el paquete para manejar ASM

# yum install oracleasm-support oracleasmlib oracleasm-`uname -r`

como Root Nos ubicamos en el directorio:
/etc/init.d/
y ejecutamos

# ./oracleasm configure

Asumimos que el servidor ya tiene los discos instalados y sin formato ni particion. Para este ejemplo tenemos creados 6 discos de 2GB c/u


# fdisk -l | grep 2147
Disk /dev/sda: 21.5 GB, 21474836480 bytes
Disk /dev/sdc: 2147 MB, 2147483648 bytes
Disk /dev/sdd: 2147 MB, 2147483648 bytes
Disk /dev/sde: 2147 MB, 2147483648 bytes
Disk /dev/sdf: 2147 MB, 2147483648 bytes
Disk /dev/sdg: 2147 MB, 2147483648 bytes
Disk /dev/sdh: 2147 MB, 2147483648 bytes

Ahora vamos aproceder a particionar todos los discos

# fdisk /dev/sdc
# fdisk /dev/sdd
# fdisk /dev/sde
# fdisk /dev/sdf
# fdisk /dev/sdg
# fdisk /dev/sdh


Ahora verificamos que se haya creado correctamente la particion en cada disco

# fdisk -l | grep /dev/sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes
/dev/sda1   *           1        2611    20970496   83  Linux
Disk /dev/sdb: 31.1 GB, 31138512896 bytes
/dev/sdb1               1         638     5120000   82  Linux swap / Solaris
/dev/sdb2             638        3786    25287680   83  Linux
Disk /dev/sdc: 2147 MB, 2147483648 bytes
/dev/sdc1               1         261     2096451   83  Linux
Disk /dev/sdd: 2147 MB, 2147483648 bytes
/dev/sdd1               1         261     2096451   83  Linux
Disk /dev/sde: 2147 MB, 2147483648 bytes
/dev/sde1               1         261     2096451   83  Linux
Disk /dev/sdg: 2147 MB, 2147483648 bytes
/dev/sdg1               1         261     2096451   83  Linux
Disk /dev/sdh: 2147 MB, 2147483648 bytes
/dev/sdh1               1         261     2096451   83  Linux
Disk /dev/sdf: 2147 MB, 2147483648 bytes
/dev/sdf1               1         261     2096451   83  Linux

Ahora vamos a crear un disco visible para ASM con cada una de esas particiones

# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...

# oracleasm createdisk DATA01 /dev/sdc1
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk DATA02 /dev/sdd1
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk DATA03 /dev/sde1
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk DATA04 /dev/sdf1
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk FRA01 /dev/sdg1
Writing disk header: done
Instantiating disk: done
# oracleasm createdisk FRA02 /dev/sdh1
Writing disk header: done
Instantiating disk: done

Ahora verificamos nuestros discos

# oracleasm listdisks
DATA01
DATA02
DATA03
DATA04
FRA01
FRA02

Listo ! ya estan visibles para la instalacion de software