Configuring InfoScale Oracle Data Manager (VRTSodm)

Last published : Jul 06, 2026
InfoScale Oracle Data Manager (VRTSodm) is offered as a part of InfoScale suite. With VRTSodm, Oracle Applications bypass caching and locks of the file system thus enabling a faster connection.
VRTSodm is enabled by the linking libodm.so with the Oracle Application. The I/O calls from Oracle Application are then routed through the ODM kernel module.
Following changes are needed to the Oracle database yaml file to enable it to run with InfoScale ODM:
  1. Update the VxFS Data Volume (< vxfs pvc>) in the following code and add it to the .yaml.
    Note: Oracle Container image requires the data volume to be mounted at/opt/oracle/oradata. This volume also needs to be writable by the 'oracle' (uid: 54321) user inside the container. VxFS data volume must be mounted at this path by using a PVC. To handle this permissions issue, the followinginitContainercan be used.
    initContainers:
    -  name: fix-volume-permission
      image: ubuntu
      command:
      -  sh
      -  -c
      -  mkdir -p /opt/oracle/oradata
        && chown -R 54321:54321 /opt/oracle/oradata
        && chmod 0700 /opt/oracle/oradata
      volumeMounts:
      -  name: <vxfs pvc>
      mountPath: /opt/oracle/oradata
      readOnly: false
    1. Add the following to your .yaml to disable DNFS.
    args:
    -  sh
    -  -c
    -  cd /opt/oracle/product/19c/dbhome_1/rdbms/lib/ &&
     make -f ins_rdbms.mk dnfs_off && cd $WORKDIR &&
     $ORACLE_BASE/$RUN_FILE
  2. Create a hostpath volume devodm in the .yaml, and mount at /dev/odm.
    Note: On selinux-enabled systems (including OpenShift), the Oracle database container must be run as privileged.
  3. Use thelibodm.so that InfoScale provides. Run the following commands on the bastion/master nodes.
    • oc/kubectl cp <infoscalepod>:/opt/VRTSodm/lib64/libodm.so.
    • oc/kubectl create configmap libodm --from-file libodm.so.
    • Mount libodm.so inside the oracle container as under:
      -  name: libodm-cmapvol
        mountPath: /opt/oracle/product/19c/dbhome_1/rdbms/lib/odm/libodm.so
        subPath: libodm.so

      volumes:
      -  name: libodm-cmapvol
        configMap:
          name: libodm
          items:
          -  key: libodm.so
            path: libodm.so
      Run your .yaml on the bastion mode of the OpenShift cluster or the master node of the Kubernetes cluster.
      Alternatively, copy the following content and create a new file oracle-odm.yaml.
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: oracle-odm
        labels:
          app: oracledb
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: oracledb
        template:
          metadata:
            labels:
              app: oracledb
          spec:
            initContainers:
            -  name: fix-volume-permission
              image: ubuntu
              command:
              -  sh
              -  -c
              -  mkdir -p /opt/oracle/oradata && chown -R 54321:54321
                /opt/oracle/oradata && chmod 0700 /opt/oracle/oradata
              volumeMounts:
              -  name: oracle-datavol
                mountPath: /opt/oracle/oradata
                readOnly: false
            containers:
            -  name: oracle-app
              securityContext:
                privileged: true
              image:#replace this with the link for patched oracle container image
              imagePullPolicy: IfNotPresent
              \# Modification to the args to disable dnfs before starting database
              args:
              -  sh
              -  -c
              -  cd /opt/oracle/product/19c/dbhome_1/rdbms/lib/ && make -f
                   ins_rdbms.mk dnfs_off && cd $WORKDIR && $ORACLE_BASE/$RUN_FILE
              resources:
                requests:
                  memory: 8Gi
              env:
              -  name: ORACLE_SID
                value: "orainst1"
              -  name: ORACLE_PDB
                value: orapdb1
              -  name: ORACLE_PWD
                value: oracle
              ports:
              -  name: listener
                containerPort: 1521
                hostPort: 1521
              volumeMounts:
              -  name: oracle-datavol
                mountPath: /opt/oracle/oradata
                readOnly: false
              -  name: devodm
                mountPath: /dev/odm
              -  name: libodm-cmapvol
               mountPath: /opt/oracle/product/19c/dbhome_1/rdbms/lib/odm/libodm.so
                subPath: libodm.so
            volumes:
            -  name: oracle-datavol
              persistentVolumeClaim:
                claimName: oracle-data-pvc
            -  name: devodm
              hostPath:
                path: /dev/odm
                type: Directory
            -  name: libodm-cmapvol
              configMap:
                name: libodm
                items:
                -  key: libodm.so
                  path: libodm.so
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: ora-listener
        namespace: default
        labels:
          app: oracledb
      spec:
        selector:
          app: oracledb
        type: NodePort
        ports:
        -  name: ora-listener
          protocol: TCP
          port: 1521
          targetPort: 1521
Save the file.
Run the file on the bastion mode of the OpenShift cluster or the master node of the Kubernetes cluster to enable a faster connection.
Related information