Troubleshooting a Never-Ending Concurrent Program in Oracle EBS 12.2 – My Real-Time Experience

 Recently, while working on our Oracle E-Business Suite 12.2 environment, I encountered an interesting issue that I thought was worth sharing.

The Problem

A few of our custom concurrent programs were not completing. They were running forever, with no errors in the log files and no obvious clues in the usual diagnostic areas.

Like most DBAs would do, I checked:

  • Concurrent request log and output – nothing unusual.

  • Database session waits – nothing conclusive.

  • Trace files – no errors.

Eventually, I raised an Oracle SR to get assistance, but even after multiple attempts, we couldn’t pinpoint the issue.

The Breakthrough

Finally, I decided to take a different approach. I used the strace command on the Linux OS to trace the system calls of the concurrent program's process ID (PID).

What I saw was eye-opening — the process was generating a large number of file-related system calls, and one particular line caught my attention:

It was trying to write temporary files to a production directory path that did not exist in the cloned test server!

Root Cause

On further investigation, I discovered that the $APPLLKOR environment variable was pointing to a non-existing directory:

/usr/tmp/prod

This was a leftover from the production environment after the test instance was cloned. Since the directory did not exist on the test server, the concurrent programs were unable to write the required temporary files and got stuck.

The Fix

I corrected the $APPLLKOR variable in the environment file to point to a valid directory on the test server. After making this change, I restarted the EBS application services.

Immediately, the concurrent programs that were stuck started completing successfully!

Key Takeaways

  • Think beyond EBS and DB logs – sometimes the issue is at the OS or filesystem level.

  • strace is a powerful tool – it can reveal exactly what the process is trying to do at the system call level.

  • Post-clone checks are critical – always verify environment variables and directory structures after cloning from production.

This experience reinforced for me that troubleshooting sometimes requires going one level deeper and thinking outside the usual EBS framework.

OCI Home Region Explained: Identity Domains & Service Access

Oracle Cloud Infrastructure (OCI) uses the concept of a Home Region for identity management, service access, and global policy enforcement. Knowing what this means, how it works, and how it affects your environment is critical.


🛠 What is the Home Region?

  • When you set up an OCI tenancy, Oracle assigns you a Home Region. This is where your Identity and Access Management (IAM) resources—users, groups, policies, compartments, dynamic groups—are defined and managed. 

  • Once set, the Home Region for your tenancy cannot be changed. 

  • Even if you operate services in other regions, your IAM resource definitions always live in the Home Region. When you make changes (to policies, groups etc.), those changes happen in the Home Region and then get propagated to other subscribed regions. 


🌐 How It Impacts Identity Domains & Access

  • Identity Domains Creation: When you create an identity domain in the Console, the region you select becomes its Home Region. The identity domain’s configurations and roles live there. 

  • Policy Enforcement Across Regions: IAM policies defined in your Home Region are enforced in all regions you subscribe to. Even though the IAM resource definitions are centralized, their effects are global.

  • Updates & Replication Delay: Because IAM resource updates are made in the Home Region, it may take a few minutes before those updates reflect across other regions. 


✅ What This Means for You

  • Plan Your Home Region Carefully: Since it cannot be changed later, choose the most strategic region—consider latency, compliance, data sovereignty, etc.

  • Know Where to Make IAM Changes: Always use the Home Region endpoint for API / SDK calls when modifying IAM resources. Even though you may be in another region, the changes happen in the Home Region. 

  • Policy Design With Global Scope: Design IAM policies expecting that they will apply in other regions as well. If you need region-specific controls, explicitly define them.

  • Identity Domain Awareness: If using multiple identity domains (including non-default ones), know which region is their Home Region, how replication works, and what control you have over region access. 


🧭 Bottom Line

OCI’s Home Region is more than just geographic—it’s the central authority for your identity, access, and policy definitions. It’s where your IAM is born and governed. Even though services may run in many regions, identity stays anchored at the Home Region—this ensures centralized control, consistency, and security.

Schedule an In-Place Upgrade to Oracle Database 23ai on Autonomous Database

 

Oracle Autonomous Database now supports in-place upgrades from Oracle Database 19c to 23ai using scheduled upgrades—a seamless, automated process tailored for modern cloud environments.

Upgrade Options Available:

  • Scheduled Upgrade
    Define your preferred time, and the upgrade process runs automatically—no manual steps needed.

  • Full Clone Upgrade
    Create a full clone of your 19c database and select 23ai during the clone setup to instantiate a new, upgraded instance.

  • Refreshable Clone Upgrade
    Similar to a full clone but allows ongoing synchronization between the 19c source and 23ai clone—ideal for ensuring minimal downtime and continuous updates.


