Comandos basicos del RAC II añadir bases de datos

Hoy vamos a seguir con la serie de entradas de comandos basicos de administracion de RAC.
Hoy vamos a centrarnos en añadir bases de datos y mover los recursos del cluster

Añadir una base de datos

Para anadir una base de datos esta tendra que tener en el init.ora los parametros

  • CLUSTER_DATABASE=TRUE
  • CLUSTER_DATABASE_INSTANCES=2
  • TEST1.INSTANCE_NUMBER=1
  • TEST2.INSTANCE_NUMBER=2
  • TEST1.THREAD=1
  • TEST2.THREAD=2
  • TEST1.UNDO_TABLESPACE=’UNDOTBS1′
  • TEST2.UNDO_TABLESPACE=’UNDOTBS2′

    or supuesto,deberemos de contar con tantos grupos de UNDO y threads de REDO como nodos vayamos a tener.
    Una vez tenemos esto, la registraremos en el crs con los comandos

    srvctl add database  -db TEST-instance IBTEST1 -spfile +DATA/TEST/spfileTEST.ora -diskgroup "DATA,FRA,REDO1,REDO2"-oraclehome $ORACLE_HOME
    srvctl add instance -d TEST-i TEST1 -n rac1.pamplona.name
    srvctl start database -db TEST
    srvctl add instance -d TEST-i TEST2 -n rac2.pamplona.name
    srvctl start  instance -db IBTES -i IBTEST2 
    

    Mas entradas para dummies sobre RAC:
    Comandos basicos en Orace RAC
    Comandos basicos del RAC II
    Eliminar un nodo del rac

  • El RAC se queda en estado [ROLLING PATCH]

    Hoy vamos a ver una entrada sobre ago que puede dar mucho miedo pero que tiene una solucion muy sencila
    Pongamos que tras aplicar una serie de parches comprobamos la version de nuesrto softare en el RAC y nos encontramos lo siguiente

    [oracle@rac1~]$ sudo  $ORACLE_HOME/bin/crsctl query  crs  activeversion -f
    Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active patch level is [724960844].
    
    Oracle Clusterware patch level on node rac1is [2701864972].
    [oracle@rac1~]$ sudo  $ORACLE_HOME/bin/crsctl query  crs  softwarepatch rac2
    Oracle Clusterware patch level on node rac2 is [387459443].
    

    De alguna manera que no alcanzamos a entender ( o igual si), tenemos que tras finalizar un parcheado los parches de los dos nodos son iguales.

    Que hacemos ??

    Veamos a ver cuales son los parches que tenemos instalados.
    Lo primero que se nos viene a la cabeza es tirar del comando optch
    Y ecejutamos un
    $ORACLE_HOME/OPatch/opatch -lsinventory
    o bien
    $ORACLE_HOME/OPatch/opatch -lspatches
    Pero, para nuestra desesperacion resulta que Opatch nos dice que hay los mismos parches instalados.
    ¿que hacemos ahora?

    La solucon esta en patchgen

    Vamos a ver realmente que es lo que tenemos instalado en los nodos.
    Para ello usaremos en ambos nodos el comando
    $ORACLE_HOME/bin/kfod op=patches

    [oracle@rac1~]$  $ORACLE_HOME/bin/kfod op=patches
    ---------------
    List of Patches
    ===============
    30489227
    30489632
    30557433
    30655595
    
    [oracle@rac2~]$ $ORACLE_HOME/bin/kfod op=patches
    ---------------
    List of Patches
    ===============
    29517242
    29517247
    29585399
    30489227
    30489632
    30557433
    30655595
    

    Como podemos ver, en el rac2 nos aparecen 3 parches que no tenemos en rac1.
    El siguiente paso deberia de ser el buscar cuales son esos parches y decidir si los queremos aplicar donde no estan , o quitrlos de donde estan.
    Dado que quitar un parche suele ser mas complicado que ponerlo , vamos ha hacer esta segunda opcion y a eliminar esos 3 parches de rac2.

    Para ello,lo primero que tendremos que hacer es como usuario root

    . oaenv
     $ORACLE_HOME/crs/install/rootcrs.sh -prepatch
    

    Y tras esto, eliminaremos los parches con

    $ORACLE_HOME/bin/patchgen commit -rb 29517242 
    $ORACLE_HOME/bin/patchgen commit -rb 29517247
    $ORACLE_HOME/bin/patchgen commit -rb 29585399
    

    Una vez eliminados, comprobamos d enuevo con kfod que tenemos solamente los parches deseados, y sera en ese momento cuando cerremos la operacion con (de nuevo como root)

     $ORACLE_HOME/crs/install/rootcrs.sh -postpatch
    

    Tras esto solamente tenemos que comprobar que el estado del cluster es normal y que las versiones y parches son los correctos

    [oracle@rac1~]$) crsctl query crs softwarepatch -all
    Oracle Clusterware patch level on node rac1 is [2701864972].
    [oracle@rac1~]$ crsctl query crs activeversion  -f
    Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [2701864972].
    [oracle@rac1~]$ crsctl query crs releasepatch
    Oracle Clusterware release patch level is [2701864972] and the complete list of patches [30489227 30489632 30557433 30655595 ] have been applied on the local node. The release patch string is [19.6.0.0.0].
    [oracle@rac2~]$ crsctl query crs releasepatch
    Oracle Clusterware release patch level is [2701864972] and the complete list of patches [30489227 30489632 30557433 30655595 ] have been applied on the local node. The release patch string is [19.6.0.0.0].
    

    Mas informacion como siempre en la documentacion de oracle

    • Troubleshooting OPatchAuto
    • KFOD, KFED, AMDU (Doc ID 1485597.1)
    • Note 1180491.1 – KFED Tool For Windows OS
    • Note 1346190.1 – KFED.PL for diagnosing – ORA-15036 ORA-15042 ORA-15020 ORA-15033
    • Note 1505005.1 – Where to find kfed utility before Oracle Grid Infrastructure is installed

    Comandos basicos en Orace RAC

    Hoy vamoa a volver a las entradas para dummies, esta vez con los comandos basicos del RAC

    Como paramos un RAC?

    La manera mas sencilla escon permisos de root mediante el comando

    export ORACLE_SID=+ASM1
    export ORAENV_ASK=NO
    . oraenv
    sudo $ORACLE_HOME/bin/crsctl stop crs
    sudo $ORACLE_HOME/bin/crsctl disable crs 
    

    A la hora de arrancarlo ejecutaremos

    export ORACLE_SID=+ASM1
    export ORAENV_ASK=NO
    . oraenv
    sudo  $ORACLE_HOME/bin/crsctl enable crs
    sudo $ORACLE_HOME/bin/crsctl start crs  
    

    Como arrancamos/paramos una base de datos

    srvctl stop database -d $DB_NAME
    
    srvctl start database -d $DB_NAME
    

    Como arrancamos/paramos una instancia en un nodo

    Podemos hacerlo de varias maneras

    srvctl start instance -d $DB_NAME-n $NODE_NAME 
    srvctl start instance -d $DB_NAME -i $INSTANCE_NAME
    

    Para pararla seria similar cambiando el start por stop

    srvctl stop instance -d $DB_NAME-n $NODE_NAME 
    srvctl stop instance -d $DB_NAME -i $INSTANCE_NAME
    

    Parar elementos dedicados del RAC

    Hay algunos componentes dedicados del RAC que no funcionan con la sintaxsis estandard, estos son:

    • Management database
    • ASM prxy

    Administracion de la Management database

    Los comados que podemos llevar a cabo sobre la management database son stop y relocate

    srvctl start mgmtdb -n  $NODENAME 
    
    srvctl stop mgmtdb -n $NODENAME 
    
    srvctl relocate mgmtdb -n $OTRO_NODO
    

    Administracion del ASM proxy

    srvctl start res ora.proxy_advm -n  $NODENAME 
    
    srvctl stop res ora.proxy_advm -n  $NODENAME
    

    comandos sobre el CRS

    Podemos ver la entrada Comprobar versiones del cluster

    Comandos sobre el OCR

    Podemos verlos en la entrada Oracle cluster registry OCR (componentes del grid)

    Comandos sobre los voting disk

    Podemos verlos en la entradas
    Redundancia de los votingdisk en ASM
    Voting disk (componentes del grid)

    Comandos sobre ADVM

    Introducción al ADVM

    Mas entradas para dummies sobre RAC:
    Comandos basicos en Orace RAC
    Comandos basicos del RAC II
    Eliminar un nodo del rac

    desinstalacion del grid control

    Tras un largo periodo de inactividad, vamos a añadir una pequeña entrada con la manera de desinstalar el grid control de Oracle .

    Al contrario de cuando se tiene una base ded datos sencilla de Oracle donde con borrar binarios, inventario y oratab el sistema ( en unix) queda lo sufucientemente limpio como para llevar a cabo una reinstalacion, si tenemos que reinstalar un grid infraestructure por que ha habido problemas en la instalacion o por que queremos quitarlo, no se puede hacer «a las bravas».

    La manera de lelvarlo a cabo es muy sencilla.
    Solamente tenemos que ir al $GRID_HOME/deinstall y ejecutar ./deinstall
    Este proceso se ha de ejecutar como propietario del grid, y , al igual que la instalacion, en un momento determinado nos solicitará la ejecucion de una cadena como root.

    [grid@serverpruebas ] cd  $GRID_HOME/deinstall
    [grid@serverpruebas ] ls 
    bootstrap.pl         bootstrap_files.lst  deinstall            deinstall.pl         deinstall.xml        jlib                 readme.txt           response             sshUserSetup.sh      utl
    [grid@serverpruebas ]./deinstall 	
    Checking for required files and bootstrapping ...
    Please wait ...
    Location of logs /tmp/deinstall2016-11-03_09-31-33PM/logs/
    
    ############ ORACLE DECONFIG TOOL START ############
    
    
    ######################### DECONFIG CHECK OPERATION START #########################
    ## [START] Install check configuration ##
    
    
    Checking for existence of the Oracle home location /opt/app/oracle/product/12.1.0/grid
    Oracle Home type selected for deinstall is: Oracle Grid Infrastructure for a Standalone Server
    Oracle Base selected for deinstall is: /opt/app/oracle
    Checking for existence of central inventory location /opt/app/oraInventory
    Checking for existence of the Oracle Grid Infrastructure home /opt/app/oracle/product/12.1.0/grid
    
    ## [END] Install check configuration ##
    
    Traces log file: /tmp/deinstall2016-11-03_09-31-33PM/logs//crsdc_2016-11-03_09-32-36PM.log
    
    Network Configuration check config START
    
    Network de-configuration trace file location: /tmp/deinstall2016-11-03_09-31-33PM/logs/netdc_check2016-11-03_09-32-38-PM.log
    
    Network Configuration check config END
    
    Asm Check Configuration START
    
    ASM de-configuration trace file location: /tmp/deinstall2016-11-03_09-31-33PM/logs/asmcadc_check2016-11-03_09-32-39-PM.log
    
    ASM configuration was not detected in this Oracle home. Was ASM configured in this Oracle home (y|n) [n]: y
    Automatic Storage Management (ASM) instance is detected in this Oracle home /opt/app/oracle/product/12.1.0/grid.
    ASM Diagnostic Destination : /opt/app/oracle
    ASM Diskgroups :
    ASM diskstring : 
    Diskgroups will not be dropped
     If you want to retain the existing diskgroups or if any of the information detected is incorrect, you can modify by entering 'y'. Do you  want to modify above information (y|n) [n]:
    Database Check Configuration START
    
    Database de-configuration trace file location: /tmp/deinstall2016-11-03_09-31-33PM/logs/databasedc_check2016-11-03_09-32-50-PM.log
    
    Database Check Configuration END
    
    ######################### DECONFIG CHECK OPERATION END #########################
    
    
    ####################### DECONFIG CHECK OPERATION SUMMARY #######################
    Oracle Grid Infrastructure Home is: /opt/app/oracle/product/12.1.0/grid
    The following nodes are part of this cluster: null
    The cluster node(s) on which the Oracle home deinstallation will be performed are:null
    Oracle Home selected for deinstall is: /opt/app/oracle/product/12.1.0/grid
    Inventory Location where the Oracle home registered is: /opt/app/oraInventory
    ASM instance will be de-configured from this Oracle home
    Do you want to continue (y - yes, n - no)? [n]: y
    A log of this session will be written to: '/tmp/deinstall2016-11-03_09-31-33PM/logs/deinstall_deconfig2016-11-03_09-32-35-PM.out'
    Any error messages from this session will be written to: '/tmp/deinstall2016-11-03_09-31-33PM/logs/deinstall_deconfig2016-11-03_09-32-35-PM.err'
    
    ######################## DECONFIG CLEAN OPERATION START ########################
    Database de-configuration trace file location: /tmp/deinstall2016-11-03_09-31-33PM/logs/databasedc_clean2016-11-03_09-32-53-PM.log
    ASM de-configuration trace file location: /tmp/deinstall2016-11-03_09-31-33PM/logs/asmcadc_clean2016-11-03_09-32-53-PM.log
    ASM Clean Configuration START
    ASM Clean Configuration END
    
    Network Configuration clean config START
    
    Network de-configuration trace file location: /tmp/deinstall2016-11-03_09-31-33PM/logs/netdc_clean2016-11-03_09-33-02-PM.log
    
    De-configuring Listener configuration file...
    Listener configuration file de-configured successfully.
    
    De-configuring Naming Methods configuration file...
    Naming Methods configuration file de-configured successfully.
    
    De-configuring backup files...
    Backup files de-configured successfully.
    
    The network configuration has been cleaned up successfully.
    
    Network Configuration clean config END
    
    
    ---------------------------------------->
    
    Run the following command as the root user or the administrator on node "serverpruebas-m".
    
    /tmp/deinstall2016-11-03_09-31-33PM/perl/bin/perl -I/tmp/deinstall2016-11-03_09-31-33PM/perl/lib -I/tmp/deinstall2016-11-03_09-31-33PM/crs/install /tmp/deinstall2016-11-03_09-31-33PM/crs/install/roothas.pl -force  -deconfig -paramfile "/mp/deinstall2016-11-03_09-31-33PM/response/deinstall_OraGI12Home1.rsp"
    
    Press Enter after you finish running the above commands
    
    <----------------------------------------
    
    
    
    ######################### DECONFIG CLEAN OPERATION END #########################
    
    
    ####################### DECONFIG CLEAN OPERATION SUMMARY #######################
    ASM instance was de-configured successfully from the Oracle home
    The stopping and de-configuring of Oracle Restart failed. Fix the problem and rerun this tool to completely remove the Oracle Restart configuration and the software
    Oracle Restart was already stopped and de-configured on node "serverpruebas-m"
    Oracle Restart is stopped and de-configured successfully.
    #######################################################################
    
    
    ############# ORACLE DECONFIG TOOL END #############
    
    Using properties file /tmp/deinstall2016-11-03_09-31-33PM/response/deinstall_2016-11-03_09-32-35-PM.rsp
    Location of logs /tmp/deinstall2016-11-03_09-31-33PM/logs/
    
    ############ ORACLE DEINSTALL TOOL START ############
    
    
    
    
    
    ####################### DEINSTALL CHECK OPERATION SUMMARY #######################
    A log of this session will be written to: '/tmp/deinstall2016-11-03_09-31-33PM/logs/deinstall_deconfig2016-11-03_09-32-35-PM.out'
    Any error messages from this session will be written to: '/tmp/deinstall2016-11-03_09-31-33PM/logs/deinstall_deconfig2016-11-03_09-32-35-PM.err'
    
    ######################## DEINSTALL CLEAN OPERATION START ########################
    ## [START] Preparing for Deinstall ##
    Setting LOCAL_NODE to serverpruebas-m
    Setting CRS_HOME to true
    Setting oracle.installer.invPtrLoc to /tmp/deinstall2016-11-03_09-31-33PM/oraInst.loc
    Setting oracle.installer.local to false
    
    ## [END] Preparing for Deinstall ##
    
    Setting the force flag to false
    Setting the force flag to cleanup the Oracle Base
    Oracle Universal Installer clean START
    
    
    Detach Oracle home '/opt/app/oracle/product/12.1.0/grid' from the central inventory on the local node : Done
    
    Failed to delete the directory '/opt/app/oracle/product/12.1.0/grid'. The directory is in use.
    Delete directory '/opt/app/oracle/product/12.1.0/grid' on the local node : Failed <<<<
    
    Delete directory '/opt/app/oraInventory' on the local node : Done
    
    Failed to delete the directory '/opt/app/oracle/product/12.1.0/grid'. The directory is in use.
    The Oracle Base directory '/opt/app/oracle' will not be removed on local node. The directory is not empty.
    
    Oracle Universal Installer cleanup was successful.
    
    Oracle Universal Installer clean END
    
    
    ## [START] Oracle install clean ##
    
    Clean install operation removing temporary directory '/tmp/deinstall2016-11-03_09-31-33PM' on node 'serverpruebas-m'
    
    ## [END] Oracle install clean ##
    
    
    ######################### DEINSTALL CLEAN OPERATION END #########################
    
    
    ####################### DEINSTALL CLEAN OPERATION SUMMARY #######################
    Successfully detached Oracle home '/opt/app/oracle/product/12.1.0/grid' from the central inventory on the local node.
    Failed to delete directory '/opt/app/oracle/product/12.1.0/grid' on the local node.
    Successfully deleted directory '/opt/app/oraInventory' on the local node.
    Oracle Universal Installer cleanup was successful.
    
    
    Run 'rm -r /etc/oraInst.loc' as root on node(s) 'serverpruebas-m' at the end of the session.
    
    Run 'rm -r /opt/ORCLfmap' as root on node(s) 'serverpruebas-m' at the end of the session.
    Run 'rm -r /etc/oratab' as root on node(s) 'serverpruebas-m' at the end of the session.
    Oracle deinstall tool successfully cleaned up temporary directories.
    #######################################################################
    
    
    ############# ORACLE DEINSTALL TOOL END #############
    

    Como veis, tremendamente sencillo si se hace de manera ordenada

    Comprobar versiones del cluster

    Hoy vamos a ver otra de estas entradas sencillas que nos pueden llegar a ser de utilidad llegado el caso

    Hay veces ( especialmente en los momentos del parcheado) que queremos saber la version de los componentes del cluster. En estos casos podemos tener varios binarios en la máquina y que sean distintos a el software que está corriendo, o distintas versiones entre distintos componentes del cluster, para ello tenemos las opción query del crsctl .
    Las opciones que nos serán útiles son:

    • b>releaseversion: Muestra la versión de los binarios instalados en el nodo local. Este comando puede ser “engañado” modificando la variable PATH
    • activeversion: Muestra la versión que está funcionando. Durante un rolling upgrade la activeversion no cambiará hasta que el upgrading finalize. La activeversion siempre es la versión mas baja entre todos los nodos del cluster.
    • softwareversion:Es el contrario de activeversion, nos indicará la ultima versión instalada en el cluster, también puede indicarnos la version mas alta instalada en uno de los nodos.

    Algunos ejemplos de la salida son:

    [grid@rac1 ]# crsctl query crs releaseversion
    Oracle High Availability Services release version on the local node is [11.2.0.4.0]
     
    [grid@rac1 ]# crsctl query crs activeversion
    Oracle Clusterware active version on the cluster is [11.2.0.4.0]
     
    [grid@rac1 ]# crsctl query crs softwareversion
    Oracle Clusterware version on node [rac1] is [11.2.0.4.0]
    En single node no
    [grid@rac1 ]# crsctl query has releaseversion
    Oracle High Availability Services release version on the local node is [11.2.0.4.0]