8.2 KEEP Buffer Pool
You can use the KEEP buffer pool to keep frequently
        accessed tables persistent in the buffer pool. 
               
8.2.1 Overview of Using the KEEP Buffer Pool with True Cache
You can assign different objects to the KEEP buffer pool on
        different True Caches.
                  
At a high level, this involves the following steps:
- Configure 
DB_KEEP_CACHE_SIZEon True Cache. - Assign objects on True Cache to the 
KEEPbuffer pool. 
As with the primary database, when an object is assigned to the
                KEEP buffer pool on True Cache, the object's blocks are loaded for
            a query and then kept in the KEEP buffer pool. When new data is
            inserted into the object on the primary database, that new data is automatically
            propagated to the KEEP buffer pool on True Cache through the redo apply
            mechanism. 
                  
To propagate direct load data to True Cache, specify the LOGGING clause
            in the corresponding DDL or DML, or alter the corresponding object property to
                LOGGING. The LOGGING clause lets you specify
            whether certain operations will be logged in the redo log file
            (LOGGING) or not (NOLOGGING).
                  
Related Topics
8.2.1.1 Supported Objects
The KEEP mechanism only tracks objects that have physical
        data segments. 
                     
To see if an object can be tracked, make sure it has a DATA_OBJECT_ID in
            the DBA_OBJECTS view.
                     
Related Topics
8.2.1.2 How True Cache Works with the Primary Database Buffer Cache
By default, marking something KEEP on the primary database
        also marks it KEEP on True Cache.
                     
To prevent objects that are intended to be KEEP objects
            only on the primary database from filling up the True Cache KEEP buffer
            pool, you can use the DBMS_CACHEUTIL.TRUE_CACHE_KEEP procedure to mark
            objects as KEEP on True Cache.
                DBMS_CACHEUTIL.TRUE_CACHE_KEEP takes precedence and overrides
            objects that are marked as KEEP on the primary database.
                     
Also consider the following points:
ALTER TABLE KEEPassignments on the primary database are persistent becauseALTER TABLEis a DDL. TheDBMS_CACHEUTIL.TRUE_CACHE_KEEPprocedure isn't persistent when True Cache restarts.- You can't use the 
DBMS_CACHEUTIL.TRUE_CACHE_UNKEEPprocedure to unkeep a primaryALTER TABLE KEEPassignment. Instead, either don't configureDB_KEEP_CACHE_SIZEon True Cache or assign a different object withDBMS_CACHEUTIL.TRUE_CACHE_KEEPon True Cache. - All scans on True Cache use the 
CACHEpath instead of the direct (NOCACHE) path, except temporary tables that are local to True Cache. 
8.2.2 Configuring DB_KEEP_CACHE_SIZE on True Cache
To configure the KEEP buffer pool on True Cache, set the
                        DB_KEEP_CACHE_SIZE initialization parameter to a large size
                (such as 10 GB). 
                  
For example:
ALTER SYSTEM SET DB_KEEP_CACHE_SIZE=size SCOPE=BOTH;
                     8.2.3 Assigning Objects to the KEEP Buffer Pool for True Cache
After configuring the KEEP buffer pool, assign the object
                to the KEEP buffer pool for True Cache.
                  
To do this, call the
                                        DBMS_CACHEUTIL.TRUE_CACHE_KEEP() procedure
                                on True Cache. 
                     
Example: Nonpartitioned Object
EXECUTE DBMS_CACHEUTIL.TRUE_CACHE_KEEP('SYS', 'TABLE1');
                     Example: Partition of a Partitioned Object
EXECUTE DBMS_CACHEUTIL.TRUE_CACHE_KEEP('SYS', 'TABLE2', 'TABLE2_PART1');
                     8.2.3.1 TRUE_CACHE_KEEP Procedure
When you call this procedure on True Cache, it assigns the object to the
            KEEP buffer pool on that cache.
                     
To use this procedure, the DB_KEEP_CACHE_SIZE
                initialization parameter must be configured on True Cache. 
                        
Syntax
DBMS_CACHEUTIL.TRUE_CACHE_KEEP(
   schema                 IN VARCHAR2,
   obj                    IN VARCHAR2,
   partition              IN VARCHAR2 := NULL);
Parameters
Table 8-1 TRUE_CACHE_KEEP Procedure Parameters
| Parameter | Description | 
|---|---|
schema | 
                                    The name of the schema for the object. | 
obj | 
                                    The name of the object. | 
partition | 
                                    
                                       
                                       
  | 
                                 
Related Topics
8.2.4 Removing an Object's KEEP Buffer Pool Assignment for True Cache
You can use DBMS_CACHEUTIL.TRUE_CACHE_UNKEEP() to remove
                objects from the KEEP buffer pool.
                  
Note that the block is not removed immediately. Instead, it
                                will be naturally aged out as new blocks for other objects are
                                brought into the KEEP buffer pool. Also, the
                                        KEEP buffer pool assignment on True Cache
                                is only remembered while True Cache is up.
                     
Example: Nonpartitioned Object
EXECUTE DBMS_CACHEUTIL.TRUE_CACHE_UNKEEP('SYS', 'TABLE1');
                     Example: Partition of a Partitioned Object
EXECUTE DBMS_CACHEUTIL.TRUE_CACHE_UNKEEP('SYS', 'TABLE2', 'TABLE2_PART1');
                     8.2.4.1 TRUE_CACHE_UNKEEP Procedure
When an object on True Cache no longer needs to be in the
            KEEP buffer pool, use this procedure to remove the object's
            KEEP assignment.
                     
Syntax
DBMS_CACHEUTIL.TRUE_CACHE_UNKEEP(
   schema                 IN VARCHAR2,
   obj                    IN VARCHAR2,
   partition              IN VARCHAR2 := NULL);
Parameters
Table 8-2 TRUE_CACHE_UNKEEP Procedure Parameters
| Parameter | Description | 
|---|---|
schema | 
                                    The name of the schema for the object. | 
obj | 
                                    The name of the object. | 
partition | 
                                    
                                       
                                       
  | 
                                 
Related Topics
8.2.5 Viewing a List of KEEP Objects on True Cache
Use the V$TRUE_CACHE_KEEP view to see which objects are
                assigned to the KEEP buffer cache for True Cache.
                  
Example 1
SELECT * FROM v$true_cache_keep;
TS_NUMBER  DATA_OBJECT_ID  CON_ID
---------- --------------  ------
         5          72948       3
         5          72950       3
                     Example 2
SELECT owner as schema, object_name as keepobj, subobject_name as partition, o.data_object_id
FROM dba_objects o, sys_objects so, v$true_cache_keep vtck
WHERE o.data_object_id = so.object_id
  AND vtck.con_id = sys_context('USERENV', 'CON_ID')
  AND so.ts_number=vtck.ts_number
  AND o.data_object_id = vtck.data_object_id;
SCHEMA  KEEPOBJ  PARTITION     DATA_OBJECT_ID
------  -------  ------------  --------------
SYS     TABLE1                          72948
SYS     TABLE2   TABLE2_PART1           72950
                     8.2.5.1 V$TRUE_CACHE_KEEP Columns
The following table describes the columns in the
            V$TRUE_CACHE_KEEP view.
                     
| Column | Description | 
|---|---|
TS_NUMBER | 
                                    The tablespace number. | 
DATA_OBJECT_ID | 
                                    The dictionary object number of the segment that contains the object. | 
CON_ID | 
                                    
                                       
                                        The ID of the container to which the data pertains. Possible values include: 
  |