Sunday, July 19, 2020

Database In-Memory Base Level Feature Now Available in Oracle 19c (19.8.0.0.0) Release Update (RU)


Database In-Memory Base Level Feature Now Available in Oracle 19c (19.8.0.0.0) RU



The Database In-Memory Base Level feature is now available for Oracle Database 19c! Support 
for the Base Level feature was added to 19c in the just released 19.8 RU. 
As a brief review, with the Base Level feature you can use up to a 16GB column store 
without having to license the Database In-Memory option. 

This now gives anyone running Oracle Database 19c Enterprise Edition the ability to try 
out Database In-Memory for in-production workloads, without having to license the 
full Database In-Memory option first.

Simply apply the 19.8 RU and set the INMEMORY_FORCE initialization parameter to BASE_LEVEL and 
set the INMEMORY_SIZE parameter to a value up to 16GB. When you restart your database, 
the Base Level feature will then be enabled. 
That's really all there is to it. 

Oracle Database In-Memory will now have a "Base Level" feature. 
This will allow the use of Database In-Memory with up to a 16GB column store for no extra cost. 
That's not a typo. Database In-Memory will be free to use with up to a 16GB column store!

Note: Apply July 2020 RU to get Oracle 19c (19.8.0.0.0)

Required Softwares:
-------------------

Latest OPatch:                       p6880880_190000_Linux-x86-64.zip
GI Release Update (July 2020):       p31305339_190000_Linux-x86-64.zip
Database Release Update (July 2020): p31281355_190000_Linux-x86-64.zip

Step-1: Check the cluster instances
------------------------------------
[oracle@rac1-oel72 ~]$ ps -ef | grep pmon
oracle    6818     1  0 20:35 ?        00:00:00 asm_pmon_+ASM1
oracle   13729     1  0 20:38 ?        00:00:00 ora_pmon_orcl1
oracle   21836 12071  0 20:46 pts/0    00:00:00 grep --color=auto pmon
[oracle@rac1-oel72 ~]$

[oracle@rac2-oel72 ~]$ ps -ef | grep pmon
oracle    2127     1  0 20:43 ?        00:00:00 asm_pmon_+ASM2
oracle    2692     1  0 20:44 ?        00:00:00 ora_pmon_orcl2
oracle    3033     1  0 20:45 ?        00:00:00 mdb_pmon_-MGMTDB
oracle    3455 20208  0 20:46 pts/0    00:00:00 grep --color=auto pmon
[oracle@rac2-oel72 ~]$

[oracle@rac1-oel72 ~]$ srvctl status database -d orcl
Instance orcl1 is running on node rac1-oel72
Instance orcl2 is running on node rac2-oel72
[oracle@rac1-oel72 ~]$

Step-2: Check the patches 
--------------------------
[oracle@rac1-oel72 ~]$ . oraenv
ORACLE_SID = [orcl1] ? orcl
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rac1-oel72 ~]$
[oracle@rac1-oel72 ~]$ sh /u01/app/oracle/product/19.3.0/dbhome_1/OPatch/opatch lspatches
31281355;Database Release Update : 19.8.0.0.200714 (31281355)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ ssh rac2-oel72
Last login: Sun Jul 19 21:08:10 2020
[oracle@rac2-oel72 ~]$
[oracle@rac2-oel72 ~]$ . oraenv
ORACLE_SID = [orcl2] ? orcl
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rac2-oel72 ~]$

[oracle@rac2-oel72 ~]$ sh /u01/app/oracle/product/19.3.0/dbhome_1/OPatch/opatch lspatches
31281355;Database Release Update : 19.8.0.0.200714 (31281355)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.
[oracle@rac2-oel72 ~]$

