Request Early Access

Distributed System State Detection Logic Refactoring

Mar 26, 2025

Table of Contents

1. Key SQL Logic in Source Oracle Database

DELIMITER $$
...
SELECT open_mode INTO V_FLAG FROM v$database;
IF V_FLAG = 'READ WRITE' THEN
...
END;
$$

2. Core Challenges in Migrating to OceanBase

Key differences in state-detection mechanisms between Oracle and distributed databases:

  1. System objects: Oracle reads instance-level state through the v$database view, while OceanBase does not use the same mechanism.
  2. Distributed architecture: state checks must query tenant-level global variable tables.

3. SQL Refactoring Plan for the Target Database

DELIMITER $$
...
-- Target-side OceanBase logic (multi-tenant system table)
SELECT VALUE INTO V_FLAG
FROM SYS.TENANT_VIRTUAL_GLOBAL_VARIABLE         -- query tenant-level global variables
WHERE VARIABLE_NAME='read_only';                -- enumerated parameter name
IF V_FLAG = 'OFF' THEN...                       -- boolean-style state check
...
END;
$$

4. Refactoring Summary

  1. Rebuild the state-detection mechanism: replace instance-view checks (v$database) with tenant-level variable-table checks (TENANT_VIRTUAL_GLOBAL_VARIABLE) to obtain tenant state parameters.
  2. Convert state representation: from string-based status (READ WRITE) to read_only parameter state (OFF).
Technical notes:
  • Migration results depend on source-environment complexity and should be validated in real scenarios.
  • This article demonstrates technical approaches only and does not constitute a performance commitment.

Image credit: Designed by Freepik

Request Early Access to SQLShift

Tell us about your database migration plans and we will prioritize access for relevant scenarios.

Request Early Access