Thursday, July 10, 2014

ORACLE 11G R2: RESTORE A OLD DATABASE SPFILE FROM RMAN (USING BACKUP PIECE)

Database: ORCL
ORCL DBID: 3343811387
RMAN Database: RMANDB

If you need restore a old spfile from rman backup

1.- First startup ORCL database with pfile, if any, and enter in RMAN to see that backup piece can be used


Rman target / catalog=rman/temporal@rmandb

RMAN> Set dbid 3343811387;

RMAN> list backup of spfile;

List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
7730769 Full 17.75M SBT_TAPE 00:00:31 09-AUG-11
BP Key: 7730771 Status: AVAILABLE Compressed: NO Tag: TAG20110809T122115
Handle: 03mjicct_1_1 Media: 0186L4
SPFILE Included: Modification time: 09-AUG-11
SPFILE db_unique_name: ORCL

BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
7730787 Full 256.00K SBT_TAPE 00:00:30 09-AUG-11
BP Key: 7730790 Status: AVAILABLE Compressed: NO Tag: TAG20110809T122330
Handle: 04mjice4_1_1 Media: 0186L4
SPFILE Included: Modification time: 09-AUG-11
SPFILE db_unique_name: ORCL

BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
7741855 Full 17.75M SBT_TAPE 00:01:11 10-AUG-11
BP Key: 7741858 Status: AVAILABLE Compressed: NO Tag: TAG20110810T101732
Handle: 06mjkpgu_1_1 Media: 0186L4
SPFILE Included: Modification time: 10-AUG-11
SPFILE db_unique_name: ORCL

BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
7741878 Full 256.00K SBT_TAPE 00:00:36 11-AUG-11
BP Key: 7741881 Status: AVAILABLE Compressed: NO Tag: TAG20110810T102027
Handle: 07mjkpjd_1_1 Media: 0186L4
SPFILE Included: Modification time: 11-AUG-11
SPFILE db_unique_name: ORCL
RMAN> exit

2.- Then shutdown ORCL database and realize the restore from specific bakup piece.

Rman target / catalog=rman/temporal@rmandb
RMAN> Set dbid 3343811387;
RMAN> Startup force nomount;
RMAN> run {
2> allocate channel c1 device type 'SBT_TAPE';
3> RESTORE SPFILE to '+DATA' FROM '04mjice4_1_1';
}
RMAN> shutdown immediate;
RMAN> exit

Then you can startup the ORCL database normally with the restored spfile.

Wednesday, July 9, 2014

ORACLE 11G R2: HOW DO YOU CREATE CONNECTIVITY WITHIN THE CLUSTER (KEYGEN DSA,RSA)

CREATE CONNECTIVITY WITHIN THE CLUSTER


We have a cluster with two members (Host1, Host2).
The same steps for DSA and RSA.
In ORACLE_HOME using oracle user.

1.- Generate the keys.

First we generate in Host1

[oracle@Host1]$ ssh-keygen -t dsa
(all by default)

      Generating public/private dsa key pair.
      Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
      Created directory '/home/oracle/.ssh'.
      Enter passphrase (empty for no passphrase):
     Enter same passphrase again:
     Your identification has been saved in /home/oracle/.ssh/id_dsa.
     Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
     The key fingerprint is:
     5d:8c:42:97:eb:42:ae:52:52:e9:59:20:2a:d3:6f:59 oracle@Host1.dbsconsult.com

2.- Transfer the keys


The public key on each node is copied to both nodes. Execute the following on each node.

In Host2

[oracle@Host2]$ ssh Host1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


       The authenticity of host 'Host1 (192.168.0.184)' can't be established.

       RSA key fingerprint is 00:d9:70:08:bc:fd:b5:e4:e3:df:a3:c7:d8:46:1e:a5.

      Are you sure you want to continue connecting (yes/no)? yes

      Warning: Permanently added 'Host1,192.168.0.184' (RSA) to the list of known hosts.

      oracle@Host1's password:


In Host1

[oracle@Host1]$ ssh Host2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

     The authenticity of host 'Host2 (192.168.0.185)' can't be established.

     RSA key fingerprint is 00:d9:70:08:bc:fd:b5:e4:e3:df:a3:c7:d8:46:1e:a5.

    Are you sure you want to continue connecting (yes/no)? yes

    Warning: Permanently added 'Host2,192.168.0.185' (RSA) to the list of known hosts.

    oracle@Host2's password:

TESTING THE CONECTIVITY

Execute the command in both nodes:

