Skip to content

Oracle 23ai Compatibility Matrix

Oracle 23ai Compatibility Matrix

Comprehensive compatibility reference for HeliosDB’s Oracle 23ai implementation. This document provides detailed feature-by-feature compatibility information.

Table of Contents


Overall Compatibility Summary

Compatibility Level: 40-45%

HeliosDB implements foundational Oracle 23ai compatibility, focusing on the most commonly used features. The compatibility percentage represents features that work without code modification.

CategoryCoverageStatusProduction Ready
Core SQL65%ProductionYes
DDL Statements55%ProductionYes
DML Statements70%ProductionYes
PL/SQL Core40%BetaLimited
PL/SQL Packages25%BetaNo
DBMS Packages30%PartialLimited
Hierarchical Queries70%ProductionYes
Analytic Functions55%ProductionYes
JSON Functions50%ProductionYes
XML Functions20%AlphaNo
Object Types15%AlphaNo
Collections30%BetaLimited
Triggers40%BetaLimited
Large Objects45%BetaLimited

SQL Language Support

Data Definition Language (DDL)

StatementStatusCoverageNotes
CREATE TABLESupported80%Most options supported
CREATE TABLE AS SELECTSupported75%Basic CTAS
ALTER TABLESupported60%Common alterations
DROP TABLESupported90%CASCADE, PURGE
TRUNCATE TABLESupported85%REUSE STORAGE partial
CREATE INDEXSupported65%B-tree, basic bitmap
CREATE UNIQUE INDEXSupported70%
DROP INDEXSupported90%
CREATE VIEWSupported70%WITH CHECK OPTION
CREATE OR REPLACE VIEWSupported70%
DROP VIEWSupported90%
CREATE MATERIALIZED VIEWPartial35%Basic refresh only
CREATE SEQUENCESupported75%CACHE, NOCACHE
ALTER SEQUENCESupported60%Basic modifications
DROP SEQUENCESupported90%
CREATE SYNONYMSupported60%PUBLIC, PRIVATE
DROP SYNONYMSupported90%
CREATE TYPEPartial20%Simple object types
CREATE PROCEDURESupported50%See PL/SQL section
CREATE FUNCTIONSupported50%See PL/SQL section
CREATE PACKAGEPartial30%See PL/SQL section
CREATE TRIGGERPartial40%Row-level triggers
CREATE CLUSTERNot Supported0%
CREATE CONTEXTNot Supported0%
CREATE DATABASE LINKNot Supported0%
CREATE DIRECTORYPartial30%Limited I/O
COMMENT ONSupported80%
GRANTSupported55%Basic privileges
REVOKESupported55%Basic privileges

Data Manipulation Language (DML)

StatementStatusCoverageNotes
SELECTSupported75%See query features
INSERTSupported80%Single and multi-row
INSERT ALLPartial40%Conditional limited
INSERT FIRSTPartial35%
UPDATESupported80%
DELETESupported85%
MERGESupported60%Basic merge operations
SELECT FOR UPDATESupported65%NOWAIT, WAIT n
LOCK TABLEPartial40%Basic modes

Query Features

FeatureStatusCoverageNotes
Basic SELECTSupported90%
WHERE clauseSupported85%
ORDER BYSupported90%NULLS FIRST/LAST
GROUP BYSupported85%
GROUP BY ROLLUPSupported60%
GROUP BY CUBEPartial45%
GROUP BY GROUPING SETSPartial40%
HAVINGSupported85%
DISTINCTSupported90%
Table aliasesSupported95%
Column aliasesSupported95%
SubqueriesSupported75%Correlated supported
Scalar subqueriesSupported70%
WITH clause (CTEs)Supported70%
Recursive CTEsPartial40%Basic recursion
UNIONSupported90%
UNION ALLSupported90%
INTERSECTSupported85%
MINUSSupported85%
INNER JOINSupported90%
LEFT/RIGHT OUTER JOINSupported90%
FULL OUTER JOINSupported85%
CROSS JOINSupported90%
NATURAL JOINPartial50%
USING clauseSupported80%
Oracle (+) syntaxPartial60%Prefer ANSI joins
FETCH FIRST n ROWSSupported85%Oracle 12c+
OFFSET n ROWSSupported85%
ROWNUMSupported70%See limitations

