User Tools

Site Tools


dba:oracle:howtos:convert_database_into_resource

[HOWTO] Converting a Database into a clusterware resource

Descripción

Como convertir una bbdd en un recurso del clusterware de oracle para poder pivotarla de nodo en un entorno activo-pasivo.

Howto

  • Tomo la variable ORACLESID como nombre de la base de datos.
  • Exportamos y CONSERVAMOS la configuración actual de la bbdd:
crsctl status resource ora.${ORACLESID,,}.db -p > crsctl_${ORACLESID,,}.txt
cp -pfv crsctl_${ORACLESID,,}.txt crsctl_${ORACLESID,,}.txt.orig
  • Paramos la BBDD
  • Eliminamos la configuración actual:
srvctl remove database -d ${ORACLESID,,}
  • Editar el fichero de recursos:
vim crsctl_${ORACLESID,,}.txt
  • Y dejar los siguientes parámetros de configuración:
NAME
TYPE
ACL
ACTION_SCRIPT
ACTION_FAILURE_TEMPLATE
ACTIVE_PLACEMENT
AUTO_START
CARDINALITY
CHECK_INTERVAL
DEGREE
DESCRIPTION
ENABLED
HOSTING_MEMBERS
LOAD
NOT_RESTARTING_TEMPLATE
OFFLINE_CHECK_INTERVAL
PLACEMENT
PROFILE_CHANGE_TEMPLATE
RESTART_ATTEMPTS
SCRIPT_TIMEOUT
START_DEPENDENCIES
START_TIMEOUT
STATE_CHANGE_TEMPLATE
STOP_DEPENDENCIES
STOP_TIMEOUT
UPTIME_THRESHOLD
  • Cambiar las variables:
ACTION_SCRIPT=/u01/app/11.2.0/grid/crs/public/action_${ORACLESID}
HOSTING_MEMBERS=node1 node2
  • Donde ACTION_SCRIPT es un script más abajo documentado y los “HOSTING_MEMBERS” son los nodos donde puede ejecutarse la BBDD.
  • Y añadimos el recurso:
crsctl add resource ${ORACLESID,,}.db -type cluster_resource -file crsctl_${ORACLESID,,}.txt

Script de Acción

vim /u01/app/11.2.0/grid/crs/public/action_${ORACLESID}
#!/bin/bash
 
# Environment variables
export ORA_SID="DIVAPRE"
export ORA_USER="oracle"
 
export CRS_HOME="/u01/app/11.2.0/grid"
export CRS_HOME_SCRIPT=${CRS_HOME}/crs/public
 
export EXITCODE=0
 
export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:"
export DB_HOME=/u01/app/oracle/product/11.2.0/db
. /home/oracle/vars_${ORA_SID}
 
 
 
# Database start, stop, check, clean
 
# DB STOP
stop() {
    echo "Stopping Instance ${ORA_SID}..."
sqlplus /nolog <<EOF
connect / as sysdba
shutdown immediate
EOF
    EXITCODE=$?
}
 
 
# DB Startup
start() {
    echo "Starting Instance ${ORA_SID}..."
sqlplus /nolog <<EOF
connect / as sysdba
startup
EOF
    EXITCODE=$?
}
 
# DB Check
check() {
    local PMONPROCCESS="ora_pmon_${ORA_SID}"
    if [[ "$(/bin/ps waux | /bin/egrep "${PMONPROCCESS}$" | /bin/grep -v grep)" ]]
    then
        EXITCODE=0
    else
        EXITCODE=1
    fi
}
 
# Clean = SHUTDOWN ABORT
clean() {
    echo "Aborting Instance ${ORA_SID}..."
sqlplus /nolog <<EOF
connect / as sysdba
shutdown abort
EOF
    EXITCODE=$?
}
 
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  check)
    check
    ;;
  clean)
    clean
    ;;
  *)
    echo "USAGE: $0 {start|stop|check|clean}"
    EXITCODE=1
    ;;
esac
 
exit $EXITCODE

Variables a tener en cuenta:

Variable Descripción
ORA_SID=“DIVAPRE” SID de la instancia
export ORA_USER=“oracle” Usuario de oracle
export CRS_HOME=“/u01/app/11.2.0/grid” Directorio de instalación del clusterware
export CRS_HOME_SCRIPT=${CRS_HOME}/crs/public Path a los scripts
export BASE_PATH=“/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:” Definición básica del PATH
export DB_HOME=/u01/app/oracle/product/11.2.0/db ${ORACLE_HOME}
. /home/oracle/vars_${ORA_SID} Fichero con la configuración básica de la instacia
dba/oracle/howtos/convert_database_into_resource.txt · Last modified: 2023/01/31 08:24 by dodger