Step-3: Increase the SGA ans restart the cluster instances  
----------------------------------------------------------
[oracle@rac1-oel72 ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ sqlplus sys/oracle@orcl as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jul 19 20:14:00 2020
Version 19.8.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0

SQL> show parameter sga_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 5952M
sga_min_size                         big integer 0
sga_target                           big integer 5952M
unified_audit_sga_queue_size         integer     1048576
SQL>

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     0
inmemory_optimized_arithmetic        string      DISABLE
inmemory_prefer_xmem_memcompress     string
inmemory_prefer_xmem_priority        string
inmemory_query                       string      ENABLE
inmemory_size                        big integer 0
inmemory_trickle_repopulate_servers_ integer     1
percent
inmemory_virtual_columns             string      MANUAL
inmemory_xmem_size                   big integer 0
optimizer_inmemory_aware             boolean     TRUE
SQL>

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl1

SQL> create pfile='/home/oracle/initorcl_07192020.ora' from spfile;
File created.

SQL> alter system set sga_target=20480M scope=spfile;
System altered.

SQL> alter system set sga_max_size=20480M scope=spfile;
System altered.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ srvctl status database -d orcl
Instance orcl1 is running on node rac1-oel72
Instance orcl2 is running on node rac2-oel72
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ srvctl stop database -d orcl

[oracle@rac1-oel72 ~]$ srvctl start database -d orcl
PRCR-1079 : Failed to start resource ora.orcl.db
CRS-5017: The resource action "ora.orcl.db start" encountered the following error:
ORA-27104: system-defined limits for shared memory was misconfigured
. For details refer to "(:CLSN00107:)" in "/u01/app/oracle/diag/crs/rac2-oel72/crs/trace/crsd_oraagent_oracle.trc".

CRS-2674: Start of 'ora.orcl.db' on 'rac2-oel72' failed
CRS-2632: There are no more servers to try to place resource 'ora.orcl.db' on that would satisfy its placement policy
CRS-5017: The resource action "ora.orcl.db start" encountered the following error:
ORA-27104: system-defined limits for shared memory was misconfigured
. For details refer to "(:CLSN00107:)" in "/u01/app/oracle/diag/crs/rac1-oel72/crs/trace/crsd_oraagent_oracle.trc".

CRS-2674: Start of 'ora.orcl.db' on 'rac1-oel72' failed

[oracle@rac1-oel72 ~]$ cat /etc/sysctl.conf | grep kernel | grep shm | grep -v "#"
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
[oracle@rac1-oel72 ~]$


Note: Set the 'Kernel' parameters and SGA values according to the InMemory settings

Step-4: Change the values 'inmemory_force' and 'inmemory_size'
-------------------------------------------------------------

[oracle@rac1-oel72 ~]$ srvctl status database -d orcl
Instance orcl1 is running on node rac1-oel72
Instance orcl2 is running on node rac2-oel72
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ . oraenv
ORACLE_SID = [orcl1] ? orcl1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ sqlplus sys@orcl as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jul 19 20:49:13 2020
Version 19.8.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Enter password:
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0

SQL> show parameter sga_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 20G
sga_min_size                         big integer 0
sga_target                           big integer 20G
unified_audit_sga_queue_size         integer     1048576
SQL>

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     0
inmemory_optimized_arithmetic        string      DISABLE
inmemory_prefer_xmem_memcompress     string
inmemory_prefer_xmem_priority        string
inmemory_query                       string      ENABLE
inmemory_size                        big integer 0
inmemory_trickle_repopulate_servers_ integer     1
percent
inmemory_virtual_columns             string      MANUAL
inmemory_xmem_size                   big integer 0
optimizer_inmemory_aware             boolean     TRUE
SQL>

SQL> show sga

Total System Global Area 2.1475E+10 bytes
Fixed Size                  9146112 bytes
Variable Size            1879048192 bytes
Database Buffers         1.9529E+10 bytes
Redo Buffers               57962496 bytes
SQL>

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO
SQL>

SQL> alter system set inmemory_force = 'BASE_LEVEL' scope=spfile;
System altered.

SQL> alter system set inmemory_size = 16G scope=spfile;
System altered.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ srvctl stop database -d orcl
[oracle@rac1-oel72 ~]$
[oracle@rac1-oel72 ~]$ srvctl start database -d orcl
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ srvctl status database -d orcl
Instance orcl1 is running on node rac1-oel72
Instance orcl2 is running on node rac2-oel72
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ . oraenv
ORACLE_SID = [orcl1] ? orcl1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rac1-oel72 ~]$

[oracle@rac1-oel72 ~]$ sqlplus sys@orcl as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jul 19 20:56:08 2020
Version 19.8.0.0.0
Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Enter password:
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO
SQL>

SQL> show parameter sga_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 20G
sga_min_size                         big integer 0
sga_target                           big integer 20G
unified_audit_sga_queue_size         integer     1048576
SQL>

SQL> show parameter inmemory_force

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
inmemory_force                       string      BASE_LEVEL
SQL>

SQL> show parameter inmemory_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
inmemory_size                        big integer 16G
SQL>

SQL> select instance_name, instance_number from gv$instance order by instance_number;

INSTANCE_NAME    INSTANCE_NUMBER
---------------- ---------------
orcl1                          1
orcl2                          2

SQL>

Please refer for more details:
https://blogs.oracle.com/in-memory/base-level-198-ru
https://blogs.oracle.com/in-memory/oracle-database-in-memory-base-level-feature

1 comment:

  1. Hi,
    This is failing due to the following error. Upgraded db to 19.8 RU, OS is rhel 7.2

    ORA-12754: Feature 'In-Memory Base Level' is disabled due to missing capability 'Runtime Environment'.

    [oracle@mnipdhcdb3 dbs]$ cat /etc/redhat-release
    CentOS Linux release 7.2.1511 (Core)

    SQL>select * from product_component_version;

    PRODUCT VERSION VERSION_FULL STATUS
    --------------------------------------------- -------------------- -------------------- -----------------------------------
    Oracle Database 19c Enterprise Edition 19.0.0.0.0 19.8.0.0.0 Production

    SQL> alter system set inmemory_force = 'BASE_LEVEL' scope=spfile;
    System altered.

    SQL> alter system set inmemory_size = 16G scope=spfile;
    System altered.


    SQL> startup
    ORA-12754: Feature 'In-Memory Base Level' is disabled due to missing capability 'Runtime Environment'.

    ReplyDelete