Skip to content

Oracle Database Data Dictionary & SQL Catalog

from sqlspec.data_dictionary import get_data_dictionary_loader, get_dialect_config

config = get_dialect_config("oracle")

Introspects ALL_TABLES, ALL_TAB_COLS, ALL_INDEXES, ALL_IND_COLUMNS, ALL_CONSTRAINTS, ALL_CONS_COLUMNS, ALL_VIEWS, ALL_OBJECTS, ALL_TRIGGERS, ALL_SEQUENCES, and DBMS_METADATA. See the Oracle Database Guide and Data Dictionary Guide for usage examples.

Dialect Configuration

Setting Value
Dialect Name oracle
Default Schema None
Version Pattern (\d+)
DDL Strategy Native DBMS_METADATA.GET_DDL + AST fallback
Catalog .sql Files 22 files (35 named queries)

Capabilities & Type Mappings

Capability Status / Minimum Version Logical Type Target Physical Type
supports_for_update True bigint NUMBER(19)
supports_in_memory True blob BLOB
supports_on_conflict False boolean NUMBER(1)
supports_prepared_statements True float BINARY_DOUBLE
supports_schemas True integer NUMBER(10)
supports_skip_locked True json JSON
supports_transactions True text CLOB
supports_update_from False timestamp TIMESTAMP
- - uuid RAW(16)
- - varchar VARCHAR2({length})

Adapter Data Dictionary Classes

OracledbSyncDataDictionary

OracledbSyncDataDictionary()

Bases: SyncDataDictionaryBase

Oracle-specific sync data dictionary.

Methods:

Name Description
get_dialect_config

Return the dialect configuration for this data dictionary.

resolve_schema

Return a schema name using dialect defaults when missing.

list_available_features
get_metadata_capabilities

Report Oracle metadata capabilities and scope gates.

get_system_metadata_capabilities

Get Oracle opt-in system metadata capability disclosures.

get_system_metadata

Return Oracle system metadata only when diagnostics gates are accepted.

get_schemas

Get Oracle user/schema metadata.

get_objects

Get Oracle object metadata from ALL_OBJECTS.

get_table_details

Get rich Oracle table metadata.

get_constraints

Get Oracle constraint metadata.

get_views

Get Oracle view metadata.

get_materialized_views

Get Oracle materialized view metadata.

get_sequences

Get Oracle sequence metadata.

get_routines

Get Oracle routine, package, procedure, and function metadata.

get_triggers

Get Oracle trigger metadata.

get_privileges

Get Oracle table and column grants.

get_dependencies

Get Oracle dependency metadata.

get_partitions

Get Oracle partition and storage metadata.

get_lob_storage

Get Oracle LOB storage metadata.

get_version

Get Oracle database version information through the pool-scoped cache.

get_feature_flag

Check if Oracle database supports a specific feature.

get_optimal_type

Get optimal Oracle type for a category.

get_tables

Get tables sorted by dependency order with full coverage.

get_columns

Get column information for a table or schema.

get_indexes

Get index metadata for a table or schema.

get_foreign_keys

Get foreign key metadata.

get_vector_memory_pool

Return V$VECTOR_MEMORY_POOL allocation rows or empty list when unavailable.

has_cloud_ai

Return True when DBMS_CLOUD_AI is installed and accessible.

get_apex_release

Return APEX_RELEASE metadata row or None when APEX is not installed.

get_json_duality_views

Return Oracle 26ai JSON Relational Duality View catalog rows.

Attributes:

Name Type Description
dialect str

get_dialect_config

get_dialect_config() -> DialectConfig

Return the dialect configuration for this data dictionary.

resolve_schema

resolve_schema(schema: str | None) -> str | None

Return a schema name using dialect defaults when missing.

list_available_features

list_available_features() -> list[str]

get_metadata_capabilities

get_metadata_capabilities(
    driver: object,
    domains: Sequence[str] | None = None,
    *,
    include_privileged: bool = False,
    include_diagnostics: bool = False,
    acknowledge_diagnostics_license: bool = False,
) -> MetadataCapabilityProfile

Report Oracle metadata capabilities and scope gates.

get_system_metadata_capabilities

get_system_metadata_capabilities(
    driver: OracleSyncDriver, domains: Sequence[str] | None = None
) -> tuple[SystemMetadataCapability, ...]

Get Oracle opt-in system metadata capability disclosures.

get_system_metadata

get_system_metadata(
    driver: OracleSyncDriver,
    request: SystemMetadataRequest | str | None = None,
    **kwargs: Any,
) -> SystemMetadataResult

Return Oracle system metadata only when diagnostics gates are accepted.

get_schemas

get_schemas(driver: OracleSyncDriver) -> MetadataResult

Get Oracle user/schema metadata.

get_objects

