43
BASLE BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH Application Containers an Introduction Oracle Database 12c Release 2 Multitenancy for Applications Markus Flechtner

ApplicationContainers –an Introduction - Oracle and I

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ApplicationContainers –an Introduction - Oracle and I

BASLE BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH

Application Containers – an IntroductionOracle Database 12c Release 2 – Multitenancy for Applications

Markus Flechtner

Page 2: ApplicationContainers –an Introduction - Oracle and I

Our company.

Collaborate18 - Oracle 12.2- Application Containers2 April 2018

Trivadis is a market leader in IT consulting, system integration, solution engineeringand the provision of IT services focusing on and technologiesin Switzerland, Germany, Austria and Denmark. We offer our services in the following strategic business fields:

Trivadis Services takes over the interactive operation of your IT systems.

O P E R A T I O N

Page 3: ApplicationContainers –an Introduction - Oracle and I

COPENHAGEN

MUNICH

LAUSANNEBERN

ZURICHBRUGG

GENEVA

HAMBURG

DÜSSELDORF

FRANKFURT

STUTTGART

FREIBURG

BASLE

VIENNA

With over 600 specialists and IT experts in your region.

Collaborate18 - Oracle 12.2- Application Containers3 April 2018

14 Trivadis branches and more than600 employees

200 Service Level Agreements

Over 4,000 training participants

Research and development budget:CHF 5.0 / EUR 4 million

Financially self-supporting and sustainably profitable

Experience from more than 1,900 projects per year at over 800customers

Page 4: ApplicationContainers –an Introduction - Oracle and I

About Markus Flechtner

Principal Consultant, Trivadis, Duesseldorf/Germany, since April 2008Discipline Manager Infrastructure Database @TrivadisWorking with Oracle since the 1990’s– Development (Forms, Reports, PL/SQL)– Support– Database Administration

Focus– Oracle Real Application Clusters– Database Upgrade and Migration Projects

Teacher– O-RAC – Oracle Real Application Clusters– O-NF12CDBA – Oracle 12c New Features for the DBA

Blog:https://markusdba.net/

@markusdba

April 2018 Collaborate18 - Oracle 12.2- Application Containers4

Page 5: ApplicationContainers –an Introduction - Oracle and I

Agenda

Collaborate18 - Oracle 12.2- Application Containers5 April 2018

1. Container Database Architecture

2. Application Containers – Overview

3. Application Common Objects

4. Installing Applications

5. Upgrading and Patching Applications

6. Administration & Daily Business

7. More features in short

8. Summary

Page 6: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers6 April 2018

Container Database Architecture

Page 7: ApplicationContainers –an Introduction - Oracle and I

Oracle Multitenant in Oracle Database 12c

Collaborate18 - Oracle 12.2- Application Containers7 April 2018

The container database architecture (multitenant architecture) introduced in Oracle Database 12c Release 1 enables an Oracle database to work as a container database (CDB)

A new database architecture designed for:

– consolidation/database virtualization

– fast and easy provisioning

– separation of administrative duties

– rapid movement of user data (unplug/plug)

Pluggable databases (PDBs) are compatible with traditional non-CDB (same behaviour from the application point of view)

Page 8: ApplicationContainers –an Introduction - Oracle and I

Container Database Architecture - overviewPMON SMON LGWR DBW0 DIAG …

SYSTEM SYSAUX REDO CTLUNDOCDB$ROOT

[RW]

TEMP

PDB$SEED [RO]CRM01 [RW] FA01 [RW]

CRM DBA

CDB

DBA

FA DBA APP DBA

Application Tablespaces Application Tablespaces

April 2018 Collaborate18 - Oracle 12.2- Application Containers8

SYSTEM SYSAUX UNDO TEMP

SYSTEM SYSAUX UNDO TEMP SYSTEM SYSAUX UNDO TEMP

Page 9: ApplicationContainers –an Introduction - Oracle and I

Container Database Architecture - SharingTo avoid the duplication of system metadata, a CDB uses a new object property called SHARING