At a Glance

Upgrade Method Description
Scheduled Upgrade     Automated upgrade of an existing 19c Autonomous DB.
Full Clone                         Creates a brand-new 23ai clone from 19c.
Refreshable Clone Creates a 23ai clone that syncs with the source 19c DB.

Upgrading to Oracle Database 23ai on Autonomous Database has never been more straightforward. Whether you choose a scheduled upgrade or cloning, you control the transition timing and method with minimal disruption.

Create Customer Secret Keys in OCI

 Step 1:

Login to OCI console and click top right on user, User Settings -> Tokens and keys



Click on customer secret keys -> Generate Secret Keys

Upon creation, you have to copy the secret keys and store it somewhere as once you close it, it wont show again.


Upon closing, you can get the Access key also.




Real-Time SQL Monitoring in Oracle Database: Key Facts


Real-Time SQL Monitoring is a powerful feature that provides detailed insights into SQL execution, helping DBAs identify performance bottlenecks and optimize queries efficiently. But before using it, there are some important licensing considerations.

🔑 Licensing Requirements

  • Requires the Oracle Tuning Pack.

  • The Oracle Diagnostics Pack is a prerequisite for the Tuning Pack.

  • Both packs must be licensed, and they are only available with the Enterprise Edition of the Oracle Database.

📊 When Does SQL Monitoring Trigger?

SQL statements are automatically monitored when:

  • A single execution consumes more than 5 seconds of CPU or I/O time.

  • The SQL uses parallel execution (DML, DDL, or queries).


✅ In short: Real-Time SQL Monitoring is an Enterprise Edition-only feature requiring additional licenses, and it kicks in automatically for resource-intensive or parallel SQL operations.


OCI File Storage with Lustre: High-Performance, Managed File System for AI

Oracle Cloud Infrastructure (OCI) offers File Storage with Lustre—a fully managed, high-performance file system tailored for demanding workloads such as AI, machine learning, and high-performance computing (HPC).

Key Highlights:

  • Fully Managed Infrastructure
    OCI handles deployment, maintenance, scaling, and management of Lustre components—including metadata servers, management servers, and storage servers—letting you focus on your applications, not infrastructure. 

  • Parallel and Distributed Architecture
    Designed for massive data volumes, this system delivers high aggregate throughput by distributing I/O workload across server components. 

  • Performance Tiers for Flexibility
    Choose from different bandwidth configurations:

    • 125 MB/s per TiB (1 Gbps)

    • 250 MB/s per TiB (2 Gbps)

    • 500 MB/s per TiB (4 Gbps)

    • 1000 MB/s per TiB (8 Gbps)
      Administrators can also tweak performance using Lustre's lfs tools, including features like file striping and Progressive File Layout (PFL). 

  • Client Compatibility
    OCI supports Lustre version 2.15.5. Compatible client environments include:

    • Ubuntu 22.04 (kernel 5.15.x)

    • Oracle Linux 8 (RHCK 4.18)

  • Global Availability
    This service is available across multiple OCI regions (at the time of writing this blog) —such as Sydney, Frankfurt, São Paulo, Montréal, Tokyo, Amsterdam, and more—ensuring localized access and compliance. 


Bottom Line:


OCI File Storage with Lustre provides a scalable, high-throughput file system custom-built for data-intensive workloads. With its fully managed infrastructure and multiple performance configurations, it’s an ideal fit for running AI training jobs which needs high performance computing needs.

Understanding V$SESSION_LONGOPS in Oracle Database

 In Oracle Database, V$SESSION_LONGOPS is a dynamic performance view available in every database release.

It provides visibility into the status of certain long-running operations—typically those that take more than 6 seconds to complete. Examples include:

  • Backup and recovery processes

  • Statistics gathering

  • SQL query executions

The set of operations tracked is determined entirely by Oracle—DBAs cannot influence which operations are monitored.

By querying V$SESSION_LONGOPS, you can get progress updates, elapsed time, and estimated completion time for operations Oracle chooses to track.

The following query displays operation details, progress percentage, and remaining time:

SELECT opname,

       username,

       sql_fulltext,

       TO_CHAR(start_time,'DD-MON-YYYY HH24:MI:SS') AS start_time,

       (sofar/totalwork)*100 AS "%_complete",

       time_remaining,

       s.con_id

FROM   v$session_longops s

       INNER JOIN v$sql sl USING (sql_id)

WHERE  time_remaining > 0;