Error PRKO-2207 : Warning:–spfile option has been deprecated and will be ignored

Hoy me he encontrado con un eroor curioso.
Cuando he intentado modificar la ubicacionn del spfile con el comando

srvctl modify asm -spfile +DATA/ASM/ASMPARAMETERFILE/initasm.ora

El sistema me ha devuelto el error
PRKO-2207 : Warning:-spfile option has been deprecated and will be ignored

Cual ha sido mi sorpresa al ver que la modificacion del spfile o el listener en el asm con el comando srvctl esta deprecated.
Segun lanota de soporte «PRKO-2207 : Warning:-spfile option has been deprecated and will be ignored» for ASM instance (Doc ID 2227045.1) la manera de llevarlo a cabo ahora es mediante os comandos de oracle, estoson:

ORA-16179: incremental changes to “log_archive_dest_1” not allowed with SPFILE

Vamos a ver una pequeña entrada rápida muy muy de dummie sobre un error ORA-XX

Intentando modificar el parámetro de los archivers de mi CDB de pruebas me encuentro con que, al ejecutar

alter system set LOG_ARCHIVE_DEST_1 ='LOCATION   =/u01/app/oracle/oradata/cdbtest/archivelog/' scope=both sid='*'

Recibimo el error

ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-16179: incremental changes to "log_archive_dest_1" not allowed with SPFILE

Si miramos la configuración del archivado

SQL>  archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       /u01/app/oracle/product/12.1.0/dbhome_1/dbs/arch
Oldest online log sequence     38
Next log sequence to archive   40
Current log sequence	       40

Después de muchas muchas vueltas, he visto lo sencilla que era la solución .
La cláusula LOCATION de og_archive_dest_1 no puede tener espacios.
Así pues

‘LOCATION = /path/’; -> ERROR
‘LOCATION=/path/’; -> CORRECTO

Como veis, otra de las soluciones sencillas a problemas que pueden traernos de cabeza!

Nuevas funcionalidades 12c: PGA_AGGREGATE_LIMIT

Hoy vamos a ver una entrada sencilla sobre una nueva funcionalidad de la 12c , el parámetro PGA_AGGREGATE_LIMIT

Desde la versión 9i Oracle ha apostado por la gestión automática de la memoria, uno de los problemas que generaba Al motor la gestión total de la configuración del tamaño de la PGA y SGA es que el motor podía llegar a configuraciones donde el espacio asignado a la PGA fuese muy alto, repercutiendo sobre la SGA y produciendo un exceso de paginación en la base de datos.

Como han solucionado esto ?

Sencillamente han introducido un parámetro nuevo llamado PGA_AGGREGATE_LIMIT

Este nuevo parámetro va a ser un límite del tamaño total de las PGAs de la base de datos, al contrario de lo que ocurria con PGA_AGGREGATE_TARGET que actuaba como valor de referencia , el nuevo PGA_AGGREGATE_LIMIT actúa como límite , y no solo no dejará que este valor se sobrepase, sino que eliminará sesiones que estén usando mas memoria PGA con el nuevo error ora
ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

¿Cual es el patrón que usa oracle para matar las sesiones

El proceso de background CKPT comprueba cada tres segundos si la cantidad de memoria usada excede el parámetro PGA_AGGREGATE_LIMIT, si este límite es excedido Oracle hará lo sigiuiente

  • Las llamadas de las sesiones que están consumiendo mas PGA son abortadas.(untunable PGA memory)
  • Si el tamaño de la PGA sigue por encima del límite, las sessiones y los procesos que mas PGA usan son terminados (untunable PGA memory)
  • Los procesos de SYS y background no se ven afectados por estas reglas

El motor notifica al cliente el problema con un ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

¿Como se calcula el valor ?

EL PGA_AGGREGATE_LIMIT es un valor dinámico , por lo que puede modificarse en cualquier momento , su valor es calculado de manera automática en el arranque por el motor al mayor de estos tres valores

  • 2 GB
  • 200% of PGA_AGGREGATE_TARGET
  • PROCESSES ( valor del parámetros de incializacion) * 3 MB
  • Nunca excederá al 120% de la memoria física menos el total del tamaño la SGA .

¿Como lo deshabilito?

Si fijamos en el spfile el valor de esta variable a cero, la base de datos se comportará como lo hacía en la version 11g, y no eliminará las sesiones que sobrepasen este límite.
Esto podemos hacerlo con :

alter system set pga_aggregate_limit=0 scope=both; 

Mas información en

Parámetros de inicio en los PDB

Hoy vamos a ver una entrada muy breve sobre los parámetros de inicio en la nueva versión 12c

Los PDBS no tienen un fichero de inicialización propio, comparten el spfile único del CDB pero algunos de los parámetros de este spfile son modificables a nivel de PDB
La manera de ver cuales son es mediante la consulta

select name from v$system_parameter where ispdb_modifiable=‘TRUE';

Cada uno de estos (185) son heredados del CDB, y pueden ser modificados mediante .
Si el scoops es SPFILE o BOTH viajarán con la PDB cuando se haga una operación de plug/unplug

Comments in spfile

Hola de nuevo !!

Hoy vamos a ver una funcionalidad muy simple y sencilla pero que nos ayudará a mantener nuestro sistema documentado , la opcion comment en el spfile
Hasta el momento, cuando queríamos dejar reflejado un comentario en uno de nuestros pfile simplemente teníamos que ponerlo comentado mediante el caracter #, pero
¿como lo hacemos con el spfile?

La respuesta es increíblemente sencilla


alter system set"_b_tree_bitmap_plans"=false comment='23-11-2016 por bug 8318459' SCOPE=SPFILE;