IBM Maximo: Creating Maximo Database on Oracle Database Free Edition (Container)
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