Continuous Database Application Evolution with Oracle ... · Continuous Database Application...

41
Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november 2009 Lucas Jellema AMIS, The Netherlands

Transcript of Continuous Database Application Evolution with Oracle ... · Continuous Database Application...

Page 1: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Continuous Database Application Evolution

with Oracle Database 11g Release 2

OGH DBA Day on High Availability

3 november 2009

Lucas Jellema AMIS, The Netherlands

Page 2: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Availability

• Availability = Performance * (Up or Down)

• Up = !Down

• Down = Unplanned Down + Planned Down

• Planned Down???

– System Maintenance

• Power-supply, Hardware & Network, O/S upgrade

• Database patching & Upgrade

– Application Upgrades

Page 3: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Maximum Availability Architecture

Page 4: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Application Upgrade• Creation of new objects

• Changing existing objects (alter and create or replace)

– Add, Modify or Drop columns or constraints

– Change packages and stored procedures

– Recompile

• Drop redundant objects

• Convert or migrate data

• Resume normal operations

Ap

plic

atio

n is

DO

WN

Page 5: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Compare with road maintenance

Page 6: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Restructuring A12

• Build new road next to current one (A12-B)

– Same “functionality” as the old road

• At the cut-over moment

– Open new A12-B:

• Newly arriving traffic travels on temporary road

– Close A12 (original)

• Cars already on old road keep going

Page 7: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

11gR2 Editioning is similar

Application Upgrade:

• Prepare new release

– Construct the release in parallel to the existing

– Operations in existing application ‘edition’ continue normally

• From the cut-over point:

– Have new sessions operate on new release

– Existing sessions can continue to run on existing release

Page 8: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

11gR2 Editions introduces a new dimension in the database

Base Release

Release 2

Release 3

Page 9: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Editions introduce or inherit versions of objects

Page 10: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Editions are parallel universes• Database Objects

are identified by

– Object Type

– Schema

– Object Name

– …. Edition!

• (release, application version, stripe, parallel universe id)

• Database Sessions run in the context of a specific edition

– Using a specific collection of versions of objects

Page 11: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Database sessions run in a specific edition –one version of each object

The database as seen by a session

running in the context of Release 3

Page 12: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Demo of Application Upgrade• Existing base application, in base edition

• Create new editon – release_2

– Create and Alter database objects

– Base application continues running

• Cut-over point

– New sessions run in release_2 edition

– Current sessions continue in base

Page 13: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Some Rules for EBR (Edition Based Redefinition)

• Editioning acts on packages, functions, triggers, procedures, views, types and synonyms

• Editioning does not apply to tables

– Data is not versionend, cloned, migrated

– Different incarnations of a table are suggested through editionable views – there is only one table

– Applications should never access tables directly!

Page 14: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

But wait, there is more

• After the release of a new edition –there is no reason why you cannot keep the previous one going for some time

– And multiple previous ones!

• That means – END OF THE BIG BANG upgrade!

– Multiple versions of the application can continue running to suport various user groups (e.g. SaaS)

• Without data migration and additional downtime upon later move over of user groups

Page 15: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Parallel Application Versions

Application XVERSION 1

Application X

VERSION 2

Page 16: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Version 1 on Base Edition

Page 17: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Version 1 on Edition Release 2

Page 18: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Upgrade Base to Release 2

• Authors

– New columns COUNTRY and BIOGRAPHY

• Books

– Drop column NUM_OF_PAGES

– Modified column ISBN (10 to 20 characters)

– New columns LANGUAGE and PUBLICATION_YEAR

Page 19: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Version 2 (on Edition Release 2)

Page 20: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Version 2 on Base Edition

Page 21: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Editions and Tables• Tables cannot be versioned:

there is only one definition of a table across all Editions

– Data is not versioned: a record exists once and only once

• The solution for managing changes to Tables: Editioning Views and Cross Edition Triggers

– Editioning Views are defined on base table (no joins)

– Editioning Views can have DML triggers defined (just like base table)

– Using an editioning view in a query or DML statement does not impact the performance of the query or DML

Page 22: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Editions and TablesApplication A Application B

Table EMP

E

N

A

M

E

J

O

B

M

G

R

S

A

L

C

