Oracle: Run Oracle DB on Redhat OpenShift: Difference between revisions

From Wiki
(Created page with " = Procedure = 1) Create a new project (namespace): oc new-project oracle-db 2) Create a Service Account which you will use to run the database: oc create sa oracle-sa 3) Configure Security Context Constraint (SCC) oc adm policy add-scc-to-user anyuid -z oracle-sa Check with oc adm policy who-can use scc anyuid 4) Create a secret to store the default password for Oracle : oc create secret generic oracle-db-pass --from-literal=password=<your_password_here>...")
 
No edit summary
 
Line 1: Line 1:
Based on this work: https://github.com/m-g-k/Running-Oracle-Database-23c-and-23ai-Free-on-OpenShift


= Procedure =
= Procedure =

Latest revision as of 16:51, 2 May 2026

Based on this work: https://github.com/m-g-k/Running-Oracle-Database-23c-and-23ai-Free-on-OpenShift


Procedure

1) Create a new project (namespace):

oc new-project oracle-db

2) Create a Service Account which you will use to run the database:

oc create sa oracle-sa

3) Configure Security Context Constraint (SCC)

oc adm policy add-scc-to-user anyuid -z oracle-sa

Check with

oc adm policy who-can use scc anyuid

4) Create a secret to store the default password for Oracle :

oc create secret generic oracle-db-pass --from-literal=password=<your_password_here>

5) Create file deployment.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: oracle-db-svc
  labels:
    app: oracle-db
spec:
  ports:
    - port: 1521
  selector:
    app: oracle-db
  clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: oracle-db-pvc
  labels:
    app: oracle-db
spec:
  accessModes:
    - ReadWriteOncePod
  resources:
    requests:
      storage: 40Gi
  storageClassName: ocs-storagecluster-ceph-rbd
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: oracle-db
  labels:
    app: oracle-db
spec:
  serviceName: oracle-db-svc
  replicas: 1
  selector:
    matchLabels:
      app: oracle-db
  template:
    metadata:
      labels:
        app: oracle-db
    spec:
      initContainers:
      - name: init-oracle
        image: registry.access.redhat.com/ubi9/ubi:latest
        command: ['/usr/bin/bash', '-c']
        args:
          - echo starting permissions check on /opt/oracle/oradata/;
            ls -al /opt/oracle/;
            if [ -f "/opt/oracle/oradata/PERMS.SET" ]; then
              echo permissions already set;
            else
              chown -R 54321:54321 /opt/oracle/oradata;
              ls -al /opt/oracle/;
              touch /opt/oracle/oradata/PERMS.SET;
              echo permissions set;
            fi;
            echo finished;
        securityContext:
          runAsUser: 0 
        volumeMounts:
        - name: oracle-db-persistent-storage
          mountPath: /opt/oracle/oradata
      containers:
      - name: oracle-db
        image: container-registry.oracle.com/database/free:23.3.0.0
        env:
        - name: ORACLE_PWD
          valueFrom:
            secretKeyRef:
              name: oracle-db-pass
              key: password
        - name: ORACLE_PASSWORD
          valueFrom:
            secretKeyRef:
              name: oracle-db-pass
              key: password
        ports:
        - containerPort: 1521
          name: oracle-db
        volumeMounts:
        - name: oracle-db-persistent-storage
          mountPath: /opt/oracle/oradata
        securityContext:
          runAsUser: 54321
      serviceAccountName: oracle-sa
      volumes:
      - name: oracle-db-persistent-storage
        persistentVolumeClaim:
          claimName: oracle-db-pvc
      resources:
            requests:
              memory: "8Gi"
              cpu: "4"
            limits:
              memory: "8Gi"
              cpu: "8"

6) Apply

oc apply -f deployment.yaml

Ver também