IBM Maximo: Creating Maximo Database on Oracle Database Free Edition (Container)

From Wiki
Jump to navigation Jump to search

This guide provides step-by-step instructions for deploying Oracle Database 23c Free Edition on OpenShift and creating a Maximo database with the required schema.

Overview

Oracle Database 23c Free Edition is a fully-featured Oracle Database that can be used for development, testing, and small production deployments. This guide covers:

Follow the instructions, to create Oracle Database

Step 2: Create Maximo Schema in FREE Database

Step 2.1: Connect to Oracle Container

First, connect to the Oracle database container:

oc exec -it oracle-db-0 -- bash

Step 2.2: Create Maximo Tablespaces

Connect to SQL*Plus and create the required tablespaces in the FREE database:

sqlplus sys/$ORACLE_PWD@FREE as sysdba

Then execute the following SQL commands:

-- Create MAXDATA tablespace for Maximo data
CREATE TABLESPACE maxdata
  DATAFILE '/opt/oracle/oradata/FREE/maxdata.dbf'
  SIZE 1000M
  AUTOEXTEND ON;

-- Create MAXINDEX tablespace for Maximo indexes
CREATE TABLESPACE maxindex
  DATAFILE '/opt/oracle/oradata/FREE/maxindex.dbf'
  SIZE 1000M
  AUTOEXTEND ON;

-- Create MAXTEMP temporary tablespace
CREATE TEMPORARY TABLESPACE maxtemp
  TEMPFILE '/opt/oracle/oradata/FREE/maxtemp.dbf'
  SIZE 1000M
  AUTOEXTEND ON
  MAXSIZE UNLIMITED;

-- Create Maximo Schema and User
-- Allow creation of local users in CDB (Oracle 12c+ requirement)
ALTER SESSION SET "_ORACLE_SCRIPT"=true;

-- Create MAXIMO user/schema
CREATE USER MAXIMO
  IDENTIFIED BY "Maximo_123"
  DEFAULT TABLESPACE maxdata
  TEMPORARY TABLESPACE maxtemp;

-- Grant basic privileges
GRANT CONNECT TO MAXIMO;
GRANT CREATE JOB TO MAXIMO;
GRANT CREATE TRIGGER TO MAXIMO;
GRANT CREATE SESSION TO MAXIMO;
GRANT CREATE SEQUENCE TO MAXIMO;
GRANT CREATE SYNONYM TO MAXIMO;
GRANT CREATE TABLE TO MAXIMO;
GRANT CREATE VIEW TO MAXIMO;
GRANT CREATE PROCEDURE TO MAXIMO;
GRANT ALTER SESSION TO MAXIMO;

-- Grant SYSDBA privilege
GRANT SYSDBA TO MAXIMO;

-- Grant execute on CTX_DDL for text search
GRANT EXECUTE ON ctxsys.ctx_ddl TO MAXIMO;

-- Grant unlimited quota on maxdata tablespace
ALTER USER MAXIMO QUOTA UNLIMITED ON maxdata;

-- Grant unlimited quota on maxindex tablespace (for indexes)
ALTER USER MAXIMO QUOTA UNLIMITED ON maxindex;

EXIT

Step 3: Verify Database Setup

All verification commands should be executed from within the container bash session.

Step 3.1: Verify Tablespaces

sqlplus sys/$ORACLE_PWD@FREE as sysdba
SELECT tablespace_name, status, contents
FROM dba_tablespaces
WHERE tablespace_name IN ('MAXDATA', 'MAXINDEX', 'MAXTEMP');

EXIT

Expected output:

TABLESPACE_NAME  STATUS    CONTENTS
---------------  --------  ---------
MAXDATA          ONLINE    PERMANENT
MAXINDEX         ONLINE    PERMANENT
MAXTEMP          ONLINE    TEMPORARY

Step 3.2: Verify Maximo Schema

sqlplus sys/$ORACLE_PWD@FREE as sysdba
SELECT username, default_tablespace, temporary_tablespace, account_status
FROM dba_users
WHERE username = 'MAXIMO';

EXIT

Expected output:

USERNAME  DEFAULT_TABLESPACE  TEMPORARY_TABLESPACE  ACCOUNT_STATUS
--------  ------------------  --------------------  --------------
MAXIMO    MAXDATA            MAXTEMP               OPEN

Step 3.3: Verify User Privileges

sqlplus sys/$ORACLE_PWD@FREE as sysdba
SELECT privilege
FROM dba_sys_privs
WHERE grantee = 'MAXIMO'
ORDER BY privilege;

EXIT

Expected privileges should include:

