IN_SESSION_CLEAR - Perceptive Content Database IN_DB_UTIL Package for Oracle Server - Foundation 24.1 - Foundation 24.1 - Ready - Perceptive Content - external

Perceptive Content Database IN_DB_UTIL Package for Oracle Server

Platform
Perceptive Content
Product
Perceptive Content Database IN_DB_UTIL Package for Oracle Server
Release
Foundation 24.1
License

The IN_SESSION_CLEAR stored procedure is used for clearing the IN_DB_UTIL framework for a single identifier of the IN_CONTEXT namespace. It is responsible for decrementing the call stack and adjusting the context attributes to reflect the changes to the call stack.

This procedure should be executed whenever a procedure, that has also initialized the session with IN_SESSION_SET, has finished its unit of work and is tearing down the session.

The TAG provided when executing the procedure must match the existing TAG associated with the specified identifier or an error will be returned. This is to help prevent any other sessions, that are initialized with a different TAG, from inadvertently making any changes to the specified identifier.

If the procedure is the last entry in the call stack then the call stack will be decremented and the associated IN_CONTEXT namespace attributes will be reset to IDLE for the specified identifier, freeing up the identifier for other sessions to use.

If the procedure is not the last entry in the call stack then the call stack will be decremented and the IN_CONTEXT namespace attributes will be updated to reflect the current state of the call stack for the specified identifier without freeing up the identifier for other sessions to use.

The IN_SESSION_CLEAR procedure is responsible for the following framework de-initialization steps.

Any procedure leveraging the IN_DB_UTIL framework should have the following exceptions defined to properly handle the exceptions that could be raised by this procedure.

  • FAILED_CHECK – Invalid IDENTIFIER specified. Checked using the CHECK_PARAMETER procedure.
  • TAG_MISMATCH – Returned if a procedure attempts to clear a session but the specified TAG value does not match the TAG value that is currently occupying the specified identifier.
  • OTHERS – Catch all other undefined exceptions.

Under normal circumstances, IN_SESSION_CLEAR procedure should never need to be manually executed. However, it can be used to manually clear the call stack and session attributes as needed due to an unhandled exception or after manually cancelling an operation before completion.

Important Do not manually execute this procedure if any operations are still in progress as it will clear the call stack and session attributes which will lead to undesired results and unhandled exceptions.

Parameter Description
IDENTIFIER Type: INPUT
Datatype: VARCHAR2(128)
Default Value: IN_DB_UTIL
Description The identifier for which to clear the session attributes.
Options

IN_DB_UTIL

SYNC

UPGRADE.

TAG Type: INPUT
Datatype: VARCHAR2(10)
Default Value: DBMS_RANDOM.STRING('X',10)
Description: The unique tag associated with the session currently occupying the specified identifier of the IN_CONTEXT namespace.

Exceptions

The following example demonstrates how this procedure is called from within another procedure after it has completed its work and is cleanup up.

IN_DB_UTIL.IN_SESSION_CLEAR(V_IDENTIFIER, V_TAG);

The following example demonstrates how to use this procedure to manually clear the call stack and session attributes for a specific identifier, IN_DB_UTIL in this case.

Note that the TAG must match the tag currently associated with the specified identifier.

Important Do not manually execute this procedure if any operations are still in progress.

EXEC IN_DB_UTIL.IN_SESSION_CLEAR('IN_DB_UTIL','WNQJAP4QWJ');

Example output

The following example demonstrates the clearing of the IN_DB_UTIL identifier by executing the IN_SESSION_CLEAR procedure to clear the call stack and session attributes after cancelling the IN_CLEANUP_AUDIT_DATA procedure prior to completion.

SQL> EXEC IN_DB_UTIL.IN_CONTEXT_PRINT('IN_DB_UTIL'); 


Current DB Time: 2022-08-04 15:17:34.391000 
Current UTC Time: 2022-08-04 20:17:34.391000 

Current Activity for the IN_DB_UTIL identifier: 

IN_DB_UTIL TAG:                FUF9OPDVK8 
IN_DB_UTIL STATUS:             EXECUTING 
IN_DB_UTIL OPERATION:          CLEANUP_AUDIT_DATA 
IN_DB_UTIL CALLED BY:          NULL 
IN_DB_UTIL START TIME:         2022-08-04 14:05:33.312000 
IN_DB_UTIL MAX TIME:           2022-08-04 15:07:41.157000 
IN_DB_UTIL MAX MINUTES:        60 
IN_DB_UTIL OBJECT:             IN_AUDIT 
IN_DB_UTIL SUBOBJECT:          NULL 
IN_DB_UTIL TABLESPACE:         INDX 
IN_DB_UTIL BATCH SIZE:         100000 
IN_DB_UTIL BULK LIMIT:         NULL 
IN_DB_UTIL PARALLEL:           1 
IN_DB_UTIL LOGGING:            NULL 
IN_DB_UTIL OS USER:            LOCAL_DOMAIN\USER_NAME 
IN_DB_UTIL DB_SESSION:         742,52540 

PL/SQL procedure successfully completed. 

SQL> EXEC IN_DB_UTIL.IN_SESSION_CLEAR('IN_DB_UTIL','FUF9OPDVK8'); 

PL/SQL procedure successfully completed. 

SQL> EXEC IN_DB_UTIL.IN_CONTEXT_PRINT('IN_DB_UTIL'); 

Current DB Time: 2022-08-04 15:21:53.541000 
Current UTC Time: 2022-08-04 20:21:53.541000 

Current Activity for the IN_DB_UTIL identifier: 

IN_DB_UTIL TAG: NULL 
IN_DB_UTIL STATUS: IDLE 
IN_DB_UTIL OPERATION: NULL 
IN_DB_UTIL CALLED BY: NULL 
IN_DB_UTIL START TIME: NULL 
IN_DB_UTIL MAX TIME: NULL 
IN_DB_UTIL MAX MINUTES: NULL 
IN_DB_UTIL OBJECT: NULL 
IN_DB_UTIL SUBOBJECT: NULL 
IN_DB_UTIL TABLESPACE: NULL 
IN_DB_UTIL BATCH SIZE: NULL 
IN_DB_UTIL BULK LIMIT: NULL 
IN_DB_UTIL PARALLEL: NULL 
IN_DB_UTIL LOGGING: NULL 
IN_DB_UTIL OS USER: NULL 
IN_DB_UTIL DB_SESSION: NULL 

PL/SQL procedure successfully completed.