Configurar el CRS de la 12.2 sin tener ASM

Hoy vamos a ver una entrada sencilla que puede habernos traido dolores de cabeza.

Con los nuevos cambios en la instalacion en la version 12.2 al instalar el crs ( que no deja de ser un «unzip») nos encontramos que el binario crsctl no esta lincado.

Cuando intentamos usar el configuratdor del CRS ($GI_HOME/gridSetup.sh ), nos encontramos que nos exige el ASM para poder continuar, asi que
¿Como podemos configurar nuestro CRS sin ASM ?
La solucion es muy sencilla, y pasa por ejecutar el comando roothas.pl
Como usuario root ejecutaremos

export GI_HOME=/u01/app/oracle/product/12.2.0.1/grid
$GI_HOME/perl/bin/perl -I $GI_HOME/perl/lib -I $GI_HOME/crs/install
$GI_HOME/crs/install/roothas.pl

Con esto conseguiremos el ultimo proceso de lincado , que es el que crea los binarios crscrl y la configuracion de nuestro grid a nivel de sistema operativo.

Hemos de tener en cuenta que , este proceso no crea el listener, asi que, como usuario oracle y con las variables de entorno del grid cargado deberemos de ejecutar despues

srvctl add listener -oraclehome $ORACLE_HOME -listener LISTENER 

CRS-6706: Oracle Clusterware Release patch level (‘xx’) does not match Software patch level (‘0’). Oracle Clusterware cannot be started.

Hoy vamos a ver la resolución de un problema que puede darnos al aplicar un PSU sobre el grid infraestructure de un alone server. Tras aplicar correctamente un PSU sobre el Grid y una Base de datos al intentar arrancar de nuevo el clusterware recibimos el siguiente error

CRS-6706: Oracle Clusterware Release patch level (‘nnn’) does not match Software patch level (‘mmm’) (Doc ID 1639285.1)

bash-4.2# /etc/ohasd start
Starting ohasd:
CRS-6706: Oracle Clusterware Release patch level ('1591286773') does not match Software patch level ('0'). Oracle Clusterware cannot be started.
CRS-4000: Command Start failed, or completed with errors.

La primera impresión es la de extrañeza, puesto que la aplicación de este mismo parche siguiendo el mismo proceso había sido satisfactoria en varios servidores.
Tras revisar los logs del Opatch y no encontrar ningún indicio de error, rebuscamos en soporte e y los grupos de ayuda en busca de alguna opción antes de tener que hacer marcha atrás en la aplicación del parche , y, «afortunadamente», encontramos una nota que indica que, este tipo de error puede ser normal en servidores alone en los que no se lleva a cabo el paso ‘rootcrs.pl -postpatch’

Así pues, la solución es tan sencilla como ejecuta los siguientes comandos como root comandos

$GRID_HOME/crs/install/roothas.sh -unlock
$GRID_HOME/crs/install/roothas.sh -patch
bash-4.2# ./crs/install/roothas.sh -unlock
Using configuration parameter file: /opt/app/oracle/product/12.1.0/grid/crs/install/crsconfig_params
2017/08/07 16:16:13 CLSRSC-347: Successfully unlock /opt/app/oracle/product/12.1.0/grid

bash-4.2# .//crs/install/roothas.sh -patch
Using configuration parameter file: /opt/app/oracle/product/12.1.0/grid/crs/install/crsconfig_params

Esto solventa el problema y levanta automáticamente el ohas tras lo que, esperando un ratillo ( ya sabemos que el ohas no es lo mas rápido del mundo) tendremos nuesrta infraestructura levantada correctamente

bash-4.2# crsctl stat res -t
-----------------------------------------------------------
Name           Target  State      erver  State details
-----------------------------------------------------------
Local Resources
-----------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       test    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       test    STABLE
ora.REDO.dg
               ONLINE  ONLINE       test     STABLE
ora.asm
               ONLINE  ONLINE       test    Started,STABLE
ora.ons
               OFFLINE OFFLINE      test    STABLE
-----------------------------------------------------------
Cluster Resources
-----------------------------------------------------------
ora.cssd
      1        ONLINE  ONLINE       test     STABLE
ora.diskmon
      1        OFFLINE OFFLINE               STABLE
ora.evmd
      1        ONLINE  ONLINE       test     STABLE
ora.bbddtest.db
      1        ONLINE  ONLINE       test     Open,STABLE
-----------------------------------------------------------
bash-4.2#

Mas información como siempre en soporte de Oracle en las notas

  • CRS-1153: There was an error setting Oracle Clusterware to rolling patch mode. (Doc ID 1943498.1)
  • CRS-6706: Oracle Clusterware Release patch level (‘nnn’) does not match Software patch level (‘mmm’) (Doc ID 1639285.1)

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

Restaurar el fichero de registro del cluster/GRID

Hoy vamos a ver una entada bastante sencilla que nos puede librar de algun susto que otro.

Uno de los componentes que pueden darnos problemas a la hora de arrancar un GRID es el fichero de configuración del cluster.
En el caso de un GRID control donde no hay mas miembros del cluster, esta información solamente está en el nodo de la base de datos, y , si esta información se daña o se pierde no podremos arrancar el ASM y la Base de datos
El fichero de configuración local del cluster/grid puede ubicar mirando en el fichero /etc/oracle/ocr.loc

  bash-3.2# cat /etc/oracle/ocr.loc
ocrconfig_loc=/opt/app/oracle/product/11.2.0/grid/cdata/localhost/local.ocr
local_only=TRUE