ALTER SESSION
CONNECT
CREATE JOB
CREATE PROCEDURE
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
SYSDBA

Step 3.4: Verify SYSDBA Access

Test that MAXIMO can connect with SYSDBA privilege:

sqlplus MAXIMO/Maximo_123@FREE as sysdba
SELECT USER, SYS_CONTEXT('USERENV', 'ISDBA') AS IS_DBA FROM DUAL;

EXIT

Step 3.5: Test Maximo User Connection

sqlplus MAXIMO/Maximo_123@FREE
SELECT USER FROM DUAL;

EXIT

Expected output:

USER
------
MAXIMO

Step 3.6: Verify Tables in MAXIMO Schema

Check if any tables have been created in the MAXIMO schema:

sqlplus MAXIMO/Maximo_123@FREE
-- Count total tables
SELECT COUNT(*) AS table_count FROM user_tables;

-- define line size
SET LINESIZE 200
COL TABLE_NAME FORMAT A30
COL NUM_ROWS    FORMAT 9999999
COL TABLESPACE_NAME FORMAT A20

-- List all tables (if any exist)
SELECT table_name, num_rows, tablespace_name
FROM user_tables
ORDER BY table_name;

EXIT

Expected output (before Maximo installation):

TABLE_COUNT
-----------
          0

no rows selected

After Maximo installation, you should see Maximo tables like:

TABLE_NAME           NUM_ROWS  TABLESPACE_NAME
-------------------  --------  ---------------
ASSET                       0  MAXDATA
PERSON                      0  MAXDATA
WORKORDER                   0  MAXDATA
...

Alternative command to check tables from SYS user:

sqlplus sys/$ORACLE_PWD@FREE as sysdba
-- Check tables owned by MAXIMO
SELECT owner, table_name, tablespace_name, num_rows
FROM dba_tables
WHERE owner = 'MAXIMO'
ORDER BY table_name;

-- Count tables by owner
SELECT owner, COUNT(*) AS table_count
FROM dba_tables
WHERE owner = 'MAXIMO'
GROUP BY owner;

EXIT

Step 3.7: Exit Container

After verification, exit the container:

exit

Step 4: Configure Maximo Application Suite Connection

Connection Details

Use the following connection details in your Maximo Application Suite JDBC configuration:

  • Database Type: Oracle
  • Host: `oracle-db-svc` (or `oracle-db-svc.<namespace>.svc.cluster.local`)
  • Port: `1521`
  • Service Name: `FREE`
  • Schema: `MAXIMO`
  • Username: `MAXIMO`
  • Password: `Maximo_123`
  • JDBC URL: `jdbc:oracle:thin:@oracle-db-svc:1521/FREE`

Sample JDBC Configuration

this work for me!

File: jdbc-lab01-manage.yaml

---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: "jdbc-ws01-manage-credentials"
  namespace: "mas-lab01-core"
stringData:
  username: "MAXIMO"
  password: "Maximo_123"
---
apiVersion: config.mas.ibm.com/v1
kind: JdbcCfg
metadata:
  name: "lab01-jdbc-wsapp-ws01-manage"
  namespace: "mas-lab01-core"
  labels:
    'mas.ibm.com/configScope': 'workspace-application'
    'mas.ibm.com/instanceId': 'lab01'
    'mas.ibm.com/workspaceId': 'ws01'
    'mas.ibm.com/applicationId': 'manage'
spec:
  displayName: "JDBC WS01 Manage"
  config:
    url: "jdbc:oracle:thin:@oracle-db-svc.oracle-maxdb.svc:1521/FREE"
    sslEnabled: False
    credentials:
      secretName: "jdbc-ws01-manage-credentials"

Another sample

Create JDBC Secret for MAS

oc create secret generic jdbc-ws01-manage-credentials \
  --from-literal=username=MAXIMO \
  --from-literal=password='Maximo_123' \
  --from-literal=url='jdbc:oracle:thin:@oracle-db-svc:1521/FREE'
apiVersion: config.mas.ibm.com/v1
kind: JdbcCfg
metadata:
  name: maximo-jdbc-config
  namespace: mas-<instance-id>-core
spec:
  certificates:
    - alias: oracle-cert
      crt: |
        -----BEGIN CERTIFICATE-----
        <certificate content if using SSL>
        -----END CERTIFICATE-----
  config:
    credentials:
      secretName: maximo-jdbc-secret
    driverOptions: {}
    sslEnabled: false
    url: jdbc:oracle:thin:@oracle-db-svc:1521/FREE
  displayName: Maximo Oracle Database
  type: external

See Also