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

Post on 30-Aug-2020

2 views 0 download

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

oren@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

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…

THANK YOU

Oren Nakdimon

www.db-oriented.com

oren@db-oriented.com

+972-54-4393763

@DBoriented