get_objects(
    driver: OracleSyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle object metadata from ALL_OBJECTS.

get_table_details

get_table_details(
    driver: OracleSyncDriver, table: str, schema: str | None = None
) -> MetadataResult

Get rich Oracle table metadata.

get_constraints

get_constraints(
    driver: OracleSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle constraint metadata.

get_views

get_views(
    driver: OracleSyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle view metadata.

get_materialized_views

get_materialized_views(
    driver: OracleSyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle materialized view metadata.

get_sequences

get_sequences(
    driver: OracleSyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle sequence metadata.

get_routines

get_routines(
    driver: OracleSyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle routine, package, procedure, and function metadata.

get_triggers

get_triggers(
    driver: OracleSyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle trigger metadata.

get_privileges

get_privileges(
    driver: OracleSyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle table and column grants.

get_dependencies

get_dependencies(
    driver: OracleSyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle dependency metadata.

get_partitions

get_partitions(
    driver: OracleSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle partition and storage metadata.

get_lob_storage

get_lob_storage(
    driver: OracleSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle LOB storage metadata.

get_version

get_version(driver: OracleSyncDriver) -> OracleVersionInfo | None

Get Oracle database version information through the pool-scoped cache.

get_feature_flag

get_feature_flag(driver: OracleSyncDriver, feature: str) -> bool

Check if Oracle database supports a specific feature.

get_optimal_type

get_optimal_type(driver: OracleSyncDriver, type_category: str) -> str

Get optimal Oracle type for a category.

get_tables

get_tables(
    driver: OracleSyncDriver, schema: str | None = None
) -> list[TableMetadata]

Get tables sorted by dependency order with full coverage.

get_columns

get_columns(
    driver: OracleSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ColumnMetadata]

Get column information for a table or schema.

get_indexes

get_indexes(
    driver: OracleSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[IndexMetadata]

Get index metadata for a table or schema.

get_foreign_keys

get_foreign_keys(
    driver: OracleSyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ForeignKeyMetadata]

Get foreign key metadata.

get_vector_memory_pool

get_vector_memory_pool(driver: OracleSyncDriver) -> list[dict[str, Any]]

Return V$VECTOR_MEMORY_POOL allocation rows or empty list when unavailable.

has_cloud_ai

has_cloud_ai(driver: OracleSyncDriver) -> bool

Return True when DBMS_CLOUD_AI is installed and accessible.

get_apex_release

get_apex_release(driver: OracleSyncDriver) -> dict[str, Any] | None

Return APEX_RELEASE metadata row or None when APEX is not installed.

get_json_duality_views

get_json_duality_views(
    driver: OracleSyncDriver, schema: str | None = None
) -> list[dict[str, Any]]

Return Oracle 26ai JSON Relational Duality View catalog rows.

OracledbAsyncDataDictionary

OracledbAsyncDataDictionary()

Bases: AsyncDataDictionaryBase

Oracle-specific async data dictionary.

Methods:

Name Description
get_dialect_config

Return the dialect configuration for this data dictionary.

resolve_schema

Return a schema name using dialect defaults when missing.

list_available_features
get_metadata_capabilities

Report Oracle metadata capabilities and scope gates.

get_system_metadata_capabilities

Get Oracle opt-in system metadata capability disclosures.

get_system_metadata

Return Oracle system metadata only when diagnostics gates are accepted.

get_schemas

Get Oracle user/schema metadata.

get_objects

Get Oracle object metadata from ALL_OBJECTS.

get_table_details

Get rich Oracle table metadata.

get_constraints

Get Oracle constraint metadata.

get_views

Get Oracle view metadata.

get_materialized_views

Get Oracle materialized view metadata.

get_sequences

Get Oracle sequence metadata.

get_routines

Get Oracle routine, package, procedure, and function metadata.

get_triggers

Get Oracle trigger metadata.

get_privileges

Get Oracle table and column grants.

get_dependencies

Get Oracle dependency metadata.

get_partitions

Get Oracle partition and storage metadata.

get_lob_storage

Get Oracle LOB storage metadata.

get_version

Get Oracle database version information through the pool-scoped cache.

get_feature_flag

Check if Oracle database supports a specific feature.

get_optimal_type

Get optimal Oracle type for a category.

get_tables

Get tables sorted by dependency order with full coverage.

get_columns

Get column information for a table or schema.

get_indexes

Get index metadata for a table or schema.

get_foreign_keys

Get foreign key metadata.

get_vector_memory_pool

Return V$VECTOR_MEMORY_POOL allocation rows or empty list when unavailable.

has_cloud_ai

Return True when DBMS_CLOUD_AI is installed and accessible.

get_apex_release

Return APEX_RELEASE metadata row or None when APEX is not installed.

get_json_duality_views

Return Oracle 26ai JSON Relational Duality View catalog rows.

Attributes:

Name Type Description
dialect str

get_dialect_config

get_dialect_config() -> DialectConfig

Return the dialect configuration for this data dictionary.

resolve_schema

resolve_schema(schema: str | None) -> str | None

Return a schema name using dialect defaults when missing.

list_available_features

list_available_features() -> list[str]

get_metadata_capabilities async

get_metadata_capabilities(
    driver: object,
    domains: Sequence[str] | None = None,
    *,
    include_privileged: bool = False,
    include_diagnostics: bool = False,
    acknowledge_diagnostics_license: bool = False,
) -> MetadataCapabilityProfile

Report Oracle metadata capabilities and scope gates.

get_system_metadata_capabilities async

get_system_metadata_capabilities(
    driver: OracleAsyncDriver, domains: Sequence[str] | None = None
) -> tuple[SystemMetadataCapability, ...]

Get Oracle opt-in system metadata capability disclosures.

get_system_metadata async

get_system_metadata(
    driver: OracleAsyncDriver,
    request: SystemMetadataRequest | str | None = None,
    **kwargs: Any,
) -> SystemMetadataResult

Return Oracle system metadata only when diagnostics gates are accepted.

get_schemas async

get_schemas(driver: OracleAsyncDriver) -> MetadataResult

Get Oracle user/schema metadata.

get_objects async

get_objects(
    driver: OracleAsyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle object metadata from ALL_OBJECTS.

get_table_details async

get_table_details(
    driver: OracleAsyncDriver, table: str, schema: str | None = None
) -> MetadataResult

Get rich Oracle table metadata.

get_constraints async

get_constraints(
    driver: OracleAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle constraint metadata.

get_views async

get_views(
    driver: OracleAsyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle view metadata.

get_materialized_views async

get_materialized_views(
    driver: OracleAsyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle materialized view metadata.

get_sequences async

get_sequences(
    driver: OracleAsyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle sequence metadata.

get_routines async

get_routines(
    driver: OracleAsyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle routine, package, procedure, and function metadata.

get_triggers async

get_triggers(
    driver: OracleAsyncDriver, schema: str | None = None
) -> MetadataResult

Get Oracle trigger metadata.

get_privileges async

get_privileges(
    driver: OracleAsyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle table and column grants.

get_dependencies async

get_dependencies(
    driver: OracleAsyncDriver,
    object_name: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle dependency metadata.

get_partitions async

get_partitions(
    driver: OracleAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle partition and storage metadata.

get_lob_storage async

get_lob_storage(
    driver: OracleAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> MetadataResult

Get Oracle LOB storage metadata.

get_version async

get_version(driver: OracleAsyncDriver) -> OracleVersionInfo | None

Get Oracle database version information through the pool-scoped cache.

get_feature_flag async

get_feature_flag(driver: OracleAsyncDriver, feature: str) -> bool

Check if Oracle database supports a specific feature.

get_optimal_type async

get_optimal_type(driver: OracleAsyncDriver, type_category: str) -> str

Get optimal Oracle type for a category.

get_tables async

get_tables(
    driver: OracleAsyncDriver, schema: str | None = None
) -> list[TableMetadata]

Get tables sorted by dependency order with full coverage.

get_columns async

get_columns(
    driver: OracleAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ColumnMetadata]

Get column information for a table or schema.

get_indexes async

get_indexes(
    driver: OracleAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[IndexMetadata]

Get index metadata for a table or schema.

get_foreign_keys async

get_foreign_keys(
    driver: OracleAsyncDriver,
    table: str | None = None,
    schema: str | None = None,
) -> list[ForeignKeyMetadata]

Get foreign key metadata.

get_vector_memory_pool async

get_vector_memory_pool(driver: OracleAsyncDriver) -> list[dict[str, Any]]

Return V$VECTOR_MEMORY_POOL allocation rows or empty list when unavailable.

has_cloud_ai async

has_cloud_ai(driver: OracleAsyncDriver) -> bool

Return True when DBMS_CLOUD_AI is installed and accessible.

get_apex_release async

get_apex_release(driver: OracleAsyncDriver) -> dict[str, Any] | None

Return APEX_RELEASE metadata row or None when APEX is not installed.

get_json_duality_views async

get_json_duality_views(
    driver: OracleAsyncDriver, schema: str | None = None
) -> list[dict[str, Any]]

Return Oracle 26ai JSON Relational Duality View catalog rows.

OracleVersionInfo

OracleVersionInfo(
    major: int,
    minor: int = 0,
    patch: int = 0,
    compatible: str | None = None,
    is_autonomous: bool = False,
)

Bases: VersionInfo

Oracle database version information.

Initialize Oracle version info.

Parameters:

Name Type Description Default
major int

Major version number.

required
minor int

Minor version number.

0
patch int

Patch version number.

0
compatible str | None

Compatible parameter value.

None
is_autonomous bool

Whether this is an Autonomous Database.

False

Methods:

Name Description
supports_native_json

Check if database supports native JSON data type.

supports_oson_blob

Check if database supports BLOB with OSON format.

supports_json_blob

Check if database supports BLOB with JSON validation.

Attributes:

Name Type Description
compatible
is_autonomous
compatible_major int | None

Get major version from compatible parameter.

supports_native_json

supports_native_json() -> bool

Check if database supports native JSON data type.

supports_oson_blob

supports_oson_blob() -> bool

Check if database supports BLOB with OSON format.

supports_json_blob

supports_json_blob() -> bool

Check if database supports BLOB with JSON validation.

JSONStorageType

Bases: StrEnum

Oracle JSON storage rung selected from the server version.

The full ladder is a support contract: SQLSpec targets the oldest possible Oracle servers with graceful degradation, so every rung is retained.

  • JSON_NATIVE — native JSON type / OSON binary (21c+).
  • BLOB_JSON — BLOB validated by an IS JSON check constraint (12.1.0.2+).
  • BLOB_PLAIN — plain BLOB/CLOB fallback for servers older than 12c.

Attributes:

Name Type Description
JSON_NATIVE
BLOB_JSON
BLOB_PLAIN

Catalog SQL Queries

The oracle dialect pack defines 35 named queries across 22 domain .sql files loaded via DataDictionaryLoader (sqlspec/data_dictionary/dialects/oracle/):

Domain Pack Named Queries Bind Parameters
arguments.sql by_schema :object_name, :schema_name
columns.sql by_schema, by_table :schema_name, :table_name
comments.sql by_schema :object_name, :schema_name
constraints.sql by_schema :schema_name, :table_name
ddl.sql by_object :object_name, :object_type, :owner
dependencies.sql by_schema :object_name, :schema_name
foreign_keys.sql by_table, by_schema :schema_name, :table_name
grants.sql by_schema :object_name, :schema_name
indexes.sql by_schema, by_table :schema_name, :table_name
lob_storage.sql by_schema :schema_name, :table_name
materialized_views.sql by_schema :mview_name, :schema_name
objects.sql by_schema, cloud_ai_available :object_name, :schema_name
partitions.sql by_schema :schema_name, :table_name
routines.sql by_schema :object_name, :schema_name
schemas.sql by_schema :schema_name
sequences.sql by_schema :schema_name, :sequence_name
source.sql by_schema :object_name, :schema_name
system.sql awr, no_diagnostics, statspack, vector_memory_pool :acknowledge_license, :include_diagnostics
tables.sql by_schema, names_by_schema :schema_name, :table_name
triggers.sql by_schema :schema_name, :trigger_name
version.sql current, autonomous_service, compatible, apex_release none
views.sql by_schema, json_duality_views, json_duality_views_by_schema :schema_name, :view_name
arguments.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    object_name,
    package_name,
    procedure_name,
    argument_name,
    position,
    sequence,
    data_level,
    data_type,
    defaulted,
    default_value,
    in_out,
    data_length,
    data_precision,
    data_scale,
    type_owner,
    type_name,
    type_subname,
    pls_type,
    char_length,
    char_used,
    origin_con_id
FROM all_arguments
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR object_name = :object_name)
ORDER BY owner, object_name, package_name, subprogram_id, sequence;
columns.sql (2 named queries)
-- name: by_schema
-- dialect: oracle
WITH pk_columns AS (
    SELECT DISTINCT
        acc.owner,
        acc.table_name,
        acc.column_name
    FROM all_constraints ac
    JOIN all_cons_columns acc
      ON acc.owner = ac.owner
     AND acc.constraint_name = ac.constraint_name
     AND acc.table_name = ac.table_name
    WHERE ac.owner = COALESCE(:schema_name, USER)
      AND (:table_name IS NULL OR ac.table_name = :table_name)
      AND ac.constraint_type = 'P'
)
SELECT
    c.owner AS schema_name,
    c.table_name,
    c.column_name,
    c.data_type,
    c.data_type_owner,
    c.data_length AS max_length,
    c.data_precision AS numeric_precision,
    c.data_scale AS numeric_scale,
    c.nullable AS is_nullable,
    c.column_id AS ordinal_position,
    c.data_default AS column_default,
    CASE WHEN c.hidden_column = 'YES' THEN 1 ELSE 0 END AS is_hidden,
    CASE WHEN c.virtual_column = 'YES' THEN 1 ELSE 0 END AS is_generated,
    c.segment_column_id,
    c.internal_column_id,
    CASE WHEN c.identity_column = 'YES' THEN 1 ELSE 0 END AS is_identity,
    CASE
        WHEN ic.generation_type = 'BY DEFAULT' AND c.default_on_null = 'YES' THEN 'BY DEFAULT ON NULL'
        ELSE ic.generation_type
    END AS identity_generation,
    ic.sequence_name AS sequence_name,
    CASE WHEN pk.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_primary,
    c.collation,
    cc.comments AS column_comment
FROM all_tab_cols c
LEFT JOIN pk_columns pk
  ON pk.owner = c.owner
 AND pk.table_name = c.table_name
 AND pk.column_name = c.column_name
LEFT JOIN all_tab_identity_cols ic
  ON ic.owner = c.owner
 AND ic.table_name = c.table_name
 AND ic.column_name = c.column_name
LEFT JOIN all_col_comments cc
  ON cc.owner = c.owner
 AND cc.table_name = c.table_name
 AND cc.column_name = c.column_name
WHERE c.owner = COALESCE(:schema_name, USER)
  AND (:table_name IS NULL OR c.table_name = :table_name)
ORDER BY c.owner, c.table_name, c.internal_column_id;

-- name: by_table
-- dialect: oracle
WITH pk_columns AS (
    SELECT DISTINCT
        acc.owner,
        acc.table_name,
        acc.column_name
    FROM all_constraints ac
    JOIN all_cons_columns acc
      ON acc.owner = ac.owner
     AND acc.constraint_name = ac.constraint_name
     AND acc.table_name = ac.table_name
    WHERE ac.owner = COALESCE(:schema_name, USER)
      AND ac.table_name = :table_name
      AND ac.constraint_type = 'P'
)
SELECT
    c.owner AS schema_name,
    c.table_name AS table_name,
    c.column_name AS column_name,
    c.data_type AS data_type,
    c.nullable AS is_nullable,
    c.data_default AS column_default,
    c.column_id AS ordinal_position,
    CASE WHEN c.hidden_column = 'YES' THEN 1 ELSE 0 END AS is_hidden,
    CASE WHEN c.virtual_column = 'YES' THEN 1 ELSE 0 END AS is_generated,
    CASE WHEN c.identity_column = 'YES' THEN 1 ELSE 0 END AS is_identity,
    CASE
        WHEN ic.generation_type = 'BY DEFAULT' AND c.default_on_null = 'YES' THEN 'BY DEFAULT ON NULL'
        ELSE ic.generation_type
    END AS identity_generation,
    ic.sequence_name AS sequence_name,
    CASE WHEN pk.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_primary
FROM all_tab_cols c
LEFT JOIN pk_columns pk
  ON pk.owner = c.owner
 AND pk.table_name = c.table_name
 AND pk.column_name = c.column_name
LEFT JOIN all_tab_identity_cols ic
  ON ic.owner = c.owner
 AND ic.table_name = c.table_name
 AND ic.column_name = c.column_name
WHERE c.owner = COALESCE(:schema_name, USER)
  AND c.table_name = :table_name
ORDER BY c.column_id;
comments.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    table_name,
    NULL AS column_name,
    table_type AS object_type,
    comments
FROM all_tab_comments
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR table_name = :object_name)
UNION ALL
SELECT
    owner AS schema_name,
    table_name,
    column_name,
    'COLUMN' AS object_type,
    comments
FROM all_col_comments
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR table_name = :object_name)
ORDER BY schema_name, table_name, column_name;
constraints.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    c.owner AS schema_name,
    c.table_name,
    c.constraint_name,
    c.constraint_type,
    c.search_condition_vc AS search_condition,
    c.r_owner AS referenced_schema,
    r.table_name AS referenced_table,
    c.r_constraint_name AS referenced_constraint,
    c.delete_rule,
    c.status,
    c.deferrable,
    c.deferred,
    c.validated,
    c.generated,
    c.bad,
    c.rely,
    c.last_change,
    LISTAGG(cc.column_name, ',') WITHIN GROUP (ORDER BY cc.position) AS columns
FROM all_constraints c
LEFT JOIN all_cons_columns cc
  ON cc.owner = c.owner
  AND cc.constraint_name = c.constraint_name
LEFT JOIN all_constraints r
  ON r.owner = c.r_owner
  AND r.constraint_name = c.r_constraint_name
WHERE c.owner = COALESCE(:schema_name, USER)
  AND (:table_name IS NULL OR c.table_name = :table_name)
GROUP BY
    c.owner,
    c.table_name,
    c.constraint_name,
    c.constraint_type,
    c.search_condition_vc,
    c.r_owner,
    r.table_name,
    c.r_constraint_name,
    c.delete_rule,
    c.status,
    c.deferrable,
    c.deferred,
    c.validated,
    c.generated,
    c.bad,
    c.rely,
    c.last_change
ORDER BY c.owner, c.table_name, c.constraint_name;
ddl.sql (1 named queries)
-- name: by_object
-- dialect: oracle
SELECT DBMS_METADATA.GET_DDL(:object_type, :object_name, :owner) AS ddl
FROM dual;
dependencies.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    name AS object_name,
    type AS object_type,
    referenced_owner,
    referenced_name,
    referenced_type,
    referenced_link_name,
    dependency_type,
    origin_con_id
FROM all_dependencies
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR name = :object_name)
ORDER BY owner, name, referenced_owner, referenced_name, referenced_type;
foreign_keys.sql (2 named queries)
-- name: by_table
-- dialect: oracle
SELECT
    c.table_name,
    cc.column_name,
    r.table_name AS referenced_table_name,
    rcc.column_name AS referenced_column_name,
    c.constraint_name,
    c.owner AS table_schema,
    r.owner AS referenced_table_schema
FROM all_constraints c
JOIN all_cons_columns cc
  ON c.owner = cc.owner
  AND c.constraint_name = cc.constraint_name
JOIN all_constraints r
  ON c.r_owner = r.owner
  AND c.r_constraint_name = r.constraint_name
JOIN all_cons_columns rcc
  ON r.owner = rcc.owner
  AND r.constraint_name = rcc.constraint_name
  AND cc.position = rcc.position
WHERE c.constraint_type = 'R'
  AND c.owner = COALESCE(:schema_name, USER)
  AND (:table_name IS NULL OR c.table_name = :table_name);

-- name: by_schema
-- dialect: oracle
SELECT
    c.table_name,
    cc.column_name,
    r.table_name AS referenced_table_name,
    rcc.column_name AS referenced_column_name,
    c.constraint_name,
    c.owner AS table_schema,
    r.owner AS referenced_table_schema
FROM all_constraints c
JOIN all_cons_columns cc
  ON c.owner = cc.owner
  AND c.constraint_name = cc.constraint_name
JOIN all_constraints r
  ON c.r_owner = r.owner
  AND c.r_constraint_name = r.constraint_name
JOIN all_cons_columns rcc
  ON r.owner = rcc.owner
  AND r.constraint_name = rcc.constraint_name
  AND cc.position = rcc.position
WHERE c.constraint_type = 'R'
  AND c.owner = COALESCE(:schema_name, USER);
grants.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    table_name AS object_name,
    NULL AS column_name,
    grantor,
    grantee,
    privilege,
    grantable,
    hierarchy,
    type,
    common,
    inherited
FROM all_tab_privs
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR table_name = :object_name)
UNION ALL
SELECT
    owner AS schema_name,
    table_name AS object_name,
    column_name,
    grantor,
    grantee,
    privilege,
    grantable,
    NULL AS hierarchy,
    'COLUMN' AS type,
    common,
    inherited
FROM all_col_privs
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR table_name = :object_name)
ORDER BY schema_name, object_name, column_name, grantee, privilege;
indexes.sql (2 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    i.owner AS schema_name,
    i.table_name,
    i.index_name,
    i.index_type,
    i.uniqueness,
    i.compression,
    i.prefix_length,
    i.tablespace_name,
    i.status,
    i.partitioned,
    i.temporary,
    i.generated,
    i.visibility,
    i.blevel,
    i.leaf_blocks,
    i.distinct_keys,
    i.avg_leaf_blocks_per_key,
    i.avg_data_blocks_per_key,
    i.clustering_factor,
    LISTAGG(ic.column_name, ',') WITHIN GROUP (ORDER BY ic.column_position) AS columns,
    LISTAGG(ie.column_expression, ',') WITHIN GROUP (ORDER BY ie.column_position) AS expressions
FROM all_indexes i
LEFT JOIN all_ind_columns ic
  ON ic.index_owner = i.owner
  AND ic.index_name = i.index_name
LEFT JOIN all_ind_expressions ie
  ON ie.index_owner = i.owner
  AND ie.index_name = i.index_name
  AND ie.column_position = ic.column_position
WHERE i.owner = COALESCE(:schema_name, USER)
  AND (:table_name IS NULL OR i.table_name = :table_name)
GROUP BY
    i.owner,
    i.table_name,
    i.index_name,
    i.index_type,
    i.uniqueness,
    i.compression,
    i.prefix_length,
    i.tablespace_name,
    i.status,
    i.partitioned,
    i.temporary,
    i.generated,
    i.visibility,
    i.blevel,
    i.leaf_blocks,
    i.distinct_keys,
    i.avg_leaf_blocks_per_key,
    i.avg_data_blocks_per_key,
    i.clustering_factor
ORDER BY i.owner, i.table_name, i.index_name;

-- name: by_table
-- dialect: oracle
SELECT
    i.index_name,
    i.table_name AS table_name,
    CASE WHEN i.uniqueness = 'UNIQUE' THEN 1 ELSE 0 END AS is_unique,
    CASE
        WHEN MAX(CASE WHEN c.constraint_type = 'P' THEN 1 ELSE 0 END) = 1 THEN 1
        ELSE 0
    END AS is_primary,
    LISTAGG(ic.column_name, ',') WITHIN GROUP (ORDER BY ic.column_position) AS columns
FROM all_indexes i
JOIN all_ind_columns ic
  ON i.owner = ic.index_owner
  AND i.index_name = ic.index_name
LEFT JOIN all_constraints c
  ON c.owner = i.owner
  AND c.index_name = i.index_name
  AND c.constraint_type = 'P'
WHERE i.table_name = :table_name
  AND i.owner = COALESCE(:schema_name, USER)
GROUP BY i.index_name, i.table_name, i.uniqueness;
lob_storage.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    table_name,
    column_name,
    segment_name,
    tablespace_name,
    index_name,
    chunk,
    pctversion,
    retention,
    freepools,
    cache,
    logging,
    encrypt,
    compression,
    deduplication,
    in_row,
    format,
    partitioned,
    securefile,
    retention_type,
    retention_value
FROM all_lobs
WHERE owner = COALESCE(:schema_name, USER)
  AND (:table_name IS NULL OR table_name = :table_name)
ORDER BY owner, table_name, column_name;
materialized_views.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    mview_name,
    container_name,
    query,
    updatable,
    update_log,
    master_rollback_seg,
    master_link,
    rewrite_enabled,
    rewrite_capability,
    refresh_mode,
    refresh_method,
    build_mode,
    fast_refreshable,
    last_refresh_type,
    last_refresh_date,
    staleness,
    compile_state,
    use_no_index,
    stale_since
FROM all_mviews
WHERE owner = COALESCE(:schema_name, USER)
  AND (:mview_name IS NULL OR mview_name = :mview_name)
ORDER BY owner, mview_name;
objects.sql (2 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    object_name,
    object_type,
    status,
    created,
    last_ddl_time,
    temporary,
    generated,
    secondary,
    editionable,
    oracle_maintained
FROM all_objects
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR object_name = :object_name)
ORDER BY owner, object_type, object_name;

-- name: cloud_ai_available
-- dialect: oracle
SELECT
    COUNT(*) AS "cnt"
FROM all_objects
WHERE object_name = 'DBMS_CLOUD_AI'
  AND object_type = 'PACKAGE';
partitions.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    table_owner AS schema_name,
    table_name,
    partition_name,
    composite,
    subpartition_count,
    high_value,
    high_value_length,
    partition_position,
    tablespace_name,
    pct_free,
    pct_used,
    ini_trans,
    max_trans,
    initial_extent,
    next_extent,
    min_extent,
    max_extent,
    max_size,
    pct_increase,
    freelists,
    freelist_groups,
    logging,
    compression,
    compress_for,
    num_rows,
    blocks,
    empty_blocks,
    avg_space,
    chain_cnt,
    avg_row_len,
    sample_size,
    last_analyzed,
    interval,
    segment_created,
    indexing,
    read_only,
    inmemory
FROM all_tab_partitions
WHERE table_owner = COALESCE(:schema_name, USER)
  AND (:table_name IS NULL OR table_name = :table_name)
ORDER BY table_owner, table_name, partition_position;
routines.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    object_name,
    procedure_name,
    object_id,
    subprogram_id,
    object_type,
    aggregate,
    pipelined,
    impltypeowner,
    impltypename,
    parallel,
    interface,
    deterministic,
    authid
FROM all_procedures
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR object_name = :object_name)
ORDER BY owner, object_name, subprogram_id, procedure_name;
schemas.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    username AS schema_name,
    user_id,
    created,
    common,
    oracle_maintained,
    inherited,
    default_collation
FROM all_users
WHERE username = COALESCE(:schema_name, username)
ORDER BY username;
sequences.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    sequence_owner AS schema_name,
    sequence_name,
    min_value,
    max_value,
    increment_by,
    cycle_flag,
    order_flag,
    cache_size,
    last_number,
    scale_flag,
    extend_flag,
    sharded_flag,
    session_flag,
    keep_value
FROM all_sequences
WHERE sequence_owner = COALESCE(:schema_name, USER)
  AND (:sequence_name IS NULL OR sequence_name = :sequence_name)
ORDER BY sequence_owner, sequence_name;
source.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    name,
    type,
    line,
    text,
    origin_con_id
FROM all_source
WHERE owner = COALESCE(:schema_name, USER)
  AND (:object_name IS NULL OR name = :object_name)
ORDER BY owner, name, type, line;
system.sql (4 named queries)
-- name: awr
-- dialect: oracle
SELECT
    :acknowledge_license AS license_acknowledged,
    :include_diagnostics AS diagnostics_enabled,
    'DBA_HIST_SNAPSHOT' AS required_view,
    'AWR/ASH/ADDM and DBA_HIST access requires explicit opt-in, privileges, and license acknowledgement.' AS warning
FROM dual
WHERE :include_diagnostics = 1
  AND :acknowledge_license = 1;

-- name: no_diagnostics
-- dialect: oracle
SELECT
    0 AS diagnostics_enabled,
    'disabled' AS diagnostics_mode,
    'Oracle diagnostics, AWR/ASH/ADDM, Statspack, and DBA_HIST queries are disabled by default.' AS warning
FROM dual;

-- name: statspack
-- dialect: oracle
SELECT
    :acknowledge_license AS license_acknowledged,
    :include_diagnostics AS diagnostics_enabled,
    'STATS$SNAPSHOT' AS required_view,
    'Statspack access requires explicit opt-in and privileges.' AS warning
FROM dual
WHERE :include_diagnostics = 1
  AND :acknowledge_license = 1;

-- name: vector_memory_pool
-- dialect: oracle
SELECT
    pool AS "pool",
    alloc_bytes AS "alloc_bytes",
    used_bytes AS "used_bytes"
FROM v$vector_memory_pool;
tables.sql (2 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    t.owner AS schema_name,
    t.table_name,
    t.tablespace_name,
    t.cluster_name,
    t.iot_name,
    t.status,
    t.pct_free,
    t.pct_used,
    t.ini_trans,
    t.max_trans,
    t.logging,
    t.num_rows,
    t.blocks,
    t.empty_blocks,
    t.avg_space,
    t.chain_cnt,
    t.avg_row_len,
    t.degree,
    t.instances,
    t.cache,
    t.table_lock,
    t.partitioned,
    t.temporary,
    t.secondary,
    t.nested,
    t.dropped,
    t.read_only,
    t.segment_created,
    t.result_cache,
    c.comments AS table_comment
FROM all_tables t
LEFT JOIN all_tab_comments c
  ON c.owner = t.owner
  AND c.table_name = t.table_name
WHERE t.owner = COALESCE(:schema_name, USER)
  AND (:table_name IS NULL OR t.table_name = :table_name)
ORDER BY t.owner, t.table_name;

-- name: names_by_schema
-- dialect: oracle
SELECT
    table_name
FROM all_tables
WHERE owner = COALESCE(:schema_name, USER)
ORDER BY table_name;
triggers.sql (1 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    trigger_name,
    trigger_type,
    triggering_event,
    table_owner,
    base_object_type,
    table_name,
    column_name,
    referencing_names,
    when_clause,
    status,
    description,
    action_type,
    trigger_body,
    crossedition,
    before_statement,
    before_row,
    after_row,
    after_statement,
    instead_of_row,
    fire_once,
    apply_server_only
FROM all_triggers
WHERE owner = COALESCE(:schema_name, USER)
  AND (:trigger_name IS NULL OR trigger_name = :trigger_name)
ORDER BY owner, trigger_name;
version.sql (4 named queries)
-- name: current
-- dialect: oracle
SELECT
    product AS "product",
    version AS "version",
    status AS "status"
FROM product_component_version
WHERE product LIKE 'Oracle%'
ORDER BY TO_NUMBER(REGEXP_SUBSTR(version, '^[0-9]+')) DESC, version DESC
FETCH FIRST 1 ROWS ONLY;

-- name: autonomous_service
-- dialect: oracle
SELECT sys_context('USERENV', 'CLOUD_SERVICE') AS "service" FROM dual;

-- name: compatible
-- dialect: oracle
SELECT value AS compatible
FROM v$parameter
WHERE name = 'compatible';

-- name: apex_release
-- dialect: oracle
SELECT
    version_no AS "version_no",
    api_compatibility AS "api_compatibility"
FROM apex_release;
views.sql (3 named queries)
-- name: by_schema
-- dialect: oracle
SELECT
    owner AS schema_name,
    view_name,
    text_length,
    text,
    type_text_length,
    type_text,
    oid_text_length,
    oid_text,
    view_type_owner,
    view_type,
    superview_name,
    editioning_view,
    read_only,
    container_data,
    bequeath,
    origin_con_id
FROM all_views
WHERE owner = COALESCE(:schema_name, USER)
  AND (:view_name IS NULL OR view_name = :view_name)
ORDER BY owner, view_name;

-- name: json_duality_views
-- dialect: oracle
SELECT
    view_name AS "view_name",
    root_table_name AS "root_table_name",
    root_table_owner AS "root_table_owner",
    allow_insert AS "allow_insert",
    allow_update AS "allow_update",
    allow_delete AS "allow_delete"
FROM user_json_duality_views
ORDER BY view_name;

-- name: json_duality_views_by_schema
-- dialect: oracle
SELECT
    view_name AS "view_name",
    root_table_name AS "root_table_name",
    root_table_owner AS "root_table_owner",
    allow_insert AS "allow_insert",
    allow_update AS "allow_update",
    allow_delete AS "allow_delete"
FROM all_json_duality_views
WHERE (:schema_name IS NULL AND view_owner = SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA'))
   OR (:schema_name IS NOT NULL AND view_owner = :schema_name)
ORDER BY view_name;