El GRID control tiene dos ficheros de configuración que deben de estar disponibles, el Oracle Cluster Registry configuration y el Oracle Local Registry configuration
Podemos ver su ubicación con el comando ocrconfig

root@gridalone:$ $GRID_HOME/bin/ocrcheck -config
Oracle Cluster Registry configuration is :
 Device/File Name: /opt/app/oracle/product/11.2.0/grid/cdata/localhost/local.ocr

root@gridalone:$ $GRID_HOME/bin/ocrcheck -local -config
Oracle Local Registry configuration is :
 Device/File Name: /opt/app/oracle/product/11.2.0/grid/cdata/localhost/sidora.olr

Estos dos ficheros no son ficheros de texto, con lo que no podremos salvaguardarlos ni restaurarlos de manera normal mediante los softwares de backup convencionales.
Para poder restaurarlos, deberemos de hacerlo mediante la opcion ocrconfig -restore

La sintaxsis para restaurarlos es :

Oracle Cluster Registry configuration

$GRID_HOME/bin/ocrconfig  -restore /opt/app/oracle/product/11.2.0/grid/cdata/localhost/backup_XXXXX.ocr 
 

Oracle Local Registry configuration

$GRID_HOME/bin/ocrconfig -local -restore /opt/app/oracle/product/11.2.0/grid/cdata/localhost/backup_XXXXX.olr 
 

Algunas notas importantes sobre el comando ocrconfig son :

  • No se le indica en ningún sitio donde ha de restaurarlos, esto lo coge de la configuración del cluster
  • Los ficheros que se indican son los ficheros DE BACKUP
  • Necesita que el fichero destino exista, en caso de no existir habría que crearlos con un touch

Hemos de tener en cuenta que, tal y como decíamos en la entrada Oracle cluster registry OCR (componentes del grid) en la version 11gR2 se guardan automáticamene, pero no debemos de confiarnos y es recomendable el comprobar si exsisten backups con la opcion ocrconfig -showbackup para activarlos en caso de que no estén activos

Como siempre, mas información en la web de oracle http://docs.oracle.com/cd/E11882_01/rac.112/e16794/ocrsyntax.htm#CWADD92022

Oracle cluster registry OCR (componentes del grid)

Oracle cluster registry ( OCR)

El Oracle cluster registry (OCR) mantiene los metadata y los wallets para todos los recursos que maneja el clusterware , al contrario de lo que ocurría en las versiones previas, solamente se requiere para administrar los recursos que están bajo la CRSD stack and its agents.
En la versión 11gR2 el l OCR incluye el Oracle Local Registry (OLR)

En esta versión el OCR no es necesario para unirse al cluster,ya que la información necesaria para unirse al cluster está en el OLR and GPnP, la información que maneja el OCR si que incluye aquella que requiere el agente para crear ,comprobar el estado,parar o arrancar un recurso así como la de las dependencias de un recurso ante un cambio de estado (Por ejemplo qué hacer con un listener si la IP sobre la que está desaparece)

Como mínimo debe de existir un OCR, sin embargo es posible tener hasta 5 copias, el OCR puede estar (desde 11gR2) en los discos ASM, pero a diferencia del voting disk puedes tener un OCR en los mismos discos que datos o copias.
La localización de los OCR (en un sistema linux) se encuentra en /etc/oracle/ocr.loc

[grid@rac1 oracle]$ cat /etc/oracle/ocr.loc
ocrconfig_loc=+OCRQUORUM
local_only=FALSE

La variable local_only puede tener dos valores:

  • FALSE: Estamos en un RAC
  • TRUE: estamos en una single instance

Mediante el comando ocrconfig se pueden llevar acciones de añadir , eliminar y reemplazar ubicaciones del OCR, sin embargo , si hay solamente una localización e OCR no se puede hacer un replace, hay que añadir uno nuevo y eliminar el viejo.
La información del OCR se guarda cada 4 horas en el $GI_HOME/cdata de uno de los nodos, desde la versión 11gR2 se reparten por todos los nodos (donde está instalado). Habitualmente se guarda los últimos 3 backups horarios ( 12 horas), 1 backup con un día de antigüedad y otro con una semana de antigüedad.
Cuando el OCR se almacena en ASM hace que la instancia de ASM y los diskgroups en los que está ubicado el OCR se monten antes de que el CRSD sea arrancado. Igualmente, si hay que detener el ASM hay que parar toda la pila del CRSD mediante el comando crscrtl stop crs ya que, sino la parada del ASM dará el error

 “ORA-15097: cannot SHUTDOWN ASM instance with connected client.”

por supuesto ni se te ocurra para el asm de manera forzada.

Los comandos para interactuar con el OCR son:

[grid@rac1 oracle]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
	 Version                  :          3
	 Total space (kbytes)     :     262120
	 Used space (kbytes)      :       2644
	 Available space (kbytes) :     259476
	 ID                       :  165462643
	 Device/File Name         : +OCRQUORUM
                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

	 Cluster registry integrity check succeeded

	 Logical corruption check bypassed due to non-privileged user


Añadir un disco

[grid@rac1 oracle]$ ocrconfig -add +DATA

reemplazarlo

[grid@rac1 oracle]$ ocrconfig -replace +DATA  -replacement +DATA2

O eliminarlo

[grid@rac1 oracle]$ ocrconfig -delete +DATA2

La documentación del ocrconfig podemos encontrarla en http://docs.oracle.com/cd/E11882_01/rac.112/e16794/ocrsyntax.htm#CWADD92022