SQL> SELECT sharing, count(*)2 FROM dba_object GROUP BY sharing;

SHARING COUNT(*)------------------ ----------METADATA LINK 66457DATA LINK 214EXTENDED DATA LINK 56NONE 5053

CDB$ROOT[RW]

PDB$SEED[RO]

CRM01[RW]

April 2018 Collaborate18 - Oracle 12.2- Application Containers9

Page 10: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers10 April 2018

Application ContainersOverview

Page 11: ApplicationContainers –an Introduction - Oracle and I

Application Containers - Overview

Collaborate18 - Oracle 12.2- Application Containers11 April 2018

Consist of

– Application Root

– Application Seed

– Application PDBs

Applications can share

– Data model

– Code

– Metadata

– Data

CDB$ROOT

PDB$SEED CRM01

APPSEED DEMOPDB2

Application Root (APPROOT)

DEMOPDB1

Page 12: ApplicationContainers –an Introduction - Oracle and I

Application Containers – Use Cases

Collaborate18 - Oracle 12.2- Application Containers12 April 2018

Software as a Service (SaaS)

Better master data management

Coordinated and simplified upgrades

„manage many as one“

CRM$SEED CRMCUST2Version1

Application Root (CRM)

CRMCUST1Version1

CRMCUST3Version2

CRMCUST4Version2

Application Root (FA)

FA$SEED FACUST1Version1

FACUST2Version3

CDB$ROOT

Page 13: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers13 April 2018

Application Common Objects

Page 14: ApplicationContainers –an Introduction - Oracle and I

Sharing - Application Common Objects

Collaborate18 - Oracle 12.2- Application Containers14 April 2018

Application Common Objects (Sharing-Attribute)

CREATE TABLE <table_name> SHARING=METADATA( col1 .. )

Sharing Definition Data

METADATA APPROOT APPPDB

DATA APPROOT APPROOT Data accessible from Application PDB (RO)

EXTENDED DATA APPROOT APPROOTAPPPDB

Data is stored in Application Root and canbe retrieved from all Application PDBs (RO)Additional PDB-level data can be stored in Application PDB

NONE local local

Page 15: ApplicationContainers –an Introduction - Oracle and I

Which sharing methods are allowed?

Collaborate18 - Oracle 12.2- Application Containers15 April 2018

Object Type Metadata Link Data Link Extended Data Link None

Table YES YES YES YES

Views YES YES YES YES

Sequences YES YES NO YES

All others YES NO NO YES

Page 16: ApplicationContainers –an Introduction - Oracle and I

Foreign Keys to Data Linked Tables

Collaborate18 - Oracle 12.2- Application Containers16 April 2018

Bug 21955394 (Patches are available)

DEMOPDB

Application Root (APPROOT) APPROOT SQL> create table DEPT SHARING=DATA(DEPTNO number constraint PK_DEPT primary key,DNAME varchar2(30));

DEPT (DATA)

DEPT (DEF)

EMP (DEF)

EMP (DATA)

APPROOT SQL> create table EMP SHARING=METADATA(EMPNO number constraint PK_EMP primary key,ENAME varchar2(30) not null,

DEPTNO constraint FK_DEPT references DEPT);

APPROOT SQL> insert into DEPT ..

DEMOPDB SQL> insert into EMP ..

ORA-02291: integrity constraint (SCOTT.FK_DEPTNO) violated - parent key not found

Page 17: ApplicationContainers –an Introduction - Oracle and I

Be Careful with DML on Application Container Objects

Collaborate18 - Oracle 12.2- Application Containers17 April 2018

DML from Application PDB on an a Data-Linked Table:

DML from Application PDB on a Extended Data-Linked Table (row from Application Root):

SQL> update scott.dept set loc='SEATTLE' where loc='CHICAGO';update scott.dept set loc='SEATTLE' where loc='CHICAGO' *ERROR at line 1:ORA-65097: DML into a data link table is outside an application action

SQL> select * from scott.zip_codes where zip_code='40227';CO ZIP_C CITY-- ----- ----------------------------------------DE 40227 Duesseldorf