O

M

M

HIREDATE

Page 23: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

EditioningView EMP

Editions and TablesApplication A Application B

Table EMP_BASE

E

N

A

M

E

J

O

B

M

G

R

S

A

L

C

O

M

M

HIREDATE

Page 24: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Oracle guarantees:

The Execution Plan for a SQL query that uses an Editioning View is

identical to that for the same query based directly on the table

Page 25: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Migrate to Editioning Views• Rename Table (for example to <old table name>_BASE)

– Constraints continue to refer to the table

• Create the Editioning View with the old table name– Using the ‘CREATE OR REPLACE EDITIONING VIEW <view name>’ statement

• Reroute privileges – grant on view rather than table

• Recompile the triggers on the table

– These now become triggers on the Editioning View

• Recompile all invalid PL/SQL program units and Views

– They now refer to the Editioning View instead of the table

• VPD policies are reassigned to the View

– Regular auditing and FGA is on the table

Page 26: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

DemoALTER TABLE EMP RENAME TO EMP_BASE;

CREATE OR REPLACE EDITIONING VIEW EMP

AS

SELECT ...

FROM EMP_BASE

/

DROP TRIGGER EMP_BRI

/

Rem recreate trigger on Editioning View

@<EMP_BRI>.trg

Rem recompile invalid Views and PL/SQL units

Page 27: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

EditioningView EMP

Multiple versions of Editioning View

Application A Application B

Table EMP_BASE

E

N

A

M

E

J

O

B

M

G

R

S

A

L

C

O

M

M

HIREDATE

EditioningView EMP

Edition R2Edition R1

Page 28: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

View EMP (1.0)

Multiple versions of Editioning View

Application A Application B

Table EMP_BASE

E

N

A

M

E

J

O

B

M

G

R

S

A

L

C

O

M

M

HIREDATE

View EMP (1.1)

* Language

Edition R2Edition R1

LANGUAGE

Forward Crossedition

Trigger

Page 29: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

DemoCREATE EDITION R2 AS CHILD OF R1;

ALTER SESSION SET EDITION R2;

SELECT SYS_CONTEXT('Userenv', 'Current_Edition_Name')

"Current_Edition" FROM DUAL;

SHOW EDITION

ALTER TABLE EMP_BASE

ADD (LANGUAGE VARCHAR2(2) NULL);

Rem function for deriving value for language

CREATE OR REPLACE FUNCTION

GET_LANGUAGE( p_job in varchar2) return varchar2

is

begin

return case p_job when 'MANAGER' then 'fr'

else 'en' end;

end;

Page 30: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

DemoRem Create Forward Crossedition Trigger

Rem Applies to DML operations on EMP_BASE from

Rem Earlier Editions

CREATE OR REPLACE TRIGGER EMP_1_1_Fwd_Xed

BEFORE INSERT OR UPDATE ON EMP_BASE

FOR EACH ROW

FORWARD CROSSEDITION

DISABLE

BEGIN

:new.language = get_language(:new.job);

END EMP_1_1_Fwd_Xed;

Rem Enable the Forward Crossedition Trigger

ALTER TRIGGER EMP_1_1_Fwd_Xed ENABLE;

Page 31: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

DemoRem Use Forward Crossedition trigger to

Rem upgrade existing table records according to new table

