2. Otto Group Solution Provider
(OSP)
Gründung:
März 1991
Muttergesellschaft:
Otto Group
Standorte:
Dresden, Hamburg, Altenkunstadt, Madrid, Taipei
Anzahl Mitarbeitende:
> 450
Geschäftsführer:
Dr. Stefan Borsutzky, Norbert Gödicke, Jens Gruhl
3. Zur Person
Mail: Peter.Ramm@ottogroup.com
Peter Ramm
Teamleiter strategisch-technische Beratung bei OSP in Dresden
> 30 Jahre Historie in IT-Projekten
Schwerpunkte:
• Entwicklung von OLTP-Systemen auf Basis von Oracle-Datenbanken
• Architektur-Beratung bis Trouble-Shooting
• Performance-Optimierung bestehender Systeme
4. § Für diverse Oracle-Produkte sind Dockerfiles verfügbar als Anleitung für die Erstellung von Docker-Images
https://github.com/oracle/docker-images
§ Voraussetzung ist der Download der Software-Packages aus den entsprechenden Oracle-Ressourcen
§ Für Oracle-DB sind Dockerfiles verfügbar für RAC und Single-Instance, Enterprise, Standard und Express-Edition
https://github.com/oracle/docker-images/tree/main/OracleDatabase
§ Versionen: 11.2.0.4, 12.1.0.2, 12.2.0.1, 18.3.0, 18.4.0, 21.3.0
§ HowTo build Images:
https://github.com/oracle/docker-images/blob/main/OracleDatabase/SingleInstance/README.md
§ HowTo build Images mit vorinstallierter DB-Instanz (the easy way)
https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance/samples/prebuiltdb
Offizielle Docker-Images von Oracle
§ Die 12.1 und 12.2 Images auf hub.docker.com sind nicht mehr verfügbar
§ Aktuelle Images finden sich auf https://container-registry.oracle.com
Offizielle Dockerfiles von Oracle
5. § Docker-Images für diverse Oracle-Produkte, DB jeweils in aktueller Version (aktuell 21.3)
container-registry.oracle.com : Images durch Oracle gemanagt
Lizenzpfl. Produkt Description
enterprise Oracle Database Enterprise Edition
gsm Oracle Global Service Manager
instantclient Oracle Instant Client
rac Oracle Real Application Clusters
standard Oracle Database Standard Edition 2
Freies Produkt Description
express Oracle Database Express Edition
observability-exporter Oracle Database Observability Exporter (Metrics, Logs, and Tracing)
operator This image is part of and for use with the Oracle Database Operator for Kubernetes
ords Oracle REST Data Services (ORDS) with Application Express
otmm Oracle Transaction Manager for Microservice
sqlcl Oracle SQLDeveloper Command Line (SQLcl)
6. Der vollständige Aufbau einer DB-Instanz ist ein zeitaufwändiger Prozess (10 .. 20 Minuten)
§ Erzeugen der DB-Instanz mit initialen Strukturen (Controlfiles, Datafiles)
§ Aufbau des Data Dictionaries (catproc.sql etc.)
Motivation für vorinstallierte DB-Instanz
Für diverse Einsatzzwecke (CI-Pipeline, Entwicklungs- und Testumgebungen, Demo-Installationen) ist eine
schnelle Bereitstellung einer funktionsfähigen frischen DB sehr wünschenswert
Sinnvolle Funktionen für Docker-Lösung
§ Erstellen einer funktionsfähigen vorinstallierten Datenbank als Docker-Image
§ Ableitungen projektspezifischer Images mit vorinstallierten Usern, Datenstrukturen, Testdateninhalten
Offizielles Docker-
Image
Konkreter
Container
Image mit
vorinstallierter
Datenbank-Instanz
Projekt-Image mit User
und Datenbank-
Strukturen
7. Das Filesystem von Docker basiert auf einem Layering mit Copy on Write auf File-Ebene
§ Docker‘s „copy on write“-Implementierung des „overlay2“ Storage-Drivers auf File-Ebene führt zum Kopieren
eines ganzen Files in den nächsten Layer, auch wenn nur einige Bytes geändert werden
§ Der alternative “devicemapper“ Storage-Driver mit „copy on write“ auf Block-Ebene bedarf für produktiven
Einsatz einiger weiterer Voraussetzungen (direct-lvm Mode) und ist von Docker als deprecated gekennzeichnet
§ Beim Start einer DB werden die Header-Informationen in allen DB-Files aktualisiert
§ Damit werden beim ersten Start der DB alle DB-Files in den aktuellen Storage-Layer geclont (dupliziert)
§ Ableiten weiterer Images bedeutet damit auch jedes mal Vergrößern des Image um alle Datafiles
Herausforderungen
8. Das Github-Repo
https://github.com/OttoGroupSolutionProvider/oracle-db_docker
enthält Scripte, Dockerfiles und Anleitung zum Erstellen von Images mit vorinstallierter DB.
§ Durch Multistage-Builds mit Single-Layer Image wird das Duplizieren der Datafiles in jedem neuem Image
verhindert
§ Weiteres Customizing von Images ist möglich per Script z.B. für:
- Modifiziertes Instance-Setting (Memory etc.)
- Anlegen von Usern, Füllen von Schemata mit Datenstrukturen, Stammdaten …
- Ausführen von SQL-Scripten zu jedem DB-Start durch platzieren in $ORACLE_BASE/scripts/startup
Unser Lösungsansatz
9. Beschreibung im Detail: https://github.com/OttoGroupSolutionProvider/oracle-db_docker/blob/main/README.md
- Download der Dockerfiles von https://github.com/oracle/docker-images
- Download der Installationsdateien der entsprechenden DB-Version und Ablage in Verzeichnis
- Build eines Docker-Image mit Oracle Software-Installation
- Download der aktuellen Patch-Sets und opatch-Utility
- Build eines Docker-Image mit aktuellem Patch-Stand der Software-Installation
- Build eines Docker-Image mit fertiger ad hoc startbarer DB-Instanz
- Build eines Docker-Image mit DB-Instanz und projektspezifischer Erweiterung (User etc.)
Schritte zur Erstellung von Images mit DB-Instanz
10. Vielen Dank für Ihr Interesse
Otto Group Solution Provider (OSP) Dresden GmbH
Freiberger Str. 35 | 01067 Dresden
T +49 (0)351 49723 0 | F +49 (0)351 49723 119
osp.de