Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Oracle Application Containers

80 vues

Publié le

The presentation show the new feature "Application Containers" which enables you to use the principles of the Multitenant Databases for your own applications. This is the perfect foundation for "Software as a service"

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Oracle Application Containers

  1. 1. 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
  2. 2. Our company. Collaborate18 - Oracle 12.2- Application Containers2 April 2018 Trivadis is a market leader in IT consulting, system integration, solution engineering and the provision of IT services focusing on and technologies in 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
  3. 3. COPENHAGEN MUNICH LAUSANNE BERN ZURICH BRUGG 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 than 600 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 800 customers
  4. 4. About Markus Flechtner Principal Consultant, Trivadis, Duesseldorf/Germany, since April 2008 Discipline Manager Infrastructure Database @Trivadis Working 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
  5. 5. 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
  6. 6. Collaborate18 - Oracle 12.2- Application Containers6 April 2018 Container Database Architecture
  7. 7. 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)
  8. 8. Container Database Architecture - overview PMON SMON LGWR DBW0 DIAG … SYSTEM SYSAUX REDO CTLUNDO CDB$ROOT [RW] TEMP PDB$SEED [RO] CRM01 [RW] FA01 [RW] CRM DBA CDBDBA 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
  9. 9. Container Database Architecture - Sharing To 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 66457 DATA LINK 214 EXTENDED DATA LINK 56 NONE 5053 CDB$ROOT [RW] PDB$SEED [RO] CRM01 [RW] April 2018 Collaborate18 - Oracle 12.2- Application Containers9
  10. 10. Collaborate18 - Oracle 12.2- Application Containers10 April 2018 Application Containers Overview
  11. 11. 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
  12. 12. 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 CRMCUST2 Version1 Application Root (CRM) CRMCUST1 Version1 CRMCUST3 Version2 CRMCUST4 Version2 Application Root (FA) FA$SEED FACUST1 Version1 FACUST2 Version3 CDB$ROOT
  13. 13. Collaborate18 - Oracle 12.2- Application Containers13 April 2018 Application Common Objects
  14. 14. 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 APPROOT APPPDB Data is stored in Application Root and can be retrieved from all Application PDBs (RO) Additional PDB-level data can be stored in Application PDB NONE local local
  15. 15. 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
  16. 16. 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
  17. 17. 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.
  18. 18. Collaborate18 - Oracle 12.2- Application Containers18 April 2018 Installing Applications
  19. 19. 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 objects alter pluggable database application DEMOAPP end install '1.0'; Not documented!
  20. 20. 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 user USER is "SYS" SQL> create table SCOTT.EMP SHARING=METADATA [..] Table created. alter pluggable database application DEMOAPP end install '1.0'; Works!
  21. 21. 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@DEMO SQL> create table EMP SHARING=METADATA [..] ORA-65021 illegal use of „SHARING“-clause
  22. 22. 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@DEMO SQL> exec dbms_application_info.set_module('INSTALL_V1',null); SQL> create table EMP SHARING=METADATA [..] Table created. SQL> connect sys/manager@DEMO as sysdba SQL> exec dbms_application_info.set_module('INSTALL_V1',null); SQL> alter pluggable database application DEMOAPP end install '1.0'; Not documented!
  23. 23. 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“
  24. 24. 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 pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 DEMO READ WRITE NO 4 DEMO$SEED MOUNTED
  25. 25. 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;
  26. 26. 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
  27. 27. Collaborate18 - Oracle 12.2- Application Containers27 April 2018 Patching and Upgrading Applications
  28. 28. 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;
  29. 29. 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
  30. 30. 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#>;
  31. 31. Collaborate18 - Oracle 12.2- Application Containers31 April 2018 Administration & Daily Business
  32. 32. Administration Collaborate18 - Oracle 12.2- Application Containers32 April 2018 All administrative tasks are executed from the application root CREATE/OPEN/CLOSE/DROP work as with normal PDBs – But closing the Application Root will close all Application PDBs Application Root can only be dropped if there are no Application PDBs A normal PDB can be converted to an Application Container APPSEED DEMOPDB2 Application Root (APPROOT) DEMOPDB1
  33. 33. 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/demoapp RMAN> BACKUP DATABASE ROOT; # backup application root RMAN> BACKUP PLUGGABLE DATABASE DEMOPDB1; # backup application PDB RMAN> BACKUP DATABASE; # backup application root + PDBs
  34. 34. Execution Plans (1) – Data Linked Table Collaborate18 - Oracle 12.2- Application Containers34 April 2018 select e.empno, e.ename, d.deptno, d.dname 2 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)| ---------------------------------------------------------------
  35. 35. 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 | ---------------------------------------------------------------------------------------------
  36. 36. 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
  37. 37. Collaborate18 - Oracle 12.2- Application Containers37 April 2018 More features in short
  38. 38. 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
  39. 39. 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
  40. 40. Collaborate18 - Oracle 12.2- Application Containers40 April 2018 Summary
  41. 41. 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
  42. 42. 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
  43. 43. Questions and Answers Markus Flechtner Principal Consultant Phone +49 211 5866 64725 Markus.Flechtner@Trivadis.com @markusdba https://www.markusdba.net You can ownload the slides from https://www.slideshare.net/markusflechtner Please don‘t forget the session evaluation – Thank you! April 2018 Collaborate18 - Oracle 12.2- Application Containers43

×