User Tools

Site Tools


dba:oracle:howtos:convert_database_into_resource

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
dba:oracle:howtos:convert_database_into_resource [2023/01/31 08:24] – removed - external edit (Unknown date) 127.0.0.1dba:oracle:howtos:convert_database_into_resource [2023/01/31 08:24] (current) – ↷ Page moved from dba:oracle:convert_database_into_resource to dba:oracle:howtos:convert_database_into_resource dodger
Line 1: Line 1:
 +====== [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:
 +<code>
 +crsctl status resource ora.${ORACLESID,,}.db -p > crsctl_${ORACLESID,,}.txt
 +cp -pfv crsctl_${ORACLESID,,}.txt crsctl_${ORACLESID,,}.txt.orig
 +</code>
 +  * Paramos la BBDD
 +  * Eliminamos la configuración actual:
 +<code>
 +srvctl remove database -d ${ORACLESID,,}
 +</code>
 +  * Editar el fichero de recursos:
 +<code>vim crsctl_${ORACLESID,,}.txt</code>
 +  * Y dejar los siguientes parámetros de configuración:
 +<code>
 +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
 +</code>
 +  * Cambiar las variables:
 +<code>
 +ACTION_SCRIPT=/u01/app/11.2.0/grid/crs/public/action_${ORACLESID}
 +HOSTING_MEMBERS=node1 node2
 +</code>
 +  * 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:
 +<code>crsctl add resource ${ORACLESID,,}.db -type cluster_resource -file crsctl_${ORACLESID,,}.txt</code>
 +
 +===== Script de Acción =====
 +<code>vim /u01/app/11.2.0/grid/crs/public/action_${ORACLESID}</code>
 +
 +<code bash>
 +#!/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
 +</code>
 +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 |