CRS falla al arrancar con el error CRS-6706: Oracle Clusterware Release patch level

Hoy vamos a ver una sencilla entrada que puede ocurrirnos al parchear el ASM

Los recursos de crs no levantan y recibimos el eror

[testserver]$ sudo $ORACLE_HOME/bin/crsctl start has
CRS-6706: Oracle Clusterware Release patch level ('3930441427') does not match Software patch level ('526767740'). Oracle Clusterware cannot be started.
CRS-4000: Command Start failed, or completed with errors.

En este caso oracle nos recomienda que desbloqueemos el crs y repitamos los pasos .
Aunque en la nota de oracle nos indiquen ejecutar

# /crs/install/roothas.sh -patch

Este es un comando muy vago, por lo que, mi recomendacion es, sabiendo donde ha fallado, ejecutar el pre o ppost pach

[testserver]$ sudo $ORACLE_HOME/crs/install/roothas.sh -prepatch
Using configuration parameter file: /u01/app/oracle/product/19c/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/oracle/crsdata/icdbstst01/crsconfig/hapatch_2023-08-09_10-55-17AM.log
2023/08/09 10:55:29 CLSRSC-347: Successfully unlock /u01/app/oracle/product/19c/grid
2023/08/09 10:55:29 CLSRSC-671: Pre-patch steps for patching GI home successfully completed.

[testserver]$ sudo $ORACLE_HOME/crs/install/roothas.sh -postpatch
Using configuration parameter file: /u01/app/oracle/product/19c/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/oracle/crsdata/icdbstst01/crsconfig/hapatch_2023-08-09_10-55-36AM.log
2023/08/09 10:55:40 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'
2023/08/09 10:58:01 CLSRSC-672: Post-patch steps for patching GI home successfully completed.

[testserver]$ sudo $ORACLE_HOME/bin/crsctl start has
CRS-4640: Oracle High Availability Services is already active
CRS-4000: Command Start failed, or completed with errors.

Como veis, nada de que asustarse con los comandos indicados

Mas information en soporte con la nota

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

ORA-600 en la ejecucion de DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

Hoy vamos a ver una sencilla entrada sobre un paso basico en un upgrade de base de datos.

Antes de llevar a cabo un proceso de migracion debemos de asegurarnos que todas las estadisticas de la base de datos estan recientemente recopiladas ( menos de fos dias),

Puede darse el caso de que ejecutando el paquete de obtencion de las estadisticas de los Fixed Objects recibamos el error

 sqlplus "/as sysdba"
execute DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
BEGIN DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; END;
*
ERROR at line 1:
ORA-20011: Approximate NDV failed: ORA-00600: internal error code, arguments:
[1350], [3], [23], [60], [AMERICAN], [0], [], [], [], [], [], []
ORA-06512: at "SYS.DBMS_STATS", line 37237
ORA-06512: at line 1

Esto puede darse cuando tenemos la obtencion de estadisticas en auto_sample.
Para solucionarlo, nada mas facil que mover el porcentaje de estimacion a NULL


exec dbms_stats.set_global_prefs(pname=>’ESTIMATE_PERCENT’,pvalue=>’NULL’);


SQL>  select dbms_stats.get_prefs('ESTIMATE_PERCENT') from dual;
DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT')
--------------------------------------------------------------------------------
DBMS_STATS.AUTO_SAMPLE_SIZE

SQL> exec dbms_stats.set_global_prefs(pname=>'ESTIMATE_PERCENT',pvalue=>'NULL');
PL/SQL procedure successfully completed.
SQL> select dbms_stats.get_prefs('estimate_percent') from dual;
DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT')
--------------------------------------------------------------------------------
NULL

Con este sencillo paso podremos ejecutar nuestro paquete de obtencion de estadisticas en los objetos fijos sin eosos errores ORA

Errores Heap size XX exceeds notification threshold

Hoy vamos a volver con las entradas para dummies

Uno de las alertas con las que podemos encontrarnos en el fichero de log es :

2019-08-25T21:51:19.646997+01:00
PDB$SEED(2):Memory Notification: Library Cache Object loaded into SGA
Heap size 52942K exceeds notification threshold (51200K)
Details in trace file /u01/app/oracle/diag/rdbms/test/TEST/trace/TEST_ora_32087.trc
2019-08-25T21:51:19.647135+01:00
PDB$SEED(2):KGL object name :grant read on ku$_m_view_piot_view to public
2019-08-25T21:51:33.513723+01:00
PDB$SEED(2):Memory Notification: Library Cache Object loaded into SGA
Heap size 52903K exceeds notification threshold (51200K)
Details in trace file /u01/app/oracle/diag/rdbms/test/TEST/trace/TEST_ora_32087.trc
2019-08-25T21:51:33.513818+01:00
PDB$SEED(2):KGL object name :grant read on ku$_zm_view_piot_view to public

A pesar del susto que nos puede dar esta alerta , no se trata de un error, sino de un warning. A partir de la version 10g oracle introdujo un umbral a partir del cual nos avisa cuando superamos ese umbral en la carga de objetos en el shared pool .
Este umbral viene definido por el parametro oculto _kgl_large_heap_warning_threshold

Si queremos saber el valor actual de este valor podemos ejecutar la consulta

[code lang=»sql»]
select
nam.ksppinm NAME,
nam.ksppdesc DESCRIPTION,
val.KSPPSTVL
from
x$ksppi nam,
x$ksppsv val
where nam.indx = val.indx and nam.ksppinm like ‘%kgl_large_heap_%_threshold%’;
[/code]

En caso de que quieresemos que dejasen de apareer alertas (especialmente por que vienen asociadas a una traza ) podemos modificar el parametro con :

 alter system set "_kgl_large_heap_warning_threshold"=XXXXXX   comment='motivo aqui ' scope=spfile;

Como podeis ver, hemos de acutalizar en el spfile por lo que habra que reiniciar la base de datos si quremos que haga efecto

Como siempre podemos tener mas informacion en la nota de soporte KGL-heap-size-exceeded] (Doc ID 330239.1)