SQL> update scott.zip_codes set zip_code='44444' where zip_code='40227';0 rows updated.

Page 18: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers18 April 2018

Installing Applications

Page 19: ApplicationContainers –an Introduction - Oracle and I

Prepare the Application in the Application Root (1)

Collaborate18 - Oracle 12.2- Application Containers19 April 2018

Create Application Root (similar to CDB$ROOT)

– Oracle Managed Files (OMF) are required when using Application Containers

Create the application in the Application Root

During application creation the statements are captured

create pluggable database DEMO AS APPLICATION CONTAINER admin user admin identified by manager;

alter pluggable database application DEMOAPP begin install '1.0';.. create tablespaces (OMF).. create users.. create application objectsalter pluggable database application DEMOAPP end install '1.0';

Not documented!

Page 20: ApplicationContainers –an Introduction - Oracle and I

Prepare the Application in the Application Root (2)

Collaborate18 - Oracle 12.2- Application Containers20 April 2018

Create Application Common Objects

SQL> Alter session set container=DEMO;SQL> alter pluggable database application DEMOAPP begin install '1.0';

SQL> show userUSER is "SYS"

SQL> create table SCOTT.EMP SHARING=METADATA [..]Table created.

alter pluggable database application DEMOAPP end install '1.0';

Works!

Page 21: ApplicationContainers –an Introduction - Oracle and I

Prepare the Application in the Application Root (3)

Collaborate18 - Oracle 12.2- Application Containers21 April 2018

Create Application Common Objects (as object owner)

SQL> Alter session set container=DEMO;SQL> alter pluggable database application DEMOAPP begin install '1.0';SQL> create user scott ..

SQL> connect scott/tiger@DEMOSQL> create table EMP SHARING=METADATA [..]

ORA-65021 illegal use of „SHARING“-clause

Page 22: ApplicationContainers –an Introduction - Oracle and I

Prepare the Application in the Application Root (4)

Collaborate18 - Oracle 12.2- Application Containers22 April 2018

Create Application Common Objects (as object owner)

SQL> alter pluggable database application DEMOAPP begin install '1.0';

SQL> exec dbms_application_info.set_module('INSTALL_V1',null);SQL> create user scott ..

SQL> connect scott/tiger@DEMOSQL> exec dbms_application_info.set_module('INSTALL_V1',null);SQL> create table EMP SHARING=METADATA [..]Table created.

SQL> connect sys/manager@DEMO as sysdbaSQL> exec dbms_application_info.set_module('INSTALL_V1',null);SQL> alter pluggable database application DEMOAPP end install '1.0';

Not documented!

Page 23: ApplicationContainers –an Introduction - Oracle and I

Create an Application PDB

Collaborate18 - Oracle 12.2- Application Containers23 April 2018

Two ways to create an Application PDB

– Via an Application Seed

– Directly from Application Root

During the PDB creation the statements are „replayed“

Page 24: ApplicationContainers –an Introduction - Oracle and I

Application Seed

Collaborate18 - Oracle 12.2- Application Containers24 April 2018

Similar to PDB$SEED

Optional

Only one Application Seed per Application container allowed

SQL> CREATE PLUGGABLE DATABASE AS SEED 2 ADMIN USER app_admin IDENTIFIED BY manager;

Pluggable database created.

SQL> show pdbsCON_ID CON_NAME OPEN MODE RESTRICTED---------- ------------------------------ ---------- ----------

3 DEMO READ WRITE NO4 DEMO$SEED MOUNTED

Page 25: ApplicationContainers –an Introduction - Oracle and I

Create an Application PDB (1) – from Application Seed

Collaborate18 - Oracle 12.2- Application Containers25 April 2018

Step 1: Install Application in Application Seed

Clone the Application Seed

ALTER PLUGGABLE DATABASE DEMO$SEED OPEN;ALTER SESSION SET CONTAINER=DEMO$SEED;ALTER PLUGGABLE DATABASE APPLICATION DEMO SYNC;ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;ALTER PLUGGABLE DATABASE DEMO$SEED OPEN READ ONLY;

