How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your...
Transcript of How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your...
How to Upgrade Your Application with no Downtime (and no Additional Costs!)
Oren Nakdimon
www.db-oriented.com
+972-54-4393763
@DBoriented
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
First of all, let’s gather some statistics…
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
A QUICK SURVEY (1/4)
Do you know what Edition Based Redefinition is?
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
A QUICK SURVEY (2/4)
Have you ever used Edition Based Redefinition in
production?
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
A QUICK SURVEY (3/4)
Which Oracle versions do you use (or plan to use) in production? 12c
11g R2
11g R1 or earlier
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
A QUICK SURVEY (4/4)
Which Oracle editions do you use (or plan to use) in production? Standard Edition
Enterprise Edition
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
WHO AM I? A CHRONOLOGY BY “ORACLE YEARS”
Where: IAF
When: Oracle 6/7 [1991-1997]
What: Developer
Where: TELEknowledge
When: Oracle 8i/9i [1998-2003]
What: DBA Group Manager Where: Olista
When: Oracle 10g/11g [2004-2011]
What: VP R&D + Israel Site Manager
Where:
When: Oracle 11g/12c [2011-]
What: Freelance Consultant
Where:
When: 2015-
What: Database Expert
Where: Golden Screens
When: Oracle 8 [1997-1998]
What: Server Group Manager
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
@DBORIENTED
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
HTTP://DB-ORIENTED.COM
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
SHARING EXPERIENCE FROM…
A 24x7 system
Millions of end-users
Thousands of concurrent end-users
All around the world
Lots of PL/SQL code
Frequent upgrades
Intensive use of EBR
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
THE BOTTOM LINE
I think EBR is great!
It is quite a big and complex feature, but…
It is very easy to start using it
It may take some time to know all the details and nuances
Warning: as with any other feature, make sure to test it thoroughly before you decide to apply it in production
Ask me later about…
Issues that are out of the
presentation’s scope
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
AGENDA
Application upgrades
Scenarios
Methods
EBR introduction
Upgrade use cases
Requirements
Challenges with online upgrade
Solving with EBR
Tips
APPLICATION UPGRADES Scenarios
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
APPLICATION UPGRADES
Application X Application X
+ some change(s)
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
APPLICATION UPGRADES
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
APPLICATION UPGRADES
Upgrades are inherent to every application lifecycle
They may be:
Small or big
Frequent or rare
Simple or complex
With or without schema changes
Introducing new functionality, changing existing functionality, or removing functionality
APPLICATION UPGRADES Methods
EDITION-BASED REDEFINITION Introduction
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
EDITION BASED REDEFINITION
EBR is a feature set that lets you upgrade the database component of an application while it is in use, thereby minimizing or eliminating downtime
Introduced in 11gR2
EBR is supported in all editions, and requires no special license
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
The fundamental ability is that different copies of the same object may coexist
Not all objects are editionable
EDITION BASED REDEFINITION
Edition1
Edition2
PKG_A
JERRY TOM
PKG_A
PKG_A
MY_VIEW
MY_VIEW
MY_OBJ
MY_OBJ
TABLE_X TABLE_Y
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
EDITIONS
Edition is a non-schema object
There must be at least one edition in the database
The initial edition is ORA$BASE
There is always one database-level default edition
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
EDITIONS – CONT.
Every new edition is created as a child of an existing edition
Currently (11.2, 12.1), each edition may have at most one child edition
Ask me later about…
Enabling editions to users
Granting use on editions
Edition1
Edition2
Edition3 Edition3b
UPGRADE USE CASES
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
PEOPLE
(table)
PEOPLE_DL
(package)
add | remove
APP_MGR
(package)
do_something
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
S B S B Table
APP_MGR PEOPLE_DL
@people_setup
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 1 – THE REQUIREMENTS
A package body should be changed
No change in package spec
No change in table structure
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 1 – THE CHALLENGES
Blocking
Compilation is blocked by active clients
Clients are blocked during compilation
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Tip
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
SESSION EDITION
Each session uses one edition at a time
The current session edition:
SHOW EDITION (SQL*Plus)
SYS_CONTEXT(‘userenv’,’session_edition_name’)
To change the session edition:
ALTER SESSION SET EDITION = edition;
Must be the first statement of a transaction
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
EDITIONED OBJECTS
An editioned object in an edition is either:
Inherited
or
Actual
Note: actualization is irreversible!
@end_user_session
@use_case_1
p edition1
edition2
edition3 p
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
S B S B
Table
ora$base
APP_MGR PEOPLE_DL
V1 B
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 2 – THE REQUIREMENTS
A package spec should be changed
No change in table structure
S B S B
Table
ora$base
APP_MGR PEOPLE_DL
V1 B
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 2 – THE CHALLENGES
Invalidation
Compilation errors (hopefully not…)
Object dependency Revalidation occurs automatically when an object is
referenced
Multiple interrelated objects need to be changed
S B S B
Table
APP_MGR PEOPLE_DL
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 2
A package spec should be changed
No change in table structure
S B S B ora$base
APP_MGR PEOPLE_DL
V1 B
V2 S
Table
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 2
A package spec should be changed
No change in table structure
S B S B ora$base
APP_MGR PEOPLE_DL
V1 B
V2 S
Table
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
A VERY IMPORTANT FOOTNOTE
Source: http://www.oracle.com/technetwork/database/features/availability/ebr-455513.html
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Ask me later about…
How to identify dependent
objects
Different ways to actualize
Tip
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 3 – THE REQUIREMENTS
A new column should be added
It represents a new logic
An existing package should be changed accordingly
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 3 – THE CHALLENGES
Invalidation
Code dependent on the table is invalidated (!)
S B S B
Table
ora$base
APP_MGR PEOPLE_DL
V1 B
V2 S B B
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
View Program
Unit
ELIMINATING INVALIDATION
Table
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
EDITIONING VIEWS
Editioning Views are:
Views (hence editionable)
Deliberately limited: One per table
May contain only the SELECT and FROM clauses
The FROM clause refers to a single table
The SELECT list may contain only columns and aliases (no expressions)
DML triggers can be defined on them
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Editioning Views are
the Interface
between the
Application and the
Tables
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
@use_case_3
Ask me later about…
Other schema changes that
cause invalidations
And how to handle them
Tip
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Tip
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 4 – THE REQUIREMENTS
A new column should be added
It replaces an existing column
Cutover
@use_case_4
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 4 – THE CHALLENGES
Keeping the old representation and new representation in sync until the cutover
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
CROSSEDITION TRIGGERS
A crossedition trigger is a “bridge” for moving data between editions
Temporary in nature
Forward crossedition triggers transform pre-upgrade representation to post-upgrade representation
@fce_trigger
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Ask me later about…
Mass update of the data
Tip
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Tip
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
USE CASE 5
A new column should be added
It replaces an existing column
Rollover
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
REVERSE CROSSEDITION TRIGGERS
Reverse crossedition triggers transform post-upgrade representation to pre-upgrade representation
@rce_trigger
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Tip
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
EXPOSING THE NEW VERSION
Database-level:
ALTER DATABASE DEFAULT EDITION = edition;
Session level
Statement level – using DBMS_SQL.PARSE
Service level
Ask me later about…
ORA-04068
After Logon trigger
This presentation is available in http://db-oriented.com/presentations © O
ren N
akdim
on
Ask me later about…
Retiring editions
Dropping editions
What’s new in 12c
Jobs and editions
DB links and editions
Whatever you like…