Donde obtenemos la variable ORACLE_BASE

Vamos con una versión rápida de las entradas recuperadas

Todos sabemos que cuando cargamos el entorno con el binario oraenv oracle obtiene la variable $ORACLE_HOME del fichero /etc/oratab, pero ,

¿de donde obtiene la variable ORACLE_BASE?

La respuesta es muy sencilla, pero menos conocida que la anterior, existe un fichero llamado
$ORACLE_HOME/install/orabasetab, este fichero tiene el formato

ORACLE_HOME:ORACLE_BASE:[Y|N]

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)

renombrando un PDB

Hoy vamos a ver una entrada sencilla para un problema bastante comun.
Supongamos que queremos renombrar un PDB
Tenemus :

  • Nombre origina: OLDNAME
  • Nombre nuevo : NEWNAME

Los pasos a segir son muy sencillos

alter session set container=OLDNAME;

-- reiniciamos en modo restrict
shutdown immediate;
startup open restrict;
--cambiamos nombre
alter pluggable database OLDNAME rename global_name to NEWNAME;

--comprobamos
show con_name;
show pdbs;

--reiniciamos normal
shutdown immediate;
startup;

--vemos el resultado
select name,open_mode from v$pdbs;

Com podeis ver, altamente sencillo

Creando una base de datos en modo silent

Hoy vamos a ver otra de estas entradas para dummies que nos ahorraran mucho trabajo.
Vamos a cer el contenido de un sell scritp . En nuestro caso la queremos en ASM y los nombres de los diskgroups no son los estabdares de DATA,REDO y FRA, sino que llevan el nombre del HOSTNAME delante.

Asi pues, nuestro script sera algo similar a

[bash]

#!/bin/bash
export ORACLE_SID=$1
HOST=`hostname -a`
export ORACLE_HOSTNAME=${HOST^^}
export ORA_INVENTORY=`cat /etc/oraInst.loc |grep inventory_loc |tr "=" " " |awk ‘{print $2}’`

dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \
-sysPassword SysPassword1 \
-systemPassword SysPassword1 \
-characterSet WE8ISO8859P1 \
-nationalCharacterSet AL16UTF16 \
-createAsContainerDatabase false \
-automaticMemoryManagement false \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-storageType ASM \
-datafileDestination +${ORACLE_HOSTNAME}_DATA \
-totalMemory 2048 \
-redoLogFileSize 521 \
-emConfiguration NONE \
-initParams "control_file_record_keep_time=30, control_files=+${ORACLE_HOSTNAME}_DATA’, control_files=+${ORACLE_HOSTNAME}_FRA, db_create_file_dest=+${ORACLE_HOSTNAME}_DATA, db_create_online_log_dest_1=+${ORACLE_HOSTNAME}_REDO1,db_create_online_log_dest_2=+${ORACLE_HOSTNAME}_REDO2,db_recovery_file_dest=+${ORACLE_HOSTNAME}_FRA, db_recovery_file_dest_size=90G , recyclebin=’OFF’ ,sessions=300,proceses=150" \
-ignorePreReqs
[/bash]

Cambiar el partner agent en un OEM13

Hoy vamos a ver de manera sencilla como cambiar un partner agent en un OEM13.
Lo primero que debemos de tener en cuenta es ..

¿que es un partner agent?

Un partner agent es un agente al que se le asigna a propiedad de comprobar el estado de otro host, mediante esto lo que conseguimos es hacer mas rapido la deteccion del estado de un host.

Como sabemos cual es nuestro partner agent?

En el caso de tener definido un parner agent lo veremos en la ventana del OEM, pero , podemos comprobarlo tambien mediante la consulta SQL


set linesize 200
col 'Target Agent' format a50;
col 'Partner Agent' format a50;
select target_agent.target_name "Target Agent",
           partner_agent.target_name "Partner Agent"
      from
           sysman.EM_AGENT_BUDDY_MAP eabm,
                 sysman.mgmt_targets target_agent,
                 sysman.mgmt_targets partner_agent
      where
          eabm.buddy_target_guid = partner_agent.target_guid and
          eabm.agent_target_guid = target_agent.target_guid and
         target_agent.target_name like  'server.pamplona.name:3875';
	
	
		 Target Agent                                       Partner Agent
-------------------------------------------------- --------------------------------------------------
server.pamplona.name:3875                        oldpartnerpamplona.name:3875

COmo cambiamos nuestro partner agent

Supongamos que quremos cambiarlo de oldpartner a newpartner
Lo primero que tendremos que hacer es eliminar el antiguo

./emcli manage_agent_partnership -remove_agent_partnership -monitored_agent=server.pamplona.name:3875 -partner_agent=oldpartnerpamplona.name:3875
Manage Agent Partnership operation completed successfully

Tras esto, ejecutamos el comando para añadir el nuevo

./emcli manage_agent_partnership -add_agent_partnership -monitored_agent=server.pamplona.name:3875 -partner_agent=newpartner.pamplona.name:3875
Manage Agent Partnership operation completed successfully

Con esto tendremos cambiado el agente

Mas informacion el la nota EM 12c, 13c: FAQs on Partner Agent / Buddy Agent / Real Time Monitoring (Doc ID 1952190.1)