create pluggable database DEMOPDB1 from DEMO$SEED;

alter pluggable database DEMOPDB1 open;

Page 26: ApplicationContainers –an Introduction - Oracle and I

Create an Application PDB (2) – from Application Root

Collaborate18 - Oracle 12.2- Application Containers26 April 2018

SQL> ALTER SESSION SET CONTAINER=DEMO;

SQL> CREATE PLUGGABLE DATABASE DEMOPDB1 2 ADMIN USER ADMIN IDENTIFIED BY ADMIN;

SQL> ALTER PLUGGABLE DATABASE DEMOPDB1 OPEN;

SQL> ALTER SESSION SET CONTAINER=DEMOPDB1;SQL> ALTER PLUGGABLE DATABASE APPLICATION DEMOAPP SYNC;

.. after that the application can be used in DEMOPDB1

Page 27: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers27 April 2018

Patching and UpgradingApplications

Page 28: ApplicationContainers –an Introduction - Oracle and I

Application Containers – Upgrade an Application (1)

Collaborate18 - Oracle 12.2- Application Containers28 April 2018

Upgrade the application in the Application Root

Upgrade in Application PDB

alter pluggable database application DEMOAPP begin upgrade from '1.0' to '2.0';

.. modify application objects

alter pluggable database application DEMOAPP end upgrade to '2.0';

Alter pluggable database application DEMOAPP sync;

Page 29: ApplicationContainers –an Introduction - Oracle and I

Application Containers – Upgrade an Application (2)

Collaborate18 - Oracle 12.2- Application Containers29 April 2018

During an upgrade, a read-only clone of the source Application Root is created

From the alert.log:

Purpose: Application Root for Application PDBs not upgraded to the new release

DEMO(5):alter pluggable database application DEMOAPP begin upgrade '1.0' to '2.0'CREATE PLUGGABLE DATABASE "F613214177_3_1" AS APPLICATION CONTAINER from "DEMO" CREATE_FILE_DEST='/u01/oradata'[..]Completed: CREATE PLUGGABLE DATABASE "F613214177_3_1" AS APPLICATION CONTAINER from"DEMO" CREATE_FILE_DEST='/u01/oradata'[..]ALTER PLUGGABLE DATABASE "F613214177_3_1" OPEN READ ONLY INSTANCES=ALL[..]Completed: ALTER PLUGGABLE DATABASE "F613214177_3_1" OPEN READ ONLY INSTANCES=ALL

Page 30: ApplicationContainers –an Introduction - Oracle and I

Patching an Application

Collaborate18 - Oracle 12.2- Application Containers30 April 2018

Limited set of operations (e.g. no DROP commands, no ALTER TABLE)

A minimum start version can be defined

alter pluggable database application DEMOAPP begin patch <Patch#>

.. modify application objects

alter pluggable database application DEMOAPP end patch <Patch#>;

Page 31: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers31 April 2018

Administration&

Daily Business

Page 32: ApplicationContainers –an Introduction - Oracle and I

Administration

Collaborate18 - Oracle 12.2- Application Containers32 April 2018

All administrative tasks are executed fromthe application root

CREATE/OPEN/CLOSE/DROP work aswith normal PDBs

– But closing the Application Root will closeall Application PDBs

Application Root can only be dropped ifthere are no Application PDBs

A normal PDB can be converted toan Application Container

APPSEED DEMOPDB2

Application Root (APPROOT)

DEMOPDB1

Page 33: ApplicationContainers –an Introduction - Oracle and I

Backup & Recovery

Collaborate18 - Oracle 12.2- Application Containers33 April 2018

When connected to CDB$ROOT

– Same as with usual PDBs

When connected to Application Root

For recovery the same principles apply

RMAN> CONNECT TARGET sys/manager@oracle12c:1521/demoappRMAN> BACKUP DATABASE ROOT; # backup application rootRMAN> BACKUP PLUGGABLE DATABASE DEMOPDB1; # backup application PDBRMAN> BACKUP DATABASE; # backup application root + PDBs