Hierarchical Query Features

FeatureStatusCoverageNotes
CONNECT BYSupported75%
START WITHSupported80%
PRIORSupported80%
LEVELSupported80%
CONNECT_BY_ROOTSupported70%
SYS_CONNECT_BY_PATHSupported70%
CONNECT_BY_ISLEAFSupported65%
CONNECT_BY_ISCYCLEPartial50%
NOCYCLESupported60%
ORDER SIBLINGS BYPartial45%

Advanced Query Features

FeatureStatusCoverageNotes
PIVOTPartial45%Static pivot
UNPIVOTPartial45%
MODEL clauseNot Supported5%Planned
MATCH_RECOGNIZENot Supported0%
Flashback queriesPartial30%AS OF timestamp
SAMPLE clausePartial35%
XMLTABLEPartial25%
JSON_TABLESupported55%
Lateral inline viewsPartial40%
CROSS APPLYPartial35%
OUTER APPLYPartial35%

PL/SQL Support

Language Constructs

ConstructStatusCoverageNotes
Anonymous blocksSupported65%DECLARE/BEGIN/END
VariablesSupported70%Most scalar types
ConstantsSupported75%
%TYPESupported60%
%ROWTYPESupported55%
IF-THEN-ELSESupported80%
CASE statementSupported75%Simple and searched
Simple LOOPSupported75%
WHILE LOOPSupported75%
FOR LOOPSupported70%Numeric ranges
Cursor FOR LOOPSupported60%
EXIT/EXIT WHENSupported80%
CONTINUESupported75%
GOTOPartial40%Limited support
NULL statementSupported90%
RETURNSupported75%
Nested blocksSupported65%
LabelsPartial50%

Procedures and Functions

FeatureStatusCoverageNotes
CREATE PROCEDURESupported55%
CREATE FUNCTIONSupported55%
CREATE OR REPLACESupported55%
IN parametersSupported75%
OUT parametersSupported60%
IN OUT parametersPartial50%
DEFAULT valuesSupported60%
NOCOPY hintIgnored0%Syntax accepted
DETERMINISTICPartial30%Hint only
RESULT_CACHENot Supported0%
AUTHID CURRENT_USERPartial25%
AUTHID DEFINERPartial30%
Named notationSupported60%
Positional notationSupported80%
Mixed notationPartial45%

Packages

FeatureStatusCoverageNotes
Package specificationPartial35%
Package bodyPartial30%
Package variablesPartial25%Session state limited
Package constantsPartial35%
Package typesPartial20%
Package cursorsPartial25%
Package initializationPartial20%
OverloadingPartial25%
PRAGMA SERIALLY_REUSABLENot Supported0%
Package stateLimited15%Per-session state

Cursors

FeatureStatusCoverageNotes
Explicit cursorsSupported60%
OPENSupported65%
FETCHSupported65%
CLOSESupported70%
%FOUNDSupported65%
%NOTFOUNDSupported65%
%ROWCOUNTSupported60%
%ISOPENSupported60%
Cursor parametersPartial45%
REF CURSORPartial35%Weak cursors
SYS_REFCURSORPartial35%
Cursor variablesPartial30%
Cursor expressionsPartial25%
Implicit cursorsSupported55%SQL%* attributes

Exception Handling

FeatureStatusCoverageNotes
EXCEPTION blockSupported65%
WHEN…THENSupported70%
WHEN OTHERSSupported70%
NO_DATA_FOUNDSupported75%
TOO_MANY_ROWSSupported70%
DUP_VAL_ON_INDEXSupported65%
INVALID_CURSORSupported60%
CURSOR_ALREADY_OPENSupported60%
VALUE_ERRORSupported65%
ZERO_DIVIDESupported70%
INVALID_NUMBERSupported60%
LOGIN_DENIEDPartial40%
PROGRAM_ERRORPartial45%
SQLCODESupported65%
SQLERRMSupported65%
RAISESupported60%
RAISE_APPLICATION_ERRORSupported55%
User-defined exceptionsSupported55%
EXCEPTION_INITPartial40%

Bulk Operations