Rem version (for large # records use dbms_parallel_execute)

DECLARE

c NUMBER := DBMS_SQL.OPEN_CURSOR();

x NUMBER;

BEGIN

DBMS_SQL.PARSE

( c => c

, Language_Flag => DBMS_SQL.NATIVE

, Statement => 'UPDATE EMP_BASE

SET EMPNO = EMPNO'

, Apply_Crossedition_Trigger => 'EMP_1_1_Fwd_Xed'

);

x := DBMS_SQL.EXECUTE(c);

DBMS_SQL.CLOSE_CURSOR(c);

COMMIT;

END;

Page 32: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Upgrade Table Definition• Make desired changes to the table

– Add columns, modify Columns, … (online redefinition)

• (Create Edition,) Set target Edition for session

• Modify the Editioning View in the Edition

– To reflect the table as its latest version should look

– Perhaps hiding columns you eventually want to drop

• (optional) Create Forward Crossedition Trigger on base table to have DML on previous Editions made valid

• (optional) Create Reverse Crossedition Trigger on base table to have DML on current Edition synch back

Page 33: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Cross Edition Triggers• If you remove a (mandatory) column from the current

Editioning View…

– a Reverse Crossedition Trigger ensures that new records get some value in that (invisible) column

• If you add a (mandatory) column to the table (and the current Editioning View)…

– a Forward Crossedition Trigger ensures that records DMLedthrough previous Editioning View versions are made valid

• (optionally) Apply Forward Crossedition Trigger for all existing records (created in old edition of the table)

– Use DBMS_SQL.parse (with parameter Apply_Crossedition_Trigger set to name of trigger)

– Use DBMS_PARALLEL_EXECUTE

Page 34: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

View EMP (1.0)

Multiple versions of Editioning View

Application A Application B

Table EMP_BASE

E

N

A

M

E

J

O

B

M

G

R

S

A

L

C

O

M

M

HIREDATE

View EMP (1.1)

* Language

Edition R2Edition R1

LANGUAGE

Forward Crossedition

Trigger

FIRSTNAME

LASTNAME

View EMP (1.1)

… (minus ENAME)

* Language

o FIRST_NAME

* LAST_NAME

Edition R3

Reverse

Crossedition

Trigger

Page 35: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

“Suggested (best) Practices”

• Every application (release) sets the Edition it requires when it connects to a session

– At the same time it calls dbms_application_info

– And sets other Context details

• Applications should never access tables – all access should be through views

– Only through views can the data structure itself be Editioned

– Even triggers should be on the Editioning View

Page 36: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

EditioningView APP_DATA

Replacement Table Pattern

Application A Application B

Table APPLICATION_METADATA

K

E

Y

VA

L

U

E

U

S

E

R

O

R

G

I

D

Default

Edition R2Edition R1

EditioningView APP_DATA

APPLICATION_METADATA_R2

K

E

Y

VA

L

U

E

U

S

E

R

O

R

G

I

D

Default

Page 37: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

View DATA

Alternative Approach for Data Versioning

Application A Application B

Table EDITIONED_DATA

Edition R2Edition R1

* as_of_edition

* until_edition

… normal columns

select *from EDITIONED_DATEwhere <current_edition>

betweenas_of_edition anduntil_edition

Page 38: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Interesting EBR Tid-Bits• Drop Object in an Edition stops the inheritance from

previous Edition. Object no longer is carried forward

• Edition can have only one child – no branches (yet)

• DBMS_SQL.PARSE can be executed in a specific Edition

– Use parameter edition to specify other than current edition

• If no explicit edition is set for a session, the default edition is used

– ALTER DATABASE DEFAULT EDITION = edition_name;

• Hints in queries against Editionable Views are understood in terms of the underlying table

– Logical EV column references are correctly mapped

Page 39: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Interesting EBR Tid-Bits• DB Links & Materialized Views currently not editionable

• Objects of an editionable type are not editionable when used by a non-editional object

– PL/SQL Function used in Function Based Index or the definition of a Materialized View

– ADT used as the base type for a column in a table

• EBR (online upgrade) benefits from Online Table Redefinition and Fine Grained Dependency tracking

• Data Dictionary Views

– DBA_/ALL_EDITIONS – editions in the database

– DBA_/ALL_OBJECTS – objects (inherited) in current edition

– DBA_/ALL_OBJECTS_AE – actual objects across all editions

Page 40: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Summary• 11gR2 Editions are parallel, co-existing

universes with incarnations of database objects

– The new release can be constructed, tested and run in a new edition

– The old edition can be switched off at cut-over

• Editions also allow long time co-existence of multiple releases of an application

• Application Upgrade no longer needs to disrupt the operation through planned downtime

• By the way: EBR is available in all DB editions

Page 41: Continuous Database Application Evolution with Oracle ... · Continuous Database Application Evolution with Oracle Database 11g Release 2 OGH DBA Day on High Availability 3 november

Conclusion• See our blog for Oracle Database 11gR2

articles (other topics as well)

– http://technology.amis.nl/blog

– This presentation and the demo scripts are on the blog too

• Contact me: [email protected]