domingo, 21 de octubre de 2018

Oracle 18c Nuevas Características: Activación INMEMORY Database y Redimensionamiento Dinámico.

Al igual que en la versión 12c R2 12.2.0.1, la opción de almacenamiento columnar en memoria, no viene activada de facto en 18c 18.3.0

Para habilitar dicha característica, es necesario configurar el parámetro INMEMORY_SIZE a un tamaño distinto de 0.

Cuando el valor es 0, indica que esta opción es deshabilitada.

El mínimo de tamaño que se puede asignar es de 100MB.

En un contenedor de base de datos 18c 18.3 si la opción de administración de memoria automática ha sido activada, a la hora de configurar 100MB, el tamaño del las áreas variables ( en donde se encuentra el SHARED_POOL ) se verá afectada negativamente en un 2.5%, mientras que el área de DATABASE_BUFFER, lo hará en un 6.5%.

En números estamos hablando, que al configurar 100MB para el almacenamiento columnar en memoria, 17MB y 100MB ( por temas de la asignación por nivel granular ) respectivamente de los tamaños de áreas compartidas y del BUFFER CACHE, serán tomadas para la nueva configuración del BUFFER de memoria.

Para repasar, en las revisiones 1 y 2 ( 12.1 y 12.2 ) de Oracle 12c, la memoria para el buffer chace, el shared pool, large pool y Java Pool, es definido a través de unidades de granularidad.

Si el tamaño máximo del SGA es menor a 1GB, la unidad de granularidad es de de 4MB. Si el SGA es mayor a 1GB, la unidad de granularidad es de 16MB.

Los requisitos para activar IM en 18c son:

  • Habilitada la opción de almacenamiento columnar IM
  • El parámetro de compatiblidad debe ser configurado a 12.2.0 o superior
  • La base de datos debe ser arrancada con el archivo de configuración de parámetros binario (SPFILE)
  • El valor del parámetro INMEMORY_SIZE debe ser configurado al menos a 128MB
Vamos a la configuración


SQL> connect sys/oracle@cdb1 as sysdba
Connected.

SQL> ALTER SYSTEM SET INMEMORY_SIZE =100M scope=both;
ALTER SYSTEM SET INMEMORY_SIZE =100M scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-02095: specified initialization parameter cannot be modified


SQL> ALTER SYSTEM SET INMEMORY_SIZE =100M scope=spfile;

System altered.

[oracle@lab01 ~]$ sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on Mon Oct 15 13:46:01 2018
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

SQL> connect / as sysdb
SQL> startup
ORACLE instance started.

Total System Global Area 2516580872 bytes
Fixed Size                  8899080 bytes
Variable Size             654311424 bytes
Database Buffers         1728053248 bytes
Redo Buffers                7876608 bytes
In-Memory Area            117440512 bytes
Database mounted.
Database opened.


SQL> show parameter buffer

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
buffer_pool_keep                     string
buffer_pool_recycle                  string
db_block_buffers                     integer     0
log_buffer                           big integer 7360K
SQL> show parameter shared

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
hi_shared_memory_address             integer     0
max_shared_servers                   integer
shared_memory_address                integer     0
shared_pool_reserved_size            big integer 24326963
shared_pool_size                     big integer 0
shared_server_sessions               integer
shared_servers                       integer     1
SQL> show parameter compatib

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
compatible                           string      18.0.0
noncdb_compatible                    boolean     FALSE
plsql_v2_compatibility               boolean     FALSE
SQL> show parameter in-memory
SQL> show parameter INMEMORY

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
inmemory_adg_enabled                 boolean     TRUE
inmemory_automatic_level             string      OFF
inmemory_clause_default              string
inmemory_expressions_usage           string      ENABLE
inmemory_force                       string      DEFAULT
inmemory_max_populate_servers        integer     2
inmemory_optimized_arithmetic        string      DISABLE
inmemory_prefer_xmem_memcompress     string
inmemory_prefer_xmem_priority        string
inmemory_query                       string      ENABLE
inmemory_size                        big integer 112M
inmemory_trickle_repopulate_servers_ integer     1
percent
inmemory_virtual_columns             string      MANUAL
inmemory_xmem_size                   big integer 0
optimizer_inmemory_aware             boolean     TRUE

Configuración dinámica del tamaño de INMEMORY CACHE.

SQL> alter system set inmemory_size=120M scope=both;
alter system set inmemory_size=120M scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-02095: specified initialization parameter cannot be modified


Recuerden el valor del parámetro debe ser configurado a un valor superior a 128MB en el parámetro INMEMORY_SIZE

SQL> alter system set inmemory_size=250M scope=both;

System altered.

SQL>

No hay comentarios:

Publicar un comentario

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar