Slide 1

Slide 1 text

East Coast Oracle User Group November 4, 2024 Get Started with Oracle on Containers

Slide 2

Slide 2 text

Database Reliability Engineering MAA ⁘ RAC ⁘ RMAN Data Guard ⁘ Sharding ⁘ Partitioning Information Lifecycle Management Exadata & Engineered Systems Database Modernization Upgrades ⁘ Patching ⁘ Migrations Cloud ⁘ Hybrid Automation DevOps ⁘ IaC ⁘ Containers ⁘ Terraform Vagrant ⁘ Ansible Observability AHF ⁘ TFA ⁘ CHA ⁘ CHM

Slide 3

Slide 3 text

www.viscosityna.com @ViscosityNA Oracle on Docker Running Oracle Databases in Linux Containers Free sample chapter: https://oraclesean.com

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

www.viscosityna.com @ViscosityNA Oracle in Containers? LOL!

Slide 6

Slide 6 text

www.viscosityna.com @ViscosityNA "Don't use Docker for databases!"

Slide 7

Slide 7 text

www.viscosityna.com @ViscosityNA "Containers are for development not production!"

Slide 8

Slide 8 text

www.viscosityna.com @ViscosityNA "You can't trust containers!" "Containers will lose your data!" "Containers aren't secure!"

Slide 9

Slide 9 text

www.viscosityna.com @ViscosityNA "Containers aren't meant to support complex applications like Oracle!"

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

www.viscosityna.com @ViscosityNA

Slide 12

Slide 12 text

www.viscosityna.com @ViscosityNA But... why?

Slide 13

Slide 13 text

www.viscosityna.com @ViscosityNA - Version controlled - Reliable, repeatable results - Portable, distributable Infrastructure as code

Slide 14

Slide 14 text

www.viscosityna.com @ViscosityNA - Windows - Mac - Linux Images built on my machine will work in:

Slide 15

Slide 15 text

www.viscosityna.com @ViscosityNA - Oracle Cloud - AWS - Azure - Google Cloud Images built on my machine will work in:

Slide 16

Slide 16 text

www.viscosityna.com @ViscosityNA - Docker - Podman - Kubernetes - Rancher - LXD - containerd... Images built on my machine will work in:

Slide 17

Slide 17 text

www.viscosityna.com @ViscosityNA Any machine Any cloud Any platform

Slide 18

Slide 18 text

www.viscosityna.com @ViscosityNA ...without needing to convert or change anything!

Slide 19

Slide 19 text

www.viscosityna.com @ViscosityNA Their behavior is identical

Slide 20

Slide 20 text

www.viscosityna.com @ViscosityNA ...write/test SQL, PL/SQL, scripts Use Oracle in containers to...

Slide 21

Slide 21 text

www.viscosityna.com @ViscosityNA ...learn, experiment, hack Use Oracle in containers to...

Slide 22

Slide 22 text

www.viscosityna.com @ViscosityNA ...study for certifications Use Oracle in containers to...

Slide 23

Slide 23 text

www.viscosityna.com @ViscosityNA ...performance tuning Use Oracle in containers to...

Slide 24

Slide 24 text

www.viscosityna.com @ViscosityNA ...test procedures, validate documentation Use Oracle in containers to...

Slide 25

Slide 25 text

www.viscosityna.com @ViscosityNA ...practice recovery, upgrades, DR, HA Use Oracle in containers to...

Slide 26

Slide 26 text

www.viscosityna.com @ViscosityNA ...build labs & training environments Use Oracle in containers to...

Slide 27

Slide 27 text

www.viscosityna.com @ViscosityNA ...validate patches & system changes Use Oracle in containers to...

Slide 28

Slide 28 text

www.viscosityna.com @ViscosityNA ...without infrastructure—just a laptop! Use Oracle in containers to...

Slide 29

Slide 29 text

www.viscosityna.com @ViscosityNA The best argument for containers: Roller Coasters

Slide 30

Slide 30 text

www.viscosityna.com @ViscosityNA A roller coaster is a train with a pulse!

Slide 31

Slide 31 text

www.viscosityna.com @ViscosityNA But ask yourself... "Is this the ride I want at 2AM?"

Slide 32

Slide 32 text

www.viscosityna.com @ViscosityNA Metros: Boring. Reliable. Predictable.

Slide 33

Slide 33 text

www.viscosityna.com @ViscosityNA Infrastrucutre shouldn't be exciting. It should get you to your destination.

Slide 34

Slide 34 text

www.viscosityna.com @ViscosityNA Without thrills. Without surprises. Without excitement.

Slide 35

Slide 35 text

www.viscosityna.com @ViscosityNA Containers are FAST!

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

www.viscosityna.com @ViscosityNA Containers are efficient!

Slide 38

Slide 38 text

@ViscosityNA www.viscosityna.com www.viscosityna.com @ViscosityNA 28 Oracle Databases on a laptop 2018 MacBook Pro 15", 2.2GHz 6-core Intel Core i7, 32GB, 1TB SSD

Slide 39

Slide 39 text

www.viscosityna.com @ViscosityNA Prepare your system

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

www.viscosityna.com @ViscosityNA docker pull container-registry.oracle.com/database/free:23.4.0.0 # docker pull container-registry.oracle.com/database/free:23.4.0.0 23.4.0.0: Pulling from database/free 6d6e36f7c9fb: Pull complete 21def9023b6f: Pull complete 5e7b2cfeb7fa: Pull complete b4a24759beff: Pull complete 78bba54e9814: Pull complete 716b489ad5ad: Pull complete c23fd8c6cbee: Pull complete 79dea26b3a5a: Pull complete 5dfbcf799df3: Pull complete 154719a62576: Pull complete Digest: sha256:83edd0756fda0e5faecc0fdf047814f0177d4224d7bf037e4900123ee3e08718 Status: Downloaded newer image for container-registry.oracle.com/database/free:23.4.0.0 container-registry.oracle.com/database/free:23.4.0.0

Slide 48

Slide 48 text

www.viscosityna.com @ViscosityNA docker images # docker images REPOSITORY TAG IMAGE ID CREATED SIZE container-registry.oracle.com/database/free 23.4.0.0 7510f8869b04 3 months ago 8.7GB container-registry.oracle.com/database/enterprise 19.19.0.0 979416fa8cea 12 months ago 6.21GB

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

www.viscosityna.com @ViscosityNA docker run -d \ --name my-db \ container-registry.oracle.com/database/free:23.4.0.0 docker logs -f my_db

Slide 51

Slide 51 text

www.viscosityna.com @ViscosityNA Create a database/data directory # Create a directory for databases and data: ORADATA=~/oradata mkdir -p ${ORADATA}

Slide 52

Slide 52 text

www.viscosityna.com @ViscosityNA Create a directory for scripts (optional) # Create a directory for scripts: mkdir -p ${ORADATA}/scripts

Slide 53

Slide 53 text

www.viscosityna.com @ViscosityNA Set variables # Give the container a name: CONTAINER_NAME=ORCL # Set the database and PDB names # (not necessary for 23ai): ORACLE_SID=ORCL ORACLE_PDB=ORCLPDB

Slide 54

Slide 54 text

www.viscosityna.com @ViscosityNA Create subdirectories for the database # Create directories for admin/audit, data, and diagnostic files: for dir in admin data diag do mkdir -p ${ORADATA}/${CONTAINER_NAME}/${dir} # Clean up any existing files: rm -fr ${ORADATA}/${CONTAINER_NAME}/${dir}/* done

Slide 55

Slide 55 text

www.viscosityna.com @ViscosityNA Create subdirectories for the database ├── oradata # Base directory for all containers │ └── ORCL # Base directory for the ORCL container │ ├── admin # Admin/audit │ ├── data # Data │ └── diag # diagnostic_dest └── scripts # Shared scripts

Slide 56

Slide 56 text

www.viscosityna.com @ViscosityNA A useful command for 23ai Free Edition docker rm -f ${CONTAINER_NAME} 2>/dev/null docker run -d \ --name ${CONTAINER_NAME} \ --volume ${ORADATA}/${CONTAINER_NAME}/data:/opt/oracle/oradata \ --volume ${ORADATA}/${CONTAINER_NAME}/diag:/opt/oracle/diag \ --volume ${ORADATA}/${CONTAINER_NAME}/admin:/opt/oracle/admin \ --volume ${ORADATA}/scripts:/scripts \ -p 51521:1521 \ container-registry.oracle.com/database/free:23.4.0.0 docker logs -f ${CONTAINER_NAME}

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

www.viscosityna.com @ViscosityNA “SSH” to the container docker exec -it ${CONTAINER_NAME} bash

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

www.viscosityna.com @ViscosityNA Name/IP of the container host The mapped port ORACLE_SID localhost 51521 o193 Connect SQL Developer to the container

Slide 61

Slide 61 text

www.viscosityna.com @ViscosityNA Why these extra steps?

Slide 62

Slide 62 text

www.viscosityna.com @ViscosityNA Software Configuration Data What is a database?

Slide 63

Slide 63 text

www.viscosityna.com @ViscosityNA Software Configuration Data What is a database?

Slide 64

Slide 64 text

www.viscosityna.com @ViscosityNA ├── ORCLCDB │ ├── ORCLPDB1 │ │ ├── … │ ├── control01.ctl │ ├── pdbseed │ │ ├── … │ ├── redo01.log │ ├── redo02.log │ ├── redo03.log │ ├── sysaux01.dbf │ ├── system01.dbf │ ├── temp01.dbf │ ├── undotbs01.dbf │ └── users01.dbf └── dbconfig └── ORCLCDB ├── listener.ora ├── orapwORCLCDB ├── oratab ├── spfileORCLCDB.ora ├── sqlnet.ora └── tnsnames.ora

Slide 65

Slide 65 text

www.viscosityna.com @ViscosityNA ├── ORCLCDB │ ├── ORCLPDB1 │ │ ├── … │ ├── control01.ctl │ ├── pdbseed │ │ ├── … │ ├── redo01.log │ ├── redo02.log │ ├── redo03.log │ ├── sysaux01.dbf │ ├── system01.dbf │ ├── temp01.dbf │ ├── undotbs01.dbf │ └── users01.dbf └── dbconfig └── ORCLCDB ├── listener.ora ├── orapwORCLCDB ├── oratab ├── spfileORCLCDB.ora ├── sqlnet.ora └── tnsnames.ora

Slide 66

Slide 66 text

www.viscosityna.com @ViscosityNA Why is this important?

Slide 67

Slide 67 text

www.viscosityna.com @ViscosityNA Containers save data, metadata, and con fi guration under oradata: Why is this important? •Data fi les •Temp fi les •Redo logs •Archive logs •TNS con fi gurations •Wallets •/etc/oratab •p fi le/sp fi le

Slide 68

Slide 68 text

www.viscosityna.com @ViscosityNA Containers save data, metadata, and con fi guration under oradata: Why is this important? •Data fi les •Temp fi les •Redo logs •Archive logs •TNS con fi gurations •Wallets •/etc/oratab •p fi le/sp fi le All database fi les are in a single, local directory: ${ORADATA}/${CONTAINER_NAME}/data

Slide 69

Slide 69 text

www.viscosityna.com @ViscosityNA We can copy an entire database: cp -rpT ${ORADATA}/${OLD_CONTAINER}/data \ ${ORADATA}/${NEW_CONTAINER}/data

Slide 70

Slide 70 text

www.viscosityna.com @ViscosityNA ...to create an instant database! # Create a new container name: OLD_CONTAINER=${CONTAINER_NAME} NEW_CONTAINER=CLONE # Create new directories for admin/audit, data, diag: for dir in admin data diag do mkdir -p ${ORADATA}/${NEW_CONTAINER}/${dir} done # Copy the original container's data directory to the new container: cp -rpT ${ORADATA}/${OLD_CONTAINER}/data \ ${ORADATA}/${NEW_CONTAINER}/data

Slide 71

Slide 71 text

www.viscosityna.com @ViscosityNA The database starts immediately! docker run -d \ --name ${NEW_CONTAINER} \ --volume ${ORADATA}/${NEW_CONTAINER}/data:/opt/oracle/oradata \ --volume ${ORADATA}/${NEW_CONTAINER}/diag:/opt/oracle/diag \ --volume ${ORADATA}/${NEW_CONTAINER}/admin:/opt/oracle/admin \ --volume ${ORADATA}/scripts:/scripts \ -p 51522:1521 \ container-registry.oracle.com/database/free:23.4.0.0 docker logs -f ${NEW_CONTAINER}

Slide 72

Slide 72 text

www.viscosityna.com @ViscosityNA Creating images

Slide 73

Slide 73 text

www.viscosityna.com @ViscosityNA https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance

Slide 74

Slide 74 text

www.viscosityna.com @ViscosityNA

Slide 75

Slide 75 text

www.viscosityna.com @ViscosityNA

Slide 76

Slide 76 text

www.viscosityna.com @ViscosityNA https://github.com/oraclesean/cloud-native-oracle

Slide 77

Slide 77 text

www.viscosityna.com @ViscosityNA

Slide 78

Slide 78 text

www.viscosityna.com @ViscosityNA

Slide 79

Slide 79 text

www.viscosityna.com @ViscosityNA

Slide 80

Slide 80 text

www.viscosityna.com @ViscosityNA

Slide 81

Slide 81 text

www.viscosityna.com @ViscosityNA Resources Download Docker Desktop: •https://www.docker.com/products/docker-desktop/ Oracle Container Registry: •https://container-registry.oracle.com Oracle Docker Registry on GitHub: •https://github.com/oracle/docker-images My Oracle Cloud Native GitHub Repository: •https://github.com/oraclesean/cloud-native-oracle

Slide 82

Slide 82 text

www.viscosityna.com @ViscosityNA Questions? Contact Me! [email protected] https://linktr.ee/oraclesean

Slide 83

Slide 83 text

No content