Posts

Showing posts from October, 2025

GIMR Database Changes in Oracle Cluster

Image
  GIMR, or   Grid Infrastructure Management Repository , was introduced in Oracle 12c. Oracle’s purpose in creating GIMR was to record cluster-related events and incidents. More precisely, GIMR is intended to store   Cluster Health Monitor   data inside its database. This database contains around 20 tables, which can be listed using the following commands: [grid @RAC1 ~ ]$ export ORACLE_SID = - MGMTDB [grid @RAC1 ~ ]$ sqlplus "/as sysdba" SQL > alter session set container = GIMR_DSCREP_10; Session altered. SQL > select table_name from dba_tables where owner = 'CHM' order by table_name; TABLE_NAME -------------------------------------------------------------------------------- CATCHMUTILPLS_PARTITION_TMP_TBL CHMOS_ACTIVE_CONFIG_INT_TBL CHMOS_ADVM_INT_TBL … 16 rows selected. For example, using the  CHMOS_SYSTEM_SAMPLE_INT_TBL  table, you can obtain information about disk I/O: select to_char ( begintime, 'YYYY/MM/DD HH24:mi:ss' , 'NLS_CA...

Oracle AI Database 26ai: RESETTABLE Clause

Image
  In Oracle, PL/SQL packages can maintain a   session-level state . This means that once a package is loaded into a user session, its global variables retain values across multiple calls. In previous Oracle versions, when a package was recompiled, all active sessions holding that package’s state would encounter   ORA-04068   errors. In Oracle 26ai, the  RESETTABLE  clause introduces a new way to manage PL/SQL package states more safely and efficiently. To understand how it works, let’s examine the following practical scenario. 1. Default Package Behavior (Without RESETTABLE) First, we create a simple package with a global variable and a procedure that increments and prints its value: CREATE OR REPLACE PACKAGE my_pkg AS Glob_cnt number : = 0 ; PROCEDURE prc_inc_cnt; END my_pkg; / Package created CREATE OR REPLACE PACKAGE BODY my_pkg AS PROCEDURE prc_inc_cnt IS BEGIN Glob_cnt : = Glob_cnt + 1 ; DBMS_OUTPUT.PUT_LINE( 'Counter = ' || ...