Page 34: ApplicationContainers –an Introduction - Oracle and I

Execution Plans (1) – Data Linked Table

Collaborate18 - Oracle 12.2- Application Containers34 April 2018

select e.empno, e.ename, d.deptno, d.dname2 from scott.emp e -- local in application PDB 3 scott.dept d -- from application root (data linked)4 where d.deptno=e.deptno;

---------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|---------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 35 | 3 (0)||* 1 | HASH JOIN | | 1 | 35 | 3 (0)|| 2 | DATA LINK FULL | DEPT | 1 | 22 | || 3 | TABLE ACCESS FULL| EMP | 14 | 182 | 3 (0)|---------------------------------------------------------------

Page 35: ApplicationContainers –an Introduction - Oracle and I

Execution Plans (2) – Extended Data Linked Table

Collaborate18 - Oracle 12.2- Application Containers35 April 2018

select * from scott.zip_codes;

---------------------------------------------------------------------------------------------| Id | Operation | Name | Pstart| Pstop | TQ |IN-OUT|PQ Distrib--------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | | | | || 1 | PX COORDINATOR | | | | | | | 2 | PX SEND QC (RANDOM) | :TQ10000 | | | Q1,00| P->S |QC(RAND) | 3 | PX PARTITION LIST ALL | | 1 | 2 | Q1,00| PCWC || 4 | EXTENDED DATA LINK FULL | ZIP_CODES| | | Q1,00| PCWP |---------------------------------------------------------------------------------------------

Page 36: ApplicationContainers –an Introduction - Oracle and I

Data Dictionary Views (CDB_APP%)

Collaborate18 - Oracle 12.2- Application Containers36 April 2018

CDB_APPLICATIONS

CDB_APPLICATION_ROLES

CDB_APP_ERRORS

CDB_APP_PATCHES

CDB_APP_PDB_STATUS

CDB_APP_STATEMENTS

CDB_APP_VERSIONS

Page 37: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers37 April 2018

More features in short

Page 38: ApplicationContainers –an Introduction - Oracle and I

More features in short .. (1)

Collaborate18 - Oracle 12.2- Application Containers38 April 2018

A "normal PDB" can be converted

– Important: Decision on the "SHARING" of each object

Application Common Users and Roles

– Defined in Application Root

– Available in all Application PDBs

Page 39: ApplicationContainers –an Introduction - Oracle and I

More features in short ..

Collaborate18 - Oracle 12.2- Application Containers39 April 2018

Application Container wide queries are possible from the Application Root

– "CONTAINERS" clause

Container Map

– Allow the re-direction of statements from the Application Root to an Application PDB

based on a mapping table

Page 40: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers40 April 2018

Summary

Page 41: ApplicationContainers –an Introduction - Oracle and I

Application Containers - Summary

Collaborate18 - Oracle 12.2- Application Containers41 April 2018

� Interesting concept for SaaS

� Easy upgrade and patching of lots of Application PDBs

� It‘s a “release 1.0“ of a new feature

� Some flaws

� Oracle Managed Files (OMF) are required

� Documentation is misleading in some places

Page 42: ApplicationContainers –an Introduction - Oracle and I

Collaborate18 - Oracle 12.2- Application Containers42 April 2018

Further Information

Oracle 12.2 Concepts (Chapter 19)

Oracle 12.2 Administrators Guide (Chapter 40 and 44)

Toadworld.com – Series on Application Containers:http://www.toadworld.com/platforms/oracle/b/weblog/archive/2017/06/26/oracle-multi-tenant-application-containers-part-i

Page 43: ApplicationContainers –an Introduction - Oracle and I

Questions and AnswersMarkus FlechtnerPrincipal Consultant

Phone +49 211 5866 [email protected]

@markusdba https://www.markusdba.net

You can ownload the slides from https://www.slideshare.net/markusflechtnerPlease don‘t forget the session evaluation – Thank you!

April 2018 Collaborate18 - Oracle 12.2- Application Containers43