solution for database delta
You can’t deliver all database objects every time, because
• it may take too much time to recreate all database objects
• there are objects (like tables) that can’t be deleted and reinstalled
(valuable data are there!)
“Delta delivery” - deliver only the items, that were modiﬁed recently
Changes that are new and need to be delivered now
Previously delivered changes Time
Delta Delivery Challenges
• Take only modiﬁed items plus related items
• Decide what to do if this item has been modiﬁed several times?
• Find out detailed info about each ﬁle
• what it is?
• how it must be installed?
• Know the installation sequence
• Make a note that now these changes have also been delivered
What is Magnet?
Java tool, that operates on SVN repositories and can
• retrieve from Subversion repository only these ﬁles that are referenced in
• create installation ﬁle for ﬁles referenced in selected revisions
• collect Subversion log messages from selected revisions into one text ﬁle (i.e.
create documentation for the delivery)
• add speciﬁc properties to revisions in Subversion repository marking that
these revisions are collected
1. Determine ﬁle type either by location (directory) or by ﬁle name
2. Determine ﬁle installation method from ﬁle type
3. Determine installation method parameters
4. Create installation script that contains calls of installation methods for
Magnet: the result
• The following slides will present some examples of installation scripts
generated automatically by the Magnet
• These scripts can be run automatically by continuous integration
engine or by person manually
Unix Script Example
### Load all installation functions
### Check if required Login Ids are entered else prompt to get them
CHKSCHEME "APPS_ID" "APPS_ID"
echo [INSTALLER] $SYSDATE Starting installation...
echo [INSTALLER] Installing revision 5930
INSTALLBINARY XXCMP "../applnode-concurrent/appl_top/xxcmp/11.5.0/bin/
echo [INSTALLER] Installing revision 5935
RUNSQLPLUS $APPS_ID "@../dbinstall/apps/data_scripts/CMP-5048_DATAFIX.sql"
echo [INSTALLER] $SYSDATE Installation finished.
SQL*Plus Script Example
SET verify ON
SET timing ON
SET define off
prompt [INSTALLER] Starting installation...
prompt [INSTALLER] Installing TABLE
prompt [INSTALLER] Installing PACKAGE_BODY
prompt [INSTALLER] Installing GRANT