NAME
DBIO::Oracle::Deploy - Deploy and upgrade Oracle schemas via test-deploy-and-compare
VERSION
version 0.900000
DESCRIPTION
DBIO::Oracle::Deploy orchestrates schema deployment and upgrades for Oracle using the test-deploy-and-compare strategy.
For upgrades it:
- 1. Introspects the live database via
all_*views - 2. Opens a
SAVEPOINTon the live connection (Oracle has no cheap throwaway database like PostgreSQL'sCREATE DATABASE) - 3. Deploys the desired schema (from DBIO classes) into that context
- 4. Introspects that schema the same way
- 5. Computes the diff between the two models using DBIO::Oracle::Diff
- 6. Rolls back to the savepoint so the test deploy never persists
The shared orchestration (install, apply, upgrade) is inherited from DBIO::Deploy::Base; this class supplies the three class-name hooks and the SAVEPOINT-based "_build_target_model" -- the real engine seam.
my $deploy = DBIO::Oracle::Deploy->new(
schema => MyApp::DB->connect($dsn),
);
$deploy->install; # fresh
my $diff = $deploy->diff; # or step-by-step
$deploy->apply($diff) if $diff->has_changes;
$deploy->upgrade; # convenience
METHODS
_build_target_model
The desired-state model. Oracle has no cheap throwaway database, so test-deploy-and-compare runs against the live connection inside a SAVEPOINT: deploy the install DDL, introspect the result, then ROLLBACK TO SAVEPOINT to undo the partial deploy. The rollback runs unconditionally inside the eval -- even when introspect or deploy throws, the connection state must be restored.
DBIO::Oracle - schema component
DBIO::Oracle::DDL - generates DDL
DBIO::Oracle::Introspect - reads live database state
DBIO::Oracle::Diff - compares two introspected models
DBIO::Deploy::Base - inherited orchestration
AUTHOR
DBIO & DBIx::Class Authors
COPYRIGHT AND LICENSE
Copyright (C) 2026 DBIO Authors Portions Copyright (C) 2005-2025 DBIx::Class Authors Based on DBIx::Class, heavily modified.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 108:
Unknown directive: =seealso