./cluvfy comp nodecon -n Host1,Host2
Verifying node connectivity
Checking node connectivity...
Checking hosts config file...
Verification of the hosts config file successful
Node connectivity passed for subnet "172.21.54.0" with node(s) Host2,Host1
TCP connectivity check passed for subnet "172.21.54.0"
Node connectivity passed for subnet "10.10.10.0" with node(s) Host2,Host1
TCP connectivity check passed for subnet "10.10.10.0"
Interfaces found on subnet "172.21.54.0" that are likely candidates for VIP are:
Host2 eth0:172.21.54.31
Host1 eth0:172.21.54.30
Interfaces found on subnet "10.10.10.0" that are likely candidates for a private interconnect are:
Host2 eth1:10.10.10.31
Host1 eth1:10.10.10.30
Node connectivity check passed
Verification of node connectivity was successful.

Monday, July 7, 2014

ORA-01578: HOW TO KNOW WHICH OBJECT (TABLE, INDEX....) IS CORRUPTED

        Sometimes, in alert log file it's appears this message (ORA-01578: ORACLE data block corrupted). You can know which object is corrputed whit these steps and to decide if fix it deleting/recreating object (index, table.. ) or restore object using RMAN BLOCKRECOVER.

ORA-01578: ORACLE data block corrupted (file # 15, block # 608562)
ORA-01110: data file 15: '/software/oracle/wind11/oradata/ORCL/dbfiles/ORCLusers03.dbf'

1.- DBVERIFY

      Using oracle dbverify tool in system prompt to confirm corruption

dbv file=/software/oracle/wind11/oradata/ORCL/dbfiles/ORCLusers03.dbf'


DBVERIFY: Release 11.2.0.2.0 - Production on Tue Oct 16 09:45:07 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - Verification starting : FILE = /software/oracle/wind11/oradata/ORCL/dbfiles/ORCLusers03.dbf'

DBV-00200: Block, DBA 63523122, already marked corrupt
csc(0x0000.3de058f1) higher than block scn(0x0000.00000000)
Page 608562 failed with check code 6054


DBVERIFY - Verification complete

Total Pages Examined         : 2621440
Total Pages Processed (Data) : 2268458
Total Pages Failing   (Data) : 1
Total Pages Processed (Index): 45544
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 8958
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 298480
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 1109032205 (0.1109032205)

2.-  Script SQLPLus to confirm the block marked as corrupted with dbverify is the same it's appears in alert log file

select dbms_utility.data_block_address_file(&&rdba) RFN,
  2  dbms_utility.data_block_address_block(&&rdba) BL
   3  from dual;
 Enter value for rdba: 63523122
old   1: select dbms_utility.data_block_address_file(&&rdba) RFN,
new   1: select dbms_utility.data_block_address_file( 63523122) RFN,
old   2: dbms_utility.data_block_address_block(&&rdba) BL
new   2: dbms_utility.data_block_address_block( 63523122) BL

       RFN         BL
---------- ----------
        15     608562

3.- Script SQLPlus to confirm the tablespace

select file_id AFN, relative_fno, tablespace_name
 from dba_data_files
 where relative_fno=&RFN;
Enter value for rfn: 15
old   3:  where relative_fno=&RFN
new   3:  where relative_fno=15

       AFN RELATIVE_FNO TABLESPACE_NAME
---------- ------------ ------------------------------
        15           15 USERS

4.- Script SQLPlus to know the object corrupted

select * from dba_extents where file_id = &AFN and &BL between block_id AND block_id + blocks - 1;
Enter value for afn: 15
Enter value for bl: 608562
old   1: select * from dba_extents where file_id = &AFN and &BL between block_id AND block_id + blocks - 1
new   1: select * from dba_extents where file_id = 15 and 608562 between block_id AND block_id + blocks - 1

OWNER
------------------------------
SEGMENT_NAME
--------------------------------------------------------------------------------
PARTITION_NAME                 SEGMENT_TYPE       TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
 EXTENT_ID    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
ORCLUSER
PAGERESULTS
                               TABLE              USERS
         0         15     607872    8388608       1024           15

 In this case it's a table, now you must to decide if restore the block using RMAN, or if the table is used as repository temporary table in operations and if it can be deleted and recreated or if the data contained can be restore with oracle utility data pump.

Tuesday, June 10, 2014

ORACLE 11G R2: COMO HACER RESTORE RMAN DE BBDD RAC

Para restaurar la BBDD almacenada dentro en ASM, recuperamos tanto los controlfiles como los datafiles de la BBDD. En su momento, cuando creamos la BBDD RAC, tanto los datafiles como los controlfiles los creamos en el diskgroup de asm +DATA

1.- Paramos la BBDD
    srvctl stop database -d ORCL
    Arrancamos una instancia en modo nomount
    sql> startup nomount;

2.- Restaurar desde rman un controlfile (nos restaura solo un controlfile)

rman target=/ catalog=rman/temporal@rmandb
rman >run {
           2> allocate channel c1 device type 'SBT_TAPE';
           3> send 'NB_ORA_CLIENT=Host1, NB_ORA_SCHED=Backup.ORCL.BBDD.Int.offline.RMAN';
           4> restore controlfile to '+DATA';
           5> release channel c1;
           6> }
           7> exit;

3.- Multiplexar los controlfiles (para que coincida con el numero de controlfiles especificado en el fichero spfile).
Miramos desde asmcmd el nombre del fichero controlfile restaurado en +DATA
ASMCMD> cd +data/orcl/controlfile
ASMCMD> ls
current.259.729258021

rman nocatalog
rman > connect target

connected to target database: ORCL (DBID=3671654340)
using target database control file instead of recovery catalog

rman > restore controlfile from ‘+data/orcl/controlfile/current.259.729258021’;
rman > exit;

si volvemos a asmcmd veremos que nos ha generado los dos controlfile que nos faltan para asi tener un total de 3 que son los que teniamos especificados en el fichero spfile
ASMCMD> cd +data/orcl/controlfile
ASMCMD> ls
current.259.729258021
        current.273.729258023
        current.274.729258021

4.- Restaurar la BBDD.
rman target=/ catalog=rman/temporal@rmandb
rman >run {
                   2> allocate channel c1 device type 'SBT_TAPE';
                   3> send 'NB_ORA_CLIENT=Host1, NB_ORA_SCHED=Backup.ORCL.BBDD.Int.offline.RMAN';
                   4> sql ‘alter database mount’;
                   5> restore database;
                   6> recover database;
                   7> sql 'alter database open resetlogs';
                   8> release channel c1;
                   9> }
5.- Parada de la instancia arrancada y arranque de la base de datos (todas las instancias del cluster)
Sql> shutdown immediate
$ srvctl start database –d ORCL

ORACLE 11G R2: SCRIPT BACKUP EN FRIO DE BBDD RAC (Backup cold)


Este script es para realizar un backup en frio mediante RMAN de una BBDD en modo RAC. La BBDD se llama ORCL y contiene dos instancias llamadas ORCL1 y ORCL2. La base de datos de RMAN se llama RMANDB.

El script que generaremos y lo lanzaran desde Netbackup  cuando toque en la planificación lo llamaremos /home/Oracle/scripts/rman/cold_ORCL.sh. El contenido es


LOGFILE=/home/oracle/scripts/rman/logs/out_backup_cold.log
DATE=`date '+%d%m%y'`
export DATE

# DETENEMOS LA BASE DE DATOS
echo Intentando detener la consola >>$LOGFILE
emctl stop dbconsole
echo Intentando parar la base de datos completa  >>$LOGFILE
srvctl stop database -d ORCL  >>$LOGFILE
echo Se ha parado la base de datos >>$LOGFILE

# Abrimos en modo mount (*SOLO* esta instancia)
echo Intentando levantar instancia local en modo MOUNT >>$LOGFILE
srvctl start instance -i ORCL1 -d ORCL -o mount >>$LOGFILE

echo Instancia montada >>$LOGFILE

# Lanzamos el backup
echo Lanzando backup >>$LOGFILE
Las tres lineas siguientes, son solo una linea de ejecución
$ORACLE_HOME/bin/rman target / catalog rman/password@rmandb CMDFILE=/home/oracle/scripts/rman/cold_ORCL_nbu.rcv LOG=/home/oracle/scripts/rman/logs/cold_ORCL_${DATE}.log

# Derribamos la instancia *local*
echo Derribando instancia local >>$LOGFILE
srvctl stop instance -i ORCL1  -d ORCL  -o immediate >>$LOGFILE
echo Instancia ORCL1 parada >>$LOGFILE

# Volvemos a levantar todo
echo Levantando el cluster >>$LOGFILE
srvctl start database -d ORCL >>$LOGFILE
echo La bd del cluster esta levantada >>$LOGFILE
echo Levantando la consola >> $LOGFILE
emctl start dbconsole


El contenido del script rcv, lanzado en el backup es

run {

# Total de das que mantenemos las copias de seguridad en el medio fsico
configure retention policy to recovery window of 30 days;

# Establecemos el canal de copias de seguridad;
Estos datos os los tienen que suministrar los que se encargan del software del backup
allocate channel c1 device type 'SBT_TAPE';
send 'NB_ORA_CLIENT=Host1, NB_ORA_SCHED=Backup.ORCL.BBDD.Int.offline.RMAN';

# Hacemos un backup completo
backup database include current controlfile;

# Backup del spfile
backup spfile;

sql 'alter database open';

sql 'alter database backup controlfile to trace';
sql 'create pfile from spfile';

# Liberamos el canal
release channel c1;
}


ORACLE 11g R2: RMAN y NetBackup

If you realize the backups using Netbackup, then so that you could be execute from RMAN, in spite of having the client installed in the host where from you will proceed to execute RMAN, it is not sufficient. You need to link to library of the client Netbackup with this command

ln -sf /usr/openv/netbackup/bin/libobk.so64 $ORACLE_HOME/lib/libobk.so

This is valid for all the oracle versions. But also, specially for the version Oracle 11G, it is necessary to install a patch in Netbackup

NB_6.5.5_ET1940073_1_347227.zip

As soon as the client NetBackup was installed, linked the Oracle library and installed the NetBackup patch we can already proceed to realize backups of Oracle using  RMAN.

Monday, May 12, 2014

ORACLE 11G R2: SCRIPTS RESTORE ASM

         Este es un ejemplo de diferentes tipos de restores de ASM de un RAC llamado ORCL. Partiendo de la base que tenemos realizados backups mediante este comando

            date=`date '+%d%m%y'`
            export date
sid="+ASM1"
export sid
asmcmd md_backup /software/oracle/backup/ORCL/asm/Respaldo_DiskGroup_$sid.$date

Procederemos a la restauración del ASM

Caso 1: Creacion del diskgroup y restauración de los metadatos.

ASMCMD> md_restore –-full –G data –-silent /software/oracle/backup/ORCL/asm/ Respaldo_DiskGroup_+ASM1.090910

Caso 2: Restauración de los metadatos sobre un diskgroup ya existente.


ASMCMD> md_restore –-nodg –G data –-silent /software/oracle/backup/ORCL/asm/ Respaldo_DiskGroup_+ASM1.090910

Caso 3: Recreación del Diskgroup
Nos conectamos a la instancia asm como sysasm
           sqlplus '/as sysasm'  
           sqlplus> CREATE DISKGROUP data EXTERNAL REDUNDANCY DISK ‘ORCL:ASMD1’;

Esta es una tabla de opciones de md_restore


Friday, May 9, 2014

ORACLE 11G R2: SCRIPTS BACKUP DEL ASM (METADATOS, SPFILE, RECREACION DE DISKGROUPS)

Ejemplo de backup de la configuración ASM de un RAC llamado ORCL

Realizamos copia de los metadatos y del spfile de asm mediante el comando md_backup de asmcmd

Script /home/oracle/scripts/asm/backasm.sh

##################################################
# Copia de los metadatos de la instancia ASM1 #
##################################################
#!/bin/bash
date=`date '+%d%m%y'`
export date
sid="+ASM1"
export sid
asmcmd md_backup /software/oracle/backup/ORCL/asm/Respaldo_DiskGroup_$sid.$date
asmcmd spbackup +DATA/ORCL/ASMPARAMETERFILE/REGISTRY.253.725461119 /software/oracle/backup/ORCL/asm

Generamos tambien script para recrear el diskgroup

Script /home/oracle/scripts/asm/ backup_diskgroup.sh

# -Script info diskgroups -----------------------------
#!/usr/bin/ksh
# Crash scenario
# Casos :
# ASM disk(s) is not visible on the operating system.
# asm_diskstring parameter is not set correctly on ASM instance(s)
# ASM metadata in disk is overwritten or corrupted

echo "Chequeo el espacio en "$ORACLE_SID
# Para Recrear un Diskgroup....
# CREATE DISKGROUP name EXTERNAL REDUNDANCY DISK 'path1', 'path2', 'path3', ....;
sqlplus '/as sysasm' @/home/oracle/scripts/asm/ASMDiskGroups.sql
cp -p /home/oracle/scripts/asm/ASMDiskGroups.txt /software/oracle/backup/ORCL/asm

Script /home/oracle/scripts/asm/ASMDiskGroups.sql

spool /home/oracle/scripts/asm/ASMDiskGroups.txt
select instance_name from v$instance
/
set lines 130
col path for a35
col Diskgroup for a15
col DiskName for a20
col disk# for 999
col total_mb for 999,999,999
col free_mb for 999,999,999
compute sum of total_mb on DiskGroup
compute sum of free_mb on DiskGroup
set pages 255
select a.name DiskGroup, b.disk_number Disk#, b.name DiskName, b.total_mb, b.free_mb,
b.path, b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number
order by b.group_number, b.disk_number, b.name
/
exit
/


spool off

ORACLE 11G R2: BACKUP DEL OLR

El OLR file (Oracle Local Registry) es el fichero de configuración de cada nodo del cluster

Script generado en /home/oracle/scripts/ocr/backolr.sh


Se lanza con el usuario root (desde el crontab del usuario)

La ubicación de dichas copias esta en /software/oracle/product/11.2.0/crs/cdata/Host1

Para sacar un listado de los backups realizados se ejecuta el comando

ocrconfig –local –showbackup

En el script realizamos una copia manual que la deja en la ubicación antes dicha

/software/oracle/product/11.2.0/crs/cdata/Host1/backup_20100908_120001.olr

Una vez generada esa copia manual, hacemos copia de todos los olr a la ubicacion centralizada de copias de esa maquina para llevarla a cinta.

El script /home/oracle/scripts/ocr/backolr.sh

ocrconfig -local -manualbackup
cp -p /software/oracle/product/11.2.0/crs/cdata/Host1/*.* /rutadestino/olr

ORACLE 11G R2: BACKUP DEL OCR

El OCR file (Oracle Cluster Registry) es el fichero de configuración del cluster.

Script generado en /home/oracle/scripts/ocr/backocr.sh

Se lanza con el usuario root (desde el crontab del usuario)

En la version de Oracle 11 R2, las copias de seguridad de OCR se hacen automáticamente cada 4 horas. Mantiene siempre las 3 ultimas copias (backup00.ocr, backup01.ocr y backup02.ocr) mas 1 diaria (day.ocr) mas 1 semanal (week.ocr).

La ubicación de dichas copias esta en /software/oracle/product/11.2.0/crs/cdata/Host-Cluster/

Para sacar un listado de los backups realizados se ejecuta el comando

ocrconfig –showbackup

En el script realizamos una copia manual que la deja en la ubicación antes dicha

/software/oracle/product/11.2.0/crs/cdata/Host-Cluster/backup_20100906_120001.ocr

Una vez generada esa copia manual, hacemos copia de todos los ocr a la ubicacion centralizada de copias de esa maquina para llevarla a cinta.

El script /home/oracle/scripts/ocr/backocr.sh

ocrconfig -manualbackup
cp -p /software/oracle/product/11.2.0/crs/cdata/Host-Cluster/*.* /rutadestino/ocr

Wednesday, May 7, 2014

CONSEJOS EN LA CREACION DE BBDD

                     Cuando creo una BBDD tengo una serie de inercias o costumbres que aplico basadas en la experiencia que a mi me han venido bien, tanto como seguridad como optimizaciòn o tener las cosas ordenadas

TABLESPACES TEMPORALES

                     Por defecto en la creación de la BBDD creamos un tablespace temporal (llamado TEMP) para todos los usuarios incluidos SYS/SYSTEM. yo una vez creada la BBDD suelo crear un tablespace temporal solo para los usuarios SYS/SYSTEM (llamado TEMPSYS). Mantengo el tablespace temporal TEMP como default temporary asi que cualquier nuevo usuario creado en la BBDD por defecto tendrá definido ese tablespace. Pero para SYS/SYSTEM prefiero tener su propio tablespace (suelo asignarle 500MB) para que todas aquellas tareas de sistema que requieran segmentos temporales no sufran ningún tipo de interferencia del resto de usuarios.

REDOLOGS

                     - Siempre creo como mínimo 3 grupos de RedoLogs con dos miembros en cada grupo. Si la BBDD es muy transaccional ( mucha generación de archivelogs) puedo tener 4 grupos de RedoLogs.    

                      - Siempre mantengo una nomenclatura para los 3 grupos y sus dos miembros (SIDredoNumGrupoNumMiembro.rdo) por ejemplo para una BBDD llamada ORCL seria
                      Grupo 1: ORCLredo11.rdo, ORCLredo12.rdo
                      Grupo 2: ORCLredo21.rdo, ORCLredo22.rdo
                      Grupo 3: ORCLredo31.rdo, ORCLredo32.rdo

                     - Siempre ubico los redologs en 2 ubicaciones diferentes. Los miembros 1 de cada grupo los ubico en el mismo FS o ASMdiskgroup donde tengo el primer fichero de control de la BBDD, los miembros 2 de cada grupo los ubico en el mismo FS o ASMdiskgroup donde tengo el segundo fichero de control de la BBDD.

                   - ¡¡¡¡ IMPORTANTE ¡¡¡¡ Para mi esta es una errata de Oracle por una experiencia vivida, por defecto Oracle da extensión .log a los ficheros RedoLogs de la BBDD, yo siempre los creo con extensión .rdo. En un cliente un operador de guardia de noche, al llenársele un FS hizo un rm -s *.log (borrar todos los ficheros con extension log incluyendo subdirectorios) con lo que se borraron los redologs de la BBDD con lo que hubo que intervenir por la parada de servicio que conllevo dicho borrado accidental. 
Para mi la extensión rdo en un contexto de BBDD es clara, viendo un fichero con esa extensión se que es un redolog.

CONTROLFILES

                     - Siempre defino  3 controlfiles en la creación de una BBDD con una nomenclatura SIDcontrolfileNum.ctl. La extensión ctl me dirá siempre que es un controlfile asi que par a una BBDD llamada ORCL seria ORCLcontrolfile01.ctl,  ORCLcontrolfile02.ctl y ORCLcontrolfile03.ctl
                               
                     - Siempre ubico los controlfiles en 3 ubicaciones diferentes. ORCLcontrolfile01.ctl con los miembros 1 de redologs, ORCLcontrolfile02.ctl con los miembros 2 de redologs y ORCLcontrolfile03.ctl con el fichero de parametros de la BBDD 

Tuesday, May 6, 2014

ORACLE 11G R2: CONFIGURAR NETWORK TIME PROTOCOL (NTP)

La instalación de Oracle GRID 11g R2 requiere que el demonio NTP tenga la opción slewing (-x)
  • Primero paramos en ambos nodos el demonio NTPD
[root@Host1]# service ntpd stop
Shutting down ntpd:                                        [  OK  ]
  • Editamos el fichero /etc/sysconfig/ntpd y añadimos en OPTIONS el valor –x
                                   # Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=no
# Additional options for ntpdate
NTPDATE_OPTIONS=""
  • Y volvemos a arrancar el demonio NTP
[root@Host1]# service ntpd start

Starting ntpd:                                             [  OK  ]

Sunday, April 27, 2014

ORACLE 11G R2 ASM: CREACION DE DISCOS ASM (RAC, STANDALONE...)

Una vez instalado y configurado ASMLIB en la maquina, ya podemos crear discos ASM para poder usarlos en la maquina/maquinas dependiendo si sera BBDD standalone o RAC.

La explicacion que sigue es para BBDD en RAC.

Para ello de la cabina de almacenamiento se han asignado unos volumenes a la maquina donde estara la BBDD
  • /dev/mapper/asmdbf01p1 200Gb ASMDATA  
  • /dev/mapper/asmarch01p1 100Gb ASMARCH
  • /dev/mapper/asmredo01p1 50Gb ASMREDO
  • /dev/mapper/ocrvot01p1 1 Gb OCR_VOTE01
  • /dev/mapper/ocrvot02p1 1 Gb OCR_VOTE02
  • /dev/mapper/ocrvot03p1 1 Gb OCR_VOTE03
Los 3 primeros volumenes son para la BBDD pura y dura. ASMDATA para los dbf, ASMARCH para los archivelogs y ASMREDO para un miembro de cada grupo de redos que definiremos en la BBDD (generalmente yo suelo crear 3 grupos de redos con dos miembros en cada grupo con la nomenclatura redo+numero de grupo+numero de miembro, por ejemplo)
grupo1: (redo11, redo12)
grupo2: (redo21,redo22)
grupo3: (redo31,redo32)

Los 3 siguientes volumenes son para el OCR del RAC, por medidas de seguridad siempre se recomienda un minimo de 3 volumenes para tener por triplicado el OCR. (OCR_VOTE01,OCR_VOTE02,OCR_VOTE03)

Una vez que en las maquinas estan mapeadas esos volumenes, procederemos a asignarlos al ASM, lo hacemos en el nodo 1 del RAC.

1:) Crear discos ASM en el nodo 1

/etc/init.d/oracleasm createdisk OCR_VOTE01 /dev/mapper/ocrvot01p1 external redundancy

               Marking disk "OCR_VOTE01" as an ASM disk: [ OK ]
/etc/init.d/oracleasm createdisk OCR_VOTE02 /dev/mapper/ocrvot02p1 external redundancy

              Marking disk "OCR_VOTE02" as an ASM disk: [ OK ]

/etc/init.d/oracleasm createdisk OCR_VOTE03 /dev/mapper/ocrvot03p1 external redundancy

             Marking disk "OCR_VOTE03" as an ASM disk: [ OK ]

/etc/init.d/oracleasm createdisk ASMDATA /dev/mapper/asmdbf01p1 external redundancy

             Marking disk "ASMDATA" as an ASM disk: [ OK ]

/etc/init.d/oracleasm createdisk ASMREDO /dev/mapper/asmredo01p1 external redundancy

             Marking disk "ASMREDO" as an ASM disk: [ OK ]

/etc/init.d/oracleasm createdisk ASMARCH /dev/mapper/asmarch01p1 external redundancy

             Marking disk "ASMARCH" as an ASM disk: [ OK ]

2:) Confirmar la creación en el nodo 1

Ejecutamos /etc/init.d/oracleasm listdisks
ASMARCH
ASMDATA
ASMREDO
OCR_VOTE01
OCR_VOTE02
OCR_VOTE03

3:) Descubrirlo en el nodo2

Ejecutamos /etc/init.d/oracleasm scandisks

           Scanning the system for Oracle ASMLib disks: [ OK ]

4:) Confirmamos en el nodo 2 que lo ha descubierto

Ejecutamos /etc/init.d/oracleasm listdisks
ASMARCH
ASMDATA
ASMREDO
OCR_VOTE01
OCR_VOTE02
OCR_VOTE03

De esta manera ya tenemos asignados los discos a ambos nodos y marcados para ser usados en ASM.

En caso de BBDD standalone seria solo los mismos pasos en un solo nodo y sin volumenes OCR

  • /dev/mapper/asmdbf01p1 200Gb ASMDATA  
  • /dev/mapper/asmarch01p1 100Gb ASMARCH
  • /dev/mapper/asmredo01p1 50Gb ASMREDO
1:) Crear discos ASM 

/etc/init.d/oracleasm createdisk ASMDATA /dev/mapper/asmdbf01p1 external redundancy

             Marking disk "ASMDATA" as an ASM disk: [ OK ]

/etc/init.d/oracleasm createdisk ASMREDO /dev/mapper/asmredo01p1 external redundancy

             Marking disk "ASMREDO" as an ASM disk: [ OK ]

/etc/init.d/oracleasm createdisk ASMARCH /dev/mapper/asmarch01p1 external redundancy

             Marking disk "ASMARCH" as an ASM disk: [ OK ]

2:) Confirmar la creación

Ejecutamos /etc/init.d/oracleasm listdisks
ASMARCH
ASMDATA
ASMREDO

ORACLE 11G R2 ASM: INSTALACION ASMLIB

ASMLIB

  • oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm
  • oracleasm-support-2.1.3-1.el5.x86_64.rpm
  • oracleasmlib-2.0.4-1.el5.x86_64.rpm
1.- Para instalarlos ejecutamos desde el prompt del sistema operativo.
  • rpm -Uvh oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm oracleasmlib-2.0.4-1.el5.x86_64.rpm oracleasm-support-2.1.3-1.el5.x86_64.rpm
2.- Para configurar ASMLIB desde el prompt del sistema operativo
  • /etc/init.d/oracleasm configure
3.- Modificar el /etc/sysconfig/oracleasm con:

ORACLEASM_SCANORDER="dm"
ORACLEASM_SCANEXCLUDE="sd"
    4.- Reiniciar ASMLIB
    • /etc/init.d/oracleasm restart

    ORACLE 11G R2 Utilidad Cluster Verification Utility (CLUVFY)

    Utilidad Cluster Verification Utility

    Herramienta de oracle para testear diferentes opciónes del cluster. Para Instalarlo solo es necesario (con el usuario root) descomprimir el fichero zip sito en la pagina web de Oracle (cvupack_Linux_x86_64.zip).

             1.-  Instalación del paquete CVUQDISK
                            rpm -iv cvuqdisk-1.0.9-1.rpm

                Consulta del paquete CVUQDISK

                            rpm -qi cvuqdisk-1.0.9-1

              2.- Chequeo de requerimientos de sistema

    Solo chequea, no arregla.

    • Ejecución con salida en pantalla
     Desde el directorio bin de donde se ha descomprimido.

    ./cluvfy comp sys -n Host1 -p crs -verbose

    • Ejecución volcandolo a un fichero para repasar los pasos y ver si alguno da failed.
     Desde el directorio bin de donde se ha descomprimido.

    ./cluvfy comp sys -n Host1 -p crs -verbose > cluvfy.lis



    3.- Chequeo de requesitos de instalación


    Solo chequea, no arregla

    • Ejecución con salida en pantalla
     Desde el directorio bin de donde se ha descomprimido.

    ./cluvfy stage -pre dbinst -fixup -n Host1,Host2 -osdba dba –verbose

    • Ejecución volcándolo a un fichero para repasar los pasos y ver si alguno da failed.
     Desde el directorio bin de donde se ha descomprimido.

    ./cluvfy stage -pre dbinst -fixup -n Host1,Host2 -osdba dba -verbose > cluvfyreq.lis

    • En nuestro caso dara

    Pre-check for database installation was unsuccessful on all the nodes.

    El motivo es por

    Check: Swap space
    Node Name Available Required Comment
    ------------ ------------------------ ------------------------ ----------
    Host2 8GB (8388600.0KB) 11.73GB (1.2296092E7KB) failed
    Host1 8GB (8388600.0KB) 11.73GB (1.2296092E7KB) failed
    Result: Swap space check failed

    Pero podemos ignorar este fallo.

    ORACLE 11G R2: CREAR CONECTIVIDAD DENTRO DEL CLUSTER (KEYGEN DSA,RSA)

    Crear conectividad dentro del cluster


    En cada nodo en el raiz del home de Oracle, usando usuario Oracle. Los mismos pasos para rsa

    1.-  Parar generar las claves.

    Generamos primero en el nodo 1

    [oracle@Host1]$ ssh-keygen -t dsa
    (todo por defecto)

          Generating public/private dsa key pair.
          Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
          Created directory '/home/oracle/.ssh'.
          Enter passphrase (empty for no passphrase):
         Enter same passphrase again:
         Your identification has been saved in /home/oracle/.ssh/id_dsa.
         Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
         The key fingerprint is:
         5d:8c:42:97:eb:42:ae:52:52:e9:59:20:2a:d3:6f:59 oracle@Host1.dbsconsult.com

    2.- Para transferirlas



    The public key on each node is copied to both nodes. Execute the following on each node.

    En el nodo 2

    [oracle@Host2]$ ssh Host1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


           The authenticity of host 'Host1 (192.168.0.184)' can't be established.

           RSA key fingerprint is 00:d9:70:08:bc:fd:b5:e4:e3:df:a3:c7:d8:46:1e:a5.

          Are you sure you want to continue connecting (yes/no)? yes

          Warning: Permanently added 'Host1,192.168.0.184' (RSA) to the list of known hosts.

          oracle@Host1's password:


    En el nodo 1

    [oracle@Host1]$ ssh Host2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

         The authenticity of host 'Host2 (192.168.0.185)' can't be established.

         RSA key fingerprint is 00:d9:70:08:bc:fd:b5:e4:e3:df:a3:c7:d8:46:1e:a5.

        Are you sure you want to continue connecting (yes/no)? yes

        Warning: Permanently added 'Host2,192.168.0.185' (RSA) to the list of known hosts.

        oracle@Host2's password:

    Comprobación de la conectividad

    • Ejecutar el comando:
    ./cluvfy comp nodecon -n Host1,Host2
    Verifying node connectivity
    Checking node connectivity...
    Checking hosts config file...
    Verification of the hosts config file successful
    Node connectivity passed for subnet "172.21.54.0" with node(s) Host2,Host1
    TCP connectivity check passed for subnet "172.21.54.0"
    Node connectivity passed for subnet "10.10.10.0" with node(s) Host2,Host1
    TCP connectivity check passed for subnet "10.10.10.0"
    Interfaces found on subnet "172.21.54.0" that are likely candidates for VIP are:
    Host2 eth0:172.21.54.31
    Host1 eth0:172.21.54.30
    Interfaces found on subnet "10.10.10.0" that are likely candidates for a private interconnect are:
    Host2 eth1:10.10.10.31
    Host1 eth1:10.10.10.30
    Node connectivity check passed
    Verification of node connectivity was successful.

    ORACLE 11G R2: CHEQUEAR RESOLUCION DNS DEL CLUSTER

    Chequeo resolución DNS

    1. Meter en cada nodo dentro del fichero /etc/resolv.conf
    NOMBRESERVIDORVIRTUALCLUSTER 192.168.72.223
    NOMBRESERVIDORHOST1 192.168.71.12
    NOMBRESERVIDORHOST2 192.168.71.13
    domain NOMBREDELDOMINIO.com
    1. Ejecutar comando de chequeo
    cluvfy comp scan -verbose
    Verifying scan

    Checking Single Client Access Name (SCAN)...
    SCAN VIP name Node Running? ListenerName Port Running?
    ---------------- ------------ ------------ ------------ ------------ ------------
    Host-Cluster Host1 true LISTENER 1521 true

    Checking name resolution setup for "Host-Cluster"...
    SCAN Name IP Address Status Comment
    ------------ ------------------------ ------------------------ ----------
    Host-Cluster 172.21.54.40 passed
    Verification of SCAN VIP and Listener setup passed

    Verification of scan was successful.