|Table of Contents|
INSERT/UPDATE/DELETE statements cannot be executed on memory tablespaces. Only the SELECT statement is executable.
This error occurs when the total sum of memory tablespaces (SYS_TBS_MEM_DIC+SYS_TBS_MEM_DATA+USER_MEMORY_TABLESPACE) exceeds MEM_MAX_DB_SIZE.
MEM_MAX_DB_SIZE is the maximum amount of memory that can be used by memory tablespaces. For further information, please refer to the [Technical Article] ALTIBASE Monitoring Query Guide, [TS01] Memory Table Space Usage (page 29).
The tablespace area cannot be returned unless a tablespace is dropped. (The COMPACT command can return the blank page, but the effect is negligible. Thus, it is not recommended.)
Therefore, if MEM_MAX_DB_SIZE is set lower than the actual amount, change the value of MEM_MAX_DB_SIZE from $ALTIBASE_HOME/conf/altibase.proeperties and restart the Altibase server process.
It is recommended to set the maximum value of MEM_MAX_DB_SIZE as the sum of VOLATILE_MAX_DB_SIZE and MEM_MAX_DB_SIZE within 60 to 70 percent of the physical memory.
- Checking MEM_MAX_DB_SIZE
The above example shows the maximum number of pages that can be used (It is divided by 32 as the size of one page is 32K).
Code Block language sql
iSQL> SELECT value1/32/1024 FROM v$property WHERE name = 'MEM_MAX_DB_SIZE'; VALUE1/32/1024 : 32768 1 row selected.
- Checking Usage
iSQL> SELECT space_name, maxsize/32/1024, alloc_page_count FROM v$mem_tablespaces; SPACE_NAME : SYS_TBS_MEM_DIC MAXSIZE/32/1024 : 4294967295 ALLOC_PAGE_COUNT : 129 SPACE_NAME : SYS_TBS_MEM_DATA MAXSIZE/32/1024 : 4294967295 ALLOC_PAGE_COUNT : 29313 SPACE_NAME : MEM_TBS MAXSIZE/32/1024 : 3200 ALLOC_PAGE_COUNT : 3201 3 rows selected.
1. The above example shows the current usage of the memory tablespace. There are 32,643 pages allocated in total.
2. For SYS_TBS_MEM_DIC and SYS_TBS_MEM_DATA, they have not reached MAXSIZE but the error has occurred because the sum of all the memory tablespaces has almost reached MEM_MAX_DB_SIZE.
The current sum shows the value of 32,643 and the actual MEM_MAX_DB_SIZE is 32,768. Thus, there are still 125 pages that can be allocated. However, as the default value of EXPAND_CHUNK_PAGE_COUNT (the number of pages by which to increase the size of the memory tablespace) is 128, it means that all the pages are currently being used.
(The error occurs when MEM_MAX_DB_SIZE is exceeded because the transaction tried to expand.)
Each memory tablespace has its own MAXSIZE. This error not only occurs when it has reached its MAXSIZE but also when the sum of all the memory tablespaces exceeds MEM_MAX_DB_SIZE.
- Restarting Altibase server after increasing MEM_MAX_DB_SIZE
It needs to restart the server after modification.
Code Block language sql
Shell> vi $ALTIBASE_HOME/conf/altibase.properties .... .... UNIXDOMAIN_FILEPATH =?/trc/cm-unix MEM_MAX_DB_SIZE = 1G <===== Change this value to the appropriate size (Using GB/MB unit) LOG_FILE_SIZE = 10M .... .... :wq! Shell> server restart
- Checkpoint Image File Size
For in-memory databases of ALITBASE HDB, any modified data from in-memory databases is saved on disk when checkpointing is executed. The disk file where memory data is saved is called the Checkpoint Image file. This file cannot be resized, which means that once it is expanded, it cannot be reduced.
In order to reduce the Checkpoint Image file size, REORG has to be executed. This has to be done with the migration of all data, including the disk database.