FeatureStatusCoverageNotes
BULK COLLECTPartial40%Simple cases
BULK COLLECT LIMITPartial35%
FORALLPartial35%
FORALL INDICES OFPartial25%
FORALL VALUES OFPartial25%
SAVE EXCEPTIONSPartial20%
SQL%BULK_EXCEPTIONSPartial20%
SQL%BULK_ROWCOUNTPartial25%

Collections

FeatureStatusCoverageNotes
Nested tablesPartial35%
VARRAYsPartial30%
Associative arraysPartial40%
INDEX BY PLS_INTEGERSupported45%
INDEX BY VARCHAR2Partial30%
Collection methodsPartial35%COUNT, FIRST, LAST
EXISTSPartial40%
COUNTPartial45%
FIRST/LASTPartial40%
NEXT/PRIORPartial35%
EXTENDPartial30%
TRIMPartial25%
DELETEPartial30%
Nested table operatorsNot Supported5%

Triggers

FeatureStatusCoverageNotes
BEFORE INSERTSupported55%
AFTER INSERTSupported55%
BEFORE UPDATESupported55%
AFTER UPDATESupported55%
BEFORE DELETESupported55%
AFTER DELETESupported55%
FOR EACH ROWSupported55%
Statement-levelPartial40%
:NEW/:OLDSupported55%
WHEN clausePartial40%
INSTEAD OFPartial30%Views only
COMPOUND triggersNot Supported5%
System triggersNot Supported0%
DDL triggersNot Supported0%

Advanced PL/SQL

FeatureStatusCoverageNotes
Autonomous transactionsNot Supported0%Planned
Pipelined functionsNot Supported5%
Parallel enableNot Supported0%
PRAGMA RESTRICT_REFERENCESIgnored0%
PRAGMA INLINEIgnored0%
Native compilationNot Supported0%
Conditional compilationPartial20%
Object types in PL/SQLPartial15%
Dynamic SQL (EXECUTE IMMEDIATE)Partial40%
DBMS_SQLPartial35%See package section

DBMS Packages

DBMS_OUTPUT

Function/ProcedureStatusNotes
PUT_LINESupportedFull
PUTSupportedFull
NEW_LINESupportedFull
GET_LINESupported
GET_LINESPartial
ENABLESupported
DISABLESupported

DBMS_LOB

Function/ProcedureStatusNotes
GETLENGTHSupported
SUBSTRSupported
INSTRSupported
APPENDSupported
COPYPartial
ERASEPartial
TRIMPartial
WRITEPartial
READPartial
COMPAREPartial
CREATETEMPORARYPartial
FREETEMPORARYPartial
ISTEMPORARYPartial
LOADFROMFILENot Supported
LOADBLOBFROMFILENot Supported
LOADCLOBFROMFILENot Supported
CONVERTTOBLOBPartial
CONVERTTOCLOBPartial

DBMS_SQL

Function/ProcedureStatusNotes
OPEN_CURSORSupported
PARSESupported
BIND_VARIABLEPartialScalar types
BIND_ARRAYNot Supported
DEFINE_COLUMNPartial
EXECUTESupported
EXECUTE_AND_FETCHPartial
FETCH_ROWSPartial
COLUMN_VALUEPartial
VARIABLE_VALUEPartial
CLOSE_CURSORSupported
IS_OPENSupported
LAST_ROW_COUNTPartial
LAST_ERROR_POSITIONPartial
DESCRIBE_COLUMNSNot Supported
DESCRIBE_COLUMNS2Not Supported
TO_REFCURSORNot Supported
TO_CURSOR_NUMBERNot Supported

DBMS_UTILITY

Function/ProcedureStatusNotes
FORMAT_ERROR_BACKTRACESupported
FORMAT_ERROR_STACKSupported
FORMAT_CALL_STACKPartial
GET_TIMESupportedCentiseconds
GET_CPU_TIMEPartial
COMMA_TO_TABLESupported
TABLE_TO_COMMASupported
NAME_RESOLVEPartial
NAME_TOKENIZEPartial
DB_VERSIONPartial
CURRENT_INSTANCEPartial
EXEC_DDL_STATEMENTPartial
COMPILE_SCHEMANot Supported
ANALYZE_SCHEMANot Supported

DBMS_METADATA

Function/ProcedureStatusNotes
GET_DDLPartialTables, indexes
GET_DEPENDENT_DDLPartial
SET_TRANSFORM_PARAMPartial
OPENPartial
SET_FILTERPartial
SET_COUNTPartial
FETCH_DDLPartial
CLOSEPartial

DBMS_SCHEDULER

Function/ProcedureStatusNotes
CREATE_JOBPartialBasic jobs
DROP_JOBSupported
ENABLESupported
DISABLESupported
RUN_JOBSupported
STOP_JOBSupported
CREATE_SCHEDULEPartial
DROP_SCHEDULEPartial
CREATE_PROGRAMPartial
DROP_PROGRAMPartial
CREATE_CHAINNot Supported
CREATE_WINDOWNot Supported
SET_ATTRIBUTEPartial

DBMS_STATS

Function/ProcedureStatusNotes
GATHER_TABLE_STATSPartialBasic statistics
GATHER_INDEX_STATSPartial
GATHER_SCHEMA_STATSPartial
GATHER_DATABASE_STATSNot Supported
DELETE_TABLE_STATSPartial
DELETE_INDEX_STATSPartial
SET_TABLE_STATSPartial
GET_TABLE_STATSPartial
CREATE_STAT_TABLENot Supported
EXPORT_TABLE_STATSNot Supported
IMPORT_TABLE_STATSNot Supported

UTL_FILE

Function/ProcedureStatusNotes
FOPENPartialLimited modes
FCLOSESupported
FCLOSE_ALLSupported
GET_LINESupported
PUTSupported
PUT_LINESupported
NEW_LINESupported
FFLUSHSupported
FSEEKNot Supported
FGETPOSNot Supported
IS_OPENPartial
FCOPYNot Supported
FGETATTRNot Supported
FREMOVEPartial
FRENAMEPartial

DBMS_RANDOM

Function/ProcedureStatusNotes
INITIALIZESupported
SEEDPartial
RANDOMPartial
VALUESupported
VALUE (range)Supported
STRINGSupported
NORMALPartial
TERMINATESupported

Other Packages

PackageStatusCoverageNotes
DBMS_SESSIONPartial20%SET_IDENTIFIER only
DBMS_APPLICATION_INFOPartial40%SET_MODULE, SET_ACTION
DBMS_CRYPTOPartial15%Basic encryption
DBMS_LOCKNot Supported0%
DBMS_PIPENot Supported0%
DBMS_ALERTNot Supported0%
DBMS_AQNot Supported0%
DBMS_AQADMNot Supported0%
DBMS_JOBDeprecated10%Use DBMS_SCHEDULER
DBMS_PARALLEL_EXECUTENot Supported0%
DBMS_FLASHBACKNot Supported0%Use MVCC
DBMS_REDEFINITIONNot Supported0%
DBMS_XANot Supported0%
UTL_HTTPNot Supported0%
UTL_SMTPNot Supported0%
UTL_TCPNot Supported0%
UTL_RAWPartial30%
UTL_ENCODEPartial25%

Data Types

Scalar Data Types

TypeStatusCoverageNotes
NUMBERSupported90%Full precision
NUMBER(p)Supported90%
NUMBER(p,s)Supported90%
INTEGERSupported90%Maps to NUMBER(38)
SMALLINTSupported90%
DECIMALSupported85%
FLOATSupported85%
BINARY_FLOATSupported80%IEEE 754
BINARY_DOUBLESupported80%IEEE 754
VARCHAR2(n)Supported90%Up to 32767
NVARCHAR2(n)Supported80%Unicode
CHAR(n)Supported85%Fixed length
NCHAR(n)Supported80%Unicode
CLOBSupported65%
NCLOBSupported60%Unicode
BLOBSupported65%
BFILEPartial20%Read-only
RAW(n)Supported70%
LONGSupported50%Deprecated
LONG RAWSupported45%Deprecated
DATESupported85%
TIMESTAMPSupported85%
TIMESTAMP WITH TIME ZONESupported80%
TIMESTAMP WITH LOCAL TIME ZONEPartial60%
INTERVAL YEAR TO MONTHSupported70%
INTERVAL DAY TO SECONDSupported70%
ROWIDSupported60%Different format
UROWIDPartial40%
BOOLEAN (PL/SQL)Supported75%
PLS_INTEGERSupported75%
BINARY_INTEGERSupported75%
SIMPLE_INTEGERPartial50%
SIMPLE_FLOATPartial50%
SIMPLE_DOUBLEPartial50%

Complex Types

TypeStatusCoverageNotes
Object typesPartial15%Simple structures
Nested tablesPartial30%
VARRAYsPartial30%
REF typesNot Supported0%
Opaque typesNot Supported0%

XML Types

TypeStatusCoverageNotes
XMLTypePartial25%Basic operations
createXMLPartial30%
extractPartial35%XPath
extractValuePartial30%
existsNodePartial30%
XMLQueryPartial25%
XMLTablePartial25%
XMLELEMENTPartial25%
XMLFORESTPartial20%
XMLAGGPartial25%

JSON Types

TypeStatusCoverageNotes
JSONSupported60%Native JSON type
JSON_VALUESupported65%
JSON_QUERYSupported60%
JSON_TABLESupported55%
JSON_EXISTSSupported60%
JSON_OBJECTSupported60%
JSON_ARRAYSupported60%
JSON_OBJECTAGGSupported55%
JSON_ARRAYAGGSupported55%
IS JSONSupported65%
JSON_SERIALIZEPartial45%
JSON_MERGEPATCHPartial35%
JSON_TRANSFORMNot Supported10%

Built-in Functions

String Functions

FunctionStatusOracle Behavior Preserved
CONCATSupportedYes
SUBSTRSupportedYes (negative position)
LENGTHSupportedYes
INSTRSupportedYes (nth occurrence)
UPPERSupportedYes
LOWERSupportedYes
INITCAPSupportedYes
LPADSupportedYes
RPADSupportedYes
LTRIMSupportedYes (trim set)
RTRIMSupportedYes (trim set)
TRIMSupportedYes
REPLACESupportedYes
TRANSLATESupportedYes
REVERSESupportedYes
ASCIISupportedYes
CHRSupportedYes
SOUNDEXPartialApproximate
REGEXP_LIKESupportedMost patterns
REGEXP_REPLACESupportedMost patterns
REGEXP_SUBSTRSupportedMost patterns
REGEXP_INSTRPartialBasic patterns
REGEXP_COUNTPartialBasic patterns
NVLSupportedYes
NVL2SupportedYes
DECODESupportedYes
COALESCESupportedYes
NULLIFSupportedYes
LNNVLPartial
NANVLPartial

Numeric Functions

FunctionStatusNotes
ABSSupported
CEILSupported
FLOORSupported
ROUNDSupported
TRUNCSupported
MODSupported
POWERSupported
SQRTSupported
EXPSupported
LNSupported
LOGSupported
SIGNSupported
SIN, COS, TANSupported
ASIN, ACOS, ATANSupported
SINH, COSH, TANHSupported
GREATESTSupportedNULL propagation
LEASTSupportedNULL propagation
WIDTH_BUCKETPartial
REMAINDERSupported
BITANDSupported

Date/Time Functions

FunctionStatusNotes
SYSDATESupported
SYSTIMESTAMPSupported
CURRENT_DATESupportedSession TZ
CURRENT_TIMESTAMPSupportedSession TZ
LOCALTIMESTAMPSupported
DBTIMEZONEPartial
SESSIONTIMEZONESupported
ADD_MONTHSSupportedMonth-end handling
MONTHS_BETWEENSupportedFractional
LAST_DAYSupported
NEXT_DAYSupported
ROUND (date)SupportedFormat models
TRUNC (date)SupportedFormat models
EXTRACTSupported
TO_DATESupportedFormat models
TO_CHARSupportedFormat models
TO_TIMESTAMPSupported
TO_TIMESTAMP_TZPartial
TO_DSINTERVALPartial
TO_YMINTERVALPartial
FROM_TZPartial
NEW_TIMEPartial
TZ_OFFSETPartial

Aggregate Functions

FunctionStatusNotes
COUNTSupportedIncluding DISTINCT
SUMSupported
AVGSupported
MINSupported
MAXSupported
LISTAGGSupported
MEDIANPartial
PERCENTILE_CONTPartial
PERCENTILE_DISCPartial
STDDEVSupported
STDDEV_POPSupported
STDDEV_SAMPSupported
VARIANCESupported
VAR_POPSupported
VAR_SAMPSupported
COVAR_POPPartial
COVAR_SAMPPartial
CORRPartial
REGR_*PartialBasic regression
STATS_*Not Supported
COLLECTPartial
XMLAGGPartial

Analytic Functions

FunctionStatusNotes
ROW_NUMBERSupported
RANKSupported
DENSE_RANKSupported
NTILESupported
LAGSupported
LEADSupported
FIRST_VALUESupported
LAST_VALUESupported
NTH_VALUEPartial
CUME_DISTPartial
PERCENT_RANKPartial
RATIO_TO_REPORTPartial
FIRST/LASTPartial
KEEPPartialFIRST/LAST only
OVER clauseSupported
PARTITION BYSupported
ORDER BYSupported
ROWS/RANGESupported
UNBOUNDEDSupported
CURRENT ROWSupported

Conversion Functions

FunctionStatusNotes
TO_CHARSupportedMost formats
TO_NUMBERSupported
TO_DATESupportedMost formats
TO_TIMESTAMPSupported
TO_CLOBPartial
TO_BLOBPartial
TO_LOBPartial
CASTSupportedMost conversions
CONVERTPartialCharacter sets
HEXTORAWSupported
RAWTOHEXSupported
ROWIDTOCHARPartial
CHARTOROWIDPartial

Advanced Features

Flashback Support

FeatureStatusNotes
AS OF TIMESTAMPPartialUses MVCC
AS OF SCNNot Supported
VERSIONS BETWEENNot Supported
Flashback TableNot Supported
Flashback DropNot Supported
Flashback DatabaseNot Supported

Partitioning

FeatureStatusNotes
Range partitioningPartialBasic
List partitioningPartialBasic
Hash partitioningPartialBasic
Composite partitioningNot Supported
Interval partitioningNot Supported
Reference partitioningNot Supported
Partition pruningPartial

Advanced Security

FeatureStatusNotes
Virtual Private DatabaseNot Supported
Label SecurityNot Supported
Transparent Data EncryptionNot SupportedUse HeliosDB encryption
Data MaskingNot Supported
Database VaultNot Supported
Audit VaultNot Supported

Known Limitations

Not Supported Features

FeatureAlternative
Oracle RACHeliosDB native clustering
Data GuardHeliosDB replication
ASMStandard filesystem storage
Streams/GoldenGateHeliosDB CDC
Oracle Spatial (SDO_*)Not available
Oracle TextHeliosDB full-text search
Java stored proceduresUse PL/SQL or external
APEXWeb UI alternatives
Oracle FormsWeb UI alternatives

SQL Limitations

  1. ROWNUM: Works in simple cases but complex ROWNUM usage may behave differently
  2. MODEL clause: Not supported; use application logic
  3. MATCH_RECOGNIZE: Pattern matching not available
  4. CONNECT BY: Limited to 1000 levels by default
  5. Recursive CTEs: Basic recursion only

PL/SQL Limitations

  1. Autonomous transactions: Not supported
  2. Pipelined functions: Not supported
  3. Package state: Limited session state management
  4. Native compilation: Interpreted only
  5. Complex object types: Basic structures only

Behavioral Differences

NULL Handling

  • Oracle empty strings are treated as NULL; HeliosDB distinguishes empty strings from NULL
  • Use NVL() or COALESCE() for consistent behavior

ROWID Format

  • HeliosDB uses a different internal ROWID format
  • ROWID values are not portable between systems

Sequence Behavior

  • Caching behavior may differ slightly
  • CURRVAL requires NEXTVAL to be called first in the same session

Transaction Isolation

  • Uses HeliosDB’s MVCC implementation
  • Snapshot isolation is the default

Date Arithmetic

  • Oracle allows direct date + number operations
  • Some edge cases with month-end dates may differ


Last Updated: January 2026 Compatibility Version: HeliosDB 7.0+ / Oracle 23ai