+ All Categories
Home > Documents > How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your...

How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your...

Date post: 30-Aug-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
55
How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon www.db-oriented.com [email protected] +972-54-4393763 @DBoriented
Transcript
Page 1: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

How to Upgrade Your Application with no Downtime (and no Additional Costs!)

Oren Nakdimon

www.db-oriented.com

[email protected]

+972-54-4393763

@DBoriented

Page 2: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

First of all, let’s gather some statistics…

Page 3: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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?

Page 4: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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?

Page 5: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 6: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 7: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 8: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

@DBORIENTED

Page 9: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

HTTP://DB-ORIENTED.COM

Page 10: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@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

Page 11: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 12: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 13: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

APPLICATION UPGRADES Scenarios

Page 14: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

APPLICATION UPGRADES

Application X Application X

+ some change(s)

Page 15: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

APPLICATION UPGRADES

Page 16: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 17: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

APPLICATION UPGRADES Methods

Page 18: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

EDITION-BASED REDEFINITION Introduction

Page 19: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 20: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 21: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 22: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 23: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

UPGRADE USE CASES

Page 24: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 25: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 26: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 27: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 28: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

Tip

Page 29: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 30: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 31: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 32: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 33: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 34: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 35: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 37: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 38: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 39: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 40: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

View Program

Unit

ELIMINATING INVALIDATION

Table

Page 41: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 42: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 43: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 44: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

Tip

Page 45: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 46: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 47: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 48: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 49: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

Tip

Page 50: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 51: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 52: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

This presentation is available in http://db-oriented.com/presentations © O

ren N

akdim

on

Tip

Page 53: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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

Page 54: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

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…

Page 55: How to Upgrade Your Application with no Downtime · 2016. 3. 18. · How to Upgrade Your Application with no Downtime (and no Additional Costs!) Oren Nakdimon oren@db-oriented.com

THANK YOU

Oren Nakdimon

www.db-oriented.com

[email protected]

+972-54-4393763

@DBoriented


Recommended