Thursday, March 26, 2026

spluk

 Oracle EBS 12.2  ·  SIEM Engineering

Complete Guide: Capturing Oracle EBS 12.2 Logs in Splunk

A production-grade reference covering all 8 tiers — from the DB alert log to DMZ extranet servers, WAF, SiteMinder, OAM WebGate, and custom automation feeds. 80+ log sources. No log left behind.

· Oracle Apps DBA Lead· Oracle Solaris 11.4 SPARC· EBS 12.2.x Production· Splunk Universal Forwarder
8+
Log layers
80+
Log sources
5
DMZ hops
24/7
Coverage
Table of Contents
  1. 01. Why Splunk for Oracle EBS?
  2. 02. Application Tier Logs
  3. 03. WebLogic Server (WLS) Logs
  4. 04. Database Tier Logs
  5. 05. OS / Solaris 11.4 Logs
  6. 06. Security & Threat Detection Logs
  7. 07. Monitoring & Automation Feeds
  8. 08. Infrastructure / Storage / Network
  9. 09. Patching / ADOP / Change Logs
  10. 10. DMZ & Extranet EBS — Full Log Strategy
  11. 11. Splunk inputs.conf Reference
  12. 12. SPL Correlation Queries
01

Why Splunk for Oracle EBS?

Oracle E-Business Suite 12.2 generates logs across a sprawling multi-tier stack — OHS, WebLogic, Oracle DB, Solaris OS, OAM, SiteMinder, ADOP, and custom automation scripts. Without centralised log aggregation, an incident that spans even two layers can take hours to diagnose.

Splunk bridges this gap by ingesting all these sources into a single searchable platform, enabling real-time alerting, cross-layer correlation, and forensic investigation.

Post-CL0P Ransomware Context: The CL0P ransomware campaign specifically targeted Oracle EBS environments via unpatched JSP endpoints. Complete Splunk coverage — especially JSP endpoint monitoring on OHS access logs and DB audit trails — is no longer optional.
02

Application Tier Logs

The application tier covers the full request lifecycle — OHS web entry point, OAF/Forms, Concurrent Manager, and ADOP patching artefacts.

LogPathSource TypePriority
Apache/OHS access$INST_TOP/logs/ora/10.1.3/Apache/access_logoracle:ebs:ohs:accessP1
Apache/OHS error$INST_TOP/logs/ora/10.1.3/Apache/error_logoracle:ebs:ohs:errorP1
OA Framework / JSP errors$INST_TOP/logs/ora/10.1.3/j2ee/oracle:ebs:oafP1
OPMN process log$INST_TOP/logs/ora/10.1.3/opmn/oracle:ebs:opmnP2
Forms server$INST_TOP/logs/ora/10.1.3/forms/oracle:ebs:formsP2
Concurrent Manager startup$APPLCSF/$APPLLOG/oracle:ebs:cm:managerP1
Concurrent request logs$APPLCSF/$APPLLOG/*.reqoracle:ebs:cm:request:logP2
Concurrent request output$APPLCSF/$APPLOUT/*.outoracle:ebs:cm:request:outP3
ADOP patch logs$NE_BASE/EBSapps/patch/oracle:ebs:adopP2
AutoConfig logs$INST_TOP/admin/log/oracle:ebs:autoconfigP3
03

WebLogic Server (WLS) Logs

WLS is the critical Java EE container underpinning EBS 12.2. These logs are the first place to look for SSO login failures, 500 errors on the external portal, OAM redirect loops, and JDBC pool exhaustion.

Real-world case: A production CORP EBS SSO login performance issue traced to a CRP Test OAM server being referenced instead of production was first visible in the WLS managed server log — not the OHS access log.
LogPathSource TypePriority
AdminServer log$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.logoracle:wls:adminP1
Managed server log$DOMAIN_HOME/servers/EBS_managed*/logs/*.logoracle:wls:managedP1
WLS access log$DOMAIN_HOME/servers/*/logs/access.logoracle:wls:accessP1
OAM/SSO integration log$DOMAIN_HOME/servers/*/logs/oracle:wls:oamP1
GC / JVM heap log$FMW_HOME/../domain/logs/*.logoracle:wls:jvmP2
WLS Node Manager log$WL_HOME/common/nodemanager/*.logoracle:wls:nodemanagerP2
WLS JDBC datasource log$DOMAIN_HOME/servers/*/logs/oracle:wls:jdbcP2
WLS deployment log$DOMAIN_HOME/servers/*/logs/oracle:wls:deployP3
04

Database Tier Logs

The DB alert log is the single highest-priority log in any EBS environment. It surfaces ORA- errors, startup/shutdown events, redo switches, deadlocks, and block corruption — all in one place.

LogPathSource TypePriority
DB alert log$ORACLE_BASE/diag/rdbms/<db>/<SID>/trace/alert_<SID>.logoracle:db:alertP1
Listener log (XML)$ORACLE_BASE/diag/tnslsnr/<host>/listener/alert/log.xmloracle:db:listenerP1
DB audit trail (AUD$)$ORACLE_BASE/admin/<SID>/adump/*.audoracle:db:auditP1
FGA audit (FGA_LOG$)DB view → flat file extractoracle:db:fgaP1
Trace files$ORACLE_BASE/diag/rdbms/<db>/<SID>/trace/*.trcoracle:db:traceP1
RMAN backup log$ORACLE_BASE/admin/<SID>/log/oracle:db:rmanP2
Data Pump log$DATA_PUMP_DIR/*.logoracle:db:datapumpP3
FND_LOGINS (app audit)DB extract → flat fileoracle:ebs:fnd:loginsP1
FND_UNSUCCESSFUL_LOGINSDB extract → flat fileoracle:ebs:fnd:auth_failP1
AD_PATCH_HISTDB extract → flat fileoracle:ebs:patch:histP2
05

OS / Solaris 11.4 Logs

Oracle Solaris 11.4 SPARC has a distinct log layout from Linux. Syslog lives in /var/adm/messages, auth in /var/log/authlog, and C2/BSM audit in /var/audit/. The SMF service log is Solaris-specific and frequently missed in Splunk deployments.

LogPathSource TypePriority
Syslog / messages/var/adm/messagessolaris:syslogP1
Auth log/var/log/authlogsolaris:authP1
Cron log/var/cron/logsolaris:cronP2
Audit log (BSM/C2)/var/audit/solaris:bsmP2
ZFS / Volume manager/var/adm/messages (zpool events)solaris:zfsP2
NFS / mount events/var/adm/messagessolaris:nfsP1
SMF service log/var/svc/log/*.logsolaris:smfP2
Disk / SCSI errors/var/adm/messagessolaris:diskP1
Core dump events/var/core/solaris:coredumpP2
Network interface errorskstat / snoop logssolaris:networkP2
06

Security & Threat Detection Logs

Security-focused logs deserve their own tier. Several are DB extracts that require a scheduled export script to make them Splunk-consumable as flat files. These feed SOC dashboards, incident response playbooks, and compliance reports.

LogSourceSource TypePriority
OHS access — JSP endpointsaccess_log (filtered)oracle:ebs:ohs:accessP1
EBS FND security eventsFND_EVENTS_Q extractoracle:ebs:fnd:securityP1
SiteMinder / FCC log$OAM_HOME/../logs/oracle:oam:siteminderP1
OAM access server log$OAM_HOME/../logs/oracle:oam:accessP1
OS sudo / privilege log/var/log/authlogsolaris:sudoP1
File integrity eventsAIDE / Solaris BARTsecurity:fimP1
Network IDS alertsSnort/Suricata/Sourcefiresecurity:idsP1
Oracle AVDF / DB VaultAVDF exportoracle:avdfP2
Patch compliance gapsADOP / OEM feedoracle:ebs:patch:complianceP2
07

Monitoring & Automation Feeds

Custom automation scripts encode your team's institutional knowledge about what "healthy" looks like. Treat them as first-class Splunk sources, not afterthoughts. These feeds are especially valuable for trend analysis and proactive alerting.

FeedSourceSource TypePriority
OEM metric alertsOEM → syslog bridgeoracle:oem:alertP1
PagerDuty incident feedPagerDuty REST → HECpagerduty:incidentP2
Datadog APM spansDatadog → HECdatadog:apmP2
FlexDeploy deploy logFlexDeploy log exportflexdeploy:deployP2
ServiceNow change recordsSNOW REST feedsnow:changeP2
mount_monitor.sh output/var/log/mount_monitor.logcustom:mount_monitorP1
Batch consolidation report (72 programs)HTML email + log filecustom:batch_monitorP1
copy_clonebkp.sh exit codessyslog or log filecustom:clone_pipelineP2
CORP_QCC_RELINK outputLog filecustom:relinkP2
EBS URL extractor reportHTML email + logcustom:url_extractorP3
08

Infrastructure / Storage / Network

NTP is often overlooked: Clock drift on any EBS tier silently breaks Kerberos token validity and OAM session handling. Monitor NTP sync on ALL hosts — internal and DMZ — as a P1 operational alert.
LogSourceSource TypePriority
Storage array logNetApp/EMC syslogstorage:arrayP1
SAN switch logBrocade/Cisco FC syslogstorage:sanP1
Load balancer logF5/Oracle LBR syslognetwork:lbP1
Firewall / ACL logFirewall syslognetwork:firewallP1
DNS resolution logBIND / Unbound lognetwork:dnsP2
IPMI / iLO / ILOM hardwareIPMI sysloghardware:ipmiP1
Backup agent logVeritas/Commvault agentbackup:agentP2
NTP sync logntpd / chrony loginfra:ntpP2
09

Patching / ADOP / Change Logs

ADOP introduced online patching for EBS 12.2. Each phase generates distinct log artefacts. Capturing these phase-by-phase enables automatic change window validation and unauthorized patch detection — including out-of-window DFF recompilation events.

LogPathSource TypePriority
ADOP prepare phase$NE_BASE/EBSapps/patch/*/log/adop_*.logoracle:ebs:adop:prepareP1
ADOP apply phase$NE_BASE/EBSapps/patch/*/log/adop_*.logoracle:ebs:adop:applyP1
ADOP finalize phase$NE_BASE/EBSapps/patch/*/log/adop_*.logoracle:ebs:adop:finalizeP1
ADOP cleanup phase$NE_BASE/EBSapps/patch/*/log/adop_*.logoracle:ebs:adop:cleanupP2
ADOP worker log$NE_BASE/EBSapps/patch/*/log/worker*.logoracle:ebs:adop:workerP2
AD_PATCH_HIST extractDB extract → flat fileoracle:ebs:patch:histP1
AutoPatch log$APPL_TOP/admin/log/oracle:ebs:autopatchP2
DFF / flex compilation logConcurrent req log + AD workeroracle:ebs:dff:compileP3

10

DMZ & Extranet EBS — Full Log Strategy

This is the section most teams get wrong. The DMZ/extranet layer is not just "another OHS server" — it is a separate attack surface with distinct authentication infrastructure, network controls, and external-facing modules. A Splunk deployment that treats DMZ hosts the same as internal hosts will have critical blind spots.

DMZ Traffic Flow — Log Capture at Every Hop
External user
→
FW1 ①
→
WAF / F5 LBR
→
DMZ OHS (SSL term.)
→
OAM WebGate / SiteMinder
→
FW2 ②
→
Internal WLS / OAM
→
Oracle DB
Critical distinction: The DMZ OHS access log captures real external client IPs. The internal OHS access log shows only the DMZ proxy IP. Both logs are mandatory for end-to-end IP correlation during incident investigation. Tag them with different host values in inputs.conf.

Layer 1 — Perimeter / WAF / External Load Balancer

LogSourceSource TypePriority
F5 BIG-IP access logF5 syslog → Splunknetwork:lb:accessP1
F5 BIG-IP SSL logF5 syslognetwork:lb:sslP1
WAF alert logF5 ASM / ModSecuritynetwork:waf:alertP1
WAF traffic logF5 ASM / ModSecuritynetwork:waf:trafficP1
External firewall (FW1)Firewall syslognetwork:fw:externalP1

Layer 2 — DMZ OHS / Reverse Proxy (SSL Termination)

LogPathSource TypePriority
DMZ OHS access log$INST_TOP/logs/ora/10.1.3/Apache/access_log (DMZ host)oracle:ebs:dmz:ohs:accessP1
DMZ OHS error log$INST_TOP/logs/ora/10.1.3/Apache/error_log (DMZ host)oracle:ebs:dmz:ohs:errorP1
SSL/TLS error log$INST_TOP/logs/ora/10.1.3/Apache/ssl_error_logoracle:ebs:dmz:sslP1
mod_proxy / mod_rewrite logApache error log (rewrite debug)oracle:ebs:dmz:proxyP2
OHS OPMN (DMZ)$INST_TOP/logs/ora/10.1.3/opmn/ (DMZ)oracle:ebs:dmz:opmnP2

Layer 3 — Authentication: SiteMinder + OAM WebGate

LogPathSource TypePriority
SiteMinder Web Agent log$NETE_WA_ROOT/webagent.logoracle:siteminder:webagentP1
SiteMinder Policy Server log$SMPS_HOME/log/smps.logoracle:siteminder:policyP1
SiteMinder Audit log$SMPS_HOME/log/smaccess.logoracle:siteminder:auditP1
FCC (Forms Credential Collector) logSiteMinder Web Agent logoracle:siteminder:fccP1
SiteMinder session store logLDAP / SQL session DBoracle:siteminder:sessionP2
OAM WebGate log (DMZ)$WEBGATE_HOME/oblix/log/oracle:oam:webgate:dmzP1
OAM Access Server log$OAM_HOME/oblix/log/oracle:oam:accessP1
OAM Audit log$OAM_HOME/oblix/log/obaudit.logoracle:oam:auditP1
OID / LDAP access log$ORACLE_HOME/ldap/log/oracle:oid:accessP2

Layer 4 — External-Facing EBS Modules

ModuleFilter PatternSource TypePriority
iSupplier Portal/OA_HTML/OA.jsp?OAFunc=ISUPPLIER*oracle:ebs:isupplier:accessP1
XML Gateway / B2BWLS log + $INST_TOP/logsoracle:ebs:xmlgwP1
Guest / anonymous sessionsFND_LOGINS (GUEST user extract)oracle:ebs:fnd:guestP1
iRecruitmentOHS access log (filtered by function)oracle:ebs:irecruitment:accessP2
Self-Service HR (SSHR)OHS access log (filtered)oracle:ebs:sshr:accessP2
iStore / QuotingOHS access log (filtered)oracle:ebs:istore:accessP2
XML Gateway is high-risk: B2B/EDI inbound payloads can arrive unauthenticated in some configurations. Monitor for abnormal payload sizes, unexpected source IPs, and calls outside business hours.

Layer 5 — DMZ Network & Infrastructure

LogSourceSource TypePriority
Internal firewall (FW2)FW2 syslog (DMZ → internal)network:fw:internalP1
IDS / IPS alerts (DMZ)Snort/Suricata/Sourcefiresecurity:ids:dmzP1
SSL certificate expiry alertsCert manager / cron checksecurity:cert:expiryP1
DMZ switch logCisco/Juniper syslognetwork:switch:dmzP2
Reverse DNS failure logDNS server lognetwork:dns:dmzP2
NTP sync (DMZ hosts)chrony/ntpd loginfra:ntp:dmzP1

Layer 6 — DMZ OS & Bastion Host

LogPathSource TypePriority
DMZ host syslog/var/adm/messages (DMZ Solaris)solaris:syslog:dmzP1
DMZ auth log/var/log/authlog (DMZ Solaris)solaris:auth:dmzP1
Bastion / jump host auth/var/log/authlog (bastion)security:bastion:authP1
Bastion session recording/var/log/bastion/sessions/ (CyberArk/Teleport)security:bastion:sessionP1
DMZ cron log/var/cron/log (DMZ)solaris:cron:dmzP2
DMZ BSM audit/var/audit/ (DMZ)solaris:bsm:dmzP2

11

Splunk inputs.conf Reference

Representative inputs.conf snippets for both internal and DMZ Universal Forwarder deployments on Solaris 11.4.

inputs.conf — Internal Tier (Solaris UF)
# DB Alert Log
[monitor://$ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log]
index = oracle_db
sourcetype = oracle:db:alert
host = EBSPROD_DB01

# OHS Access Log
[monitor://$INST_TOP/logs/ora/10.1.3/Apache/access_log]
index = ebs_app
sourcetype = oracle:ebs:ohs:access
host = EBSPROD_APP01

# WLS Managed Server
[monitor://$DOMAIN_HOME/servers/*/logs/*.log]
index = ebs_app
sourcetype = oracle:wls:managed

# Concurrent Manager
[monitor://$APPLCSF/$APPLLOG/*]
index = ebs_batch
sourcetype = oracle:ebs:cm:manager

# ADOP Patch Logs
[monitor://$NE_BASE/EBSapps/patch/*/log/*.log]
index = ebs_change
sourcetype = oracle:ebs:adop

# Solaris OS Logs
[monitor:///var/adm/messages]
index = os_internal
sourcetype = solaris:syslog

[monitor:///var/log/authlog]
index = os_security
sourcetype = solaris:auth

# Custom Automation
[monitor:///var/log/mount_monitor.log]
index = custom_ops
sourcetype = custom:mount_monitor
inputs.conf — DMZ Tier (Solaris UF)
# DMZ OHS — separate index from internal OHS
[monitor://$INST_TOP/logs/ora/10.1.3/Apache/access_log]
index = ebs_dmz
sourcetype = oracle:ebs:dmz:ohs:access
host = EBSDMZ_OHS01

# SiteMinder Web Agent
[monitor://$NETE_WA_ROOT/webagent.log]
index = ebs_security
sourcetype = oracle:siteminder:webagent

# SiteMinder Audit
[monitor://$SMPS_HOME/log/smaccess.log]
index = ebs_security
sourcetype = oracle:siteminder:audit

# OAM WebGate (DMZ)
[monitor://$WEBGATE_HOME/oblix/log/*]
index = ebs_security
sourcetype = oracle:oam:webgate:dmz

# DMZ OS Logs
[monitor:///var/adm/messages]
index = os_dmz
sourcetype = solaris:syslog:dmz
host = EBSDMZ_HOST01

[monitor:///var/log/authlog]
index = os_dmz
sourcetype = solaris:auth:dmz
12

SPL Correlation Queries

Production-ready SPL searches for the most common cross-layer alert scenarios covering internal, DMZ, and security tiers.

Detect external IP bypassing WAF
index=ebs_dmz sourcetype=oracle:ebs:dmz:ohs:access
| where NOT src_ip IN ("<<WAF_IP_LIST>>")
| stats count by src_ip, uri
| where count > 5
FCC 500 error detection (SiteMinder)
index=ebs_security sourcetype=oracle:siteminder:webagent
  (fcc OR redirect) (error OR fail OR 500)
| timechart span=5m count by host
Brute force on extranet login
index=ebs_security sourcetype=oracle:siteminder:audit action=REJECT
| bucket _time span=5m
| stats count by src_ip, _time
| where count > 10
ORA- errors in DB alert log (P1 alert)
index=oracle_db sourcetype=oracle:db:alert
  (ORA-600 OR ORA-7445 OR ORA-4031 OR ORA-1555)
| rex field=_raw "(?P<ora_error>ORA-\d+)"
| stats count by ora_error, host
| sort -count
SSL certificate expiry < 30 days
index=infra sourcetype=security:cert:expiry
| where days_to_expiry < 30
| table cn, expiry_date, host, days_to_expiry
| sort days_to_expiry
ADOP patch applied outside change window
index=ebs_change sourcetype=oracle:ebs:adop:apply
| eval hour=strftime(_time,"%H")
| where hour < 22 AND hour > 6
| stats count by host, _time, patch_id
CM batch job failure rate (QCT production)
index=ebs_batch sourcetype=oracle:ebs:cm:request:log
  completion_status=ERROR
| timechart span=1h count as failures
| where failures > 5

Sunday, February 15, 2026

DASH

 Option Explicit


Sub APPS_DBA_Dashboard_Quick_Refresh_All()

    

    ' ------------------------------------------------------------

    ' Consolidated macro for APPS DBA Team Lead dashboard

    ' Refresh + Color + Age calculation + Weekly summary

    ' Mohammed - Feb 2025 / 2026 version

    ' ------------------------------------------------------------

    

    Dim ws As Worksheet

    Dim rng As Range, cell As Range

    Dim lastRow As Long, i As Long, outRow As Long

    Dim dueDate As Date

    

    Application.ScreenUpdating = False

    Application.Calculation = xlCalculationManual

    Application.EnableEvents = False

    

    On Error GoTo Finish

    

    ' 1. Refresh all data connections, pivots, formulas

    ThisWorkbook.RefreshAll

    ThisWorkbook.Worksheets("Dashboard").Calculate

    

    ' 2. Color status cells in main tracking sheets

    Dim statusSheets As Variant

    statusSheets = Array("ServiceNow", "RFC", "Release Tasks", "OEM", "Escalations", "Performance", "FlexDeploy")

    

    Dim s As Variant

    For Each s In statusSheets

        On Error Resume Next

        Set ws = ThisWorkbook.Worksheets(s)

        On Error GoTo Finish

        

        If Not ws Is Nothing Then

            ' Try to find status column dynamically (looks for words like Status, State, Result)

            Dim statusCol As Long

            statusCol = 0

            For i = 1 To 26

                If InStr(1, LCase(ws.Cells(1, i).Value), "status") > 0 Or _

                   InStr(1, LCase(ws.Cells(1, i).Value), "state") > 0 Or _

                   InStr(1, LCase(ws.Cells(1, i).Value), "result") > 0 Then

                    statusCol = i

                    Exit For

                End If

            Next i

            

            If statusCol > 0 Then

                lastRow = ws.Cells(ws.Rows.Count, statusCol).End(xlUp).Row

                If lastRow >= 2 Then

                    Set rng = ws.Range(ws.Cells(2, statusCol), ws.Cells(lastRow, statusCol))

                    

                    For Each cell In rng

                        Select Case LCase(Trim(cell.Value))

                            Case "open", "in progress", "wip", "not started", "pending"

                                cell.Interior.Color = RGB(255, 192, 0)      ' Orange

                            Case "critical", "high", "urgent", "blocked"

                                cell.Interior.Color = RGB(192, 0, 0)        ' Red

                            Case "closed", "completed", "done", "success", "passed", "resolved"

                                cell.Interior.Color = RGB(0, 176, 80)       ' Green

                            Case "failed", "error", "rolled back", "rejected"

                                cell.Interior.Color = RGB(255, 0, 0)        ' Bright red

                            Case Else

                                cell.Interior.ColorIndex = xlNone

                        End Select

                    Next cell

                End If

            End If

        End If

    Next s

    

    ' 3. Calculate Age (days open) - ServiceNow & Escalations

    Dim ageSheets As Variant

    ageSheets = Array("ServiceNow", "Escalations")

    

    For Each s In ageSheets

        On Error Resume Next

        Set ws = ThisWorkbook.Worksheets(s)

        On Error GoTo Finish

        

        If Not ws Is Nothing Then

            Dim dateCol As Long, ageCol As Long

            dateCol = 0: ageCol = 0

            

            For i = 1 To 30

                Dim hdr As String: hdr = LCase(ws.Cells(1, i).Value)

                If InStr(hdr, "open") > 0 Or InStr(hdr, "created") > 0 Or InStr(hdr, "raised") > 0 Then

                    dateCol = i

                End If

                If InStr(hdr, "age") > 0 Or InStr(hdr, "days") > 0 Then

                    ageCol = i

                End If

            Next i

            

            If dateCol > 0 And ageCol = 0 Then

                ' If no Age column → create one at the end

                ageCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column + 1

                ws.Cells(1, ageCol).Value = "Age (days)"

                ws.Cells(1, ageCol).Font.Bold = True

            End If

            

            If dateCol > 0 And ageCol > 0 Then

                lastRow = ws.Cells(ws.Rows.Count, dateCol).End(xlUp).Row

                For i = 2 To lastRow

                    If IsDate(ws.Cells(i, dateCol).Value) Then

                        ws.Cells(i, ageCol).Value = DateDiff("d", ws.Cells(i, dateCol).Value, Date)

                        

                        Select Case ws.Cells(i, ageCol).Value

                            Case Is >= 30:  ws.Cells(i, ageCol).Interior.Color = RGB(192, 0, 0)

                            Case Is >= 14:  ws.Cells(i, ageCol).Interior.Color = RGB(255, 192, 0)

                            Case Else:      ws.Cells(i, ageCol).Interior.ColorIndex = xlNone

                        End Select

                    End If

                Next i

            End If

        End If

    Next s

    

    ' 4. Quick weekly urgent summary → Plan sheet

    On Error Resume Next

    Set ws = ThisWorkbook.Worksheets("ToDo")

    Dim wsPlan As Worksheet

    Set wsPlan = ThisWorkbook.Worksheets("Plan")

    On Error GoTo Finish

    

    If Not ws Is Nothing And Not wsPlan Is Nothing Then

        wsPlan.Range("A8:F" & wsPlan.Rows.Count).ClearContents

        

        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

        outRow = 10

        

        wsPlan.Cells(8, 1).Value = "Weekly Urgent Items (" & Format(Date, "dd-mmm-yyyy") & ")"

        wsPlan.Cells(8, 1).Font.Bold = True

        wsPlan.Cells(9, 1).Value = "Task":         wsPlan.Cells(9, 2).Value = "Prio": _

        wsPlan.Cells(9, 3).Value = "Owner":        wsPlan.Cells(9, 4).Value = "Due": _

        wsPlan.Cells(9, 5).Value = "Status":       wsPlan.Cells(9, 6).Value = "Age"

        

        For i = 2 To lastRow

            If ws.Cells(i, "D").Value <> "" Then   ' assuming Due Date in column D

                dueDate = ws.Cells(i, "D").Value

                If dueDate >= Date And dueDate <= Date + 7 Then

                    wsPlan.Cells(outRow, 1).Value = ws.Cells(i, "A").Value

                    wsPlan.Cells(outRow, 2).Value = ws.Cells(i, "B").Value

                    wsPlan.Cells(outRow, 3).Value = ws.Cells(i, "C").Value

                    wsPlan.Cells(outRow, 4).Value = dueDate

                    wsPlan.Cells(outRow, 5).Value = ws.Cells(i, "E").Value

                    

                    If wsPlan.Cells(outRow, 4).Value <= Date Then

                        wsPlan.Range("A" & outRow & ":F" & outRow).Interior.Color = RGB(255, 230, 230) ' light red = overdue

                    ElseIf wsPlan.Cells(outRow, 4).Value <= Date + 3 Then

                        wsPlan.Range("A" & outRow & ":F" & outRow).Interior.Color = RGB(255, 242, 204) ' light orange

                    End If

                    

                    outRow = outRow + 1

                End If

            End If

        Next i

        

        wsPlan.Range("A8:F" & outRow - 1).Borders.LineStyle = xlContinuous

        wsPlan.Columns("A:F").AutoFit

    End If

    

    ' 5. Final cleanup

    Dim finalSheets As Variant

    finalSheets = Array("Dashboard", "ServiceNow", "RFC", "Release Tasks", "Plan")

    For Each s In finalSheets

        On Error Resume Next

        ThisWorkbook.Worksheets(s).Columns("A:Z").AutoFit

        On Error GoTo Finish

    Next s


Finish:

    Application.ScreenUpdating = True

    Application.Calculation = xlCalculationAutomatic

    Application.EnableEvents = True

    

    If Err.Number <> 0 Then

        MsgBox "Finished with warning(s)." & vbNewLine & Err.Description, vbExclamation, "APPS DBA Refresh"

    Else

        MsgBox "Dashboard refreshed & colored." & vbNewLine & _

               "• Status colors updated" & vbNewLine & _

               "• Ages calculated" & vbNewLine & _

               "• Weekly urgent summary created", vbInformation, "APPS DBA Dashboard"

    End If

    

End Sub

Thursday, February 5, 2026

SSO Validation

#!/bin/bash
# ==============================================================================
# Script Name : sso_validation_post_clone.sh
# Description : Validates SSO Registration after EBS Environment Clone
# Author      : Minh
# Date        : Feb 05, 2026
# ==============================================================================

# 1. Environment Initialization
cd $HOME
if [ -f "./EBSapps.env" ]; then
    . ./EBSapps.env run
    echo "[$(date)] Environment sourced successfully."
else
    echo "[ERROR] EBSapps.env not found in $HOME. Exiting."
    exit 1
fi

# 2. Define Variables
LOG_DIR="$INST_TOP/logs/sso_post_clone"
mkdir -p $LOG_DIR
CHECK_LOG="$LOG_DIR/SSORegCheck_$(date +%Y%m%d_%H%M%S).log"

echo "----------------------------------------------------------"
echo "Starting SSO Registration Check..."
echo "Log File: $CHECK_LOG"
echo "----------------------------------------------------------"

# 3. Execute SSORegCheck
# Using -silent=yes to avoid interactive prompts during automation
perl $FND_TOP/bin/txkrun.pl \
-script=SSORegCheck \
-outdir=$LOG_DIR \
-silent=yes > $CHECK_LOG 2>&1

# 4. Success/Failure Logic
if [ $? -eq 0 ]; then
    echo "[SUCCESS] SSO Configuration is valid for $TWO_TASK."
    # Optional: Integration with your tracking tools
    # Example: Send success status to Jira/Datadog
else
    echo "[CRITICAL] SSO Validation Failed for $TWO_TASK!"
    echo "Please review the log: $CHECK_LOG"
    # You can trigger a PagerDuty alert here if this is a QCT/CORP env
    exit 1
fi

echo "----------------------------------------------------------"
echo "Validation Complete."

Note: Ensure you run this script as the applmgr user after the post-clone configuration is complete.

Monday, January 19, 2026

analysse

WITH stats_summary AS (

    SELECT 

        owner,

        COUNT(*) AS analyzed_tables,                  -- tables with any stats

        COUNT(CASE WHEN last_analyzed > SYSDATE - 2 

                   THEN 1 END) AS recent_tables,      -- tables analyzed in last 2 days

        MAX(last_analyzed) AS last_analyzed_max

    FROM all_tab_statistics

    WHERE last_analyzed IS NOT NULL

      AND owner NOT LIKE 'SYS%'

      AND owner NOT LIKE 'APEX%'

      AND owner NOT IN ('SYSTEM','OUTLN','DBSNMP','CTXSYS','MDSYS','XDB')  -- typical exclusions

    GROUP BY owner

),

total_tables_per_schema AS (

    SELECT 

        owner,

        COUNT(*) AS total_tables

    FROM all_tables

    WHERE owner NOT LIKE 'SYS%'

      AND owner NOT LIKE 'APEX%'

      AND owner NOT IN ('SYSTEM','OUTLN','DBSNMP','CTXSYS','MDSYS','XDB')

    GROUP BY owner

)

SELECT 

    s.owner                          AS schema_name,

    t.total_tables,

    s.analyzed_tables,

    s.recent_tables,

    ROUND(s.analyzed_tables * 100 / NULLIF(t.total_tables, 0), 1) AS pct_analyzed_overall,

    ROUND(s.recent_tables  * 100 / NULLIF(t.total_tables, 0), 1) AS pct_analyzed_recent,

    TO_CHAR(s.last_analyzed_max, 'DD-MON-YYYY HH24:MI:SS') AS last_analyzed_max

FROM stats_summary s

JOIN total_tables_per_schema t ON s.owner = t.owner

WHERE s.last_analyzed_max > SYSDATE - 2          -- only schemas touched in last 2 days

ORDER BY s.last_analyzed_max DESC;

prmp

 You are an expert Oracle database performance analyst with deep knowledge of Automatic Workload Repository (AWR) reports. I will provide you with the content of an AWR report (extracted from a PDF or text file). Your task is to thoroughly analyze the report, identify any performance issues or bottlenecks, and provide step-by-step debugging recommendations to resolve them.

First, parse the key sections of the AWR report, including but not limited to:

  • Report Header (DB Name, Instance, Snapshot Interval, Elapsed Time, DB Time)
  • Load Profile (e.g., Parses, Executes, Transactions per second)
  • Instance Efficiency Percentages (e.g., Buffer Hit %, Library Hit %, Soft Parse %)
  • Top Timed Foreground Events (e.g., CPU time, db file sequential read, log file sync)
  • Wait Class Breakdown
  • SQL Statistics (Top SQL by Elapsed Time, CPU Time, Buffer Gets, Executions)
  • Instance Activity Stats (e.g., user commits, redo size)
  • Tablespace I/O Stats
  • Advisory Statistics (e.g., Buffer Cache, PGA, SGA advice)
  • Any RAC-specific sections if applicable (e.g., Global Cache stats)

For each relevant section:

  1. Summarize the key metrics and highlight any abnormalities (e.g., high wait times >10% of DB time, low hit ratios <90%, excessive parses).
  2. Identify potential issues, such as:
    • CPU bottlenecks (high CPU usage without corresponding waits).
    • I/O issues (slow reads/writes, high physical I/O).
    • Locking/contention problems (enq: waits, latch misses).
    • SQL inefficiencies (poorly optimized queries, missing indexes).
    • Memory shortages (frequent swapping, undersized SGA/PGA).
    • Network or log-related delays.
    • Overall workload spikes during the snapshot period.
  3. Provide root cause analysis based on correlations across sections (e.g., link high waits to specific SQL IDs).
  4. Suggest actionable debugging steps and fixes, prioritized by impact:
    • Query tuning (e.g., add indexes, rewrite SQL, use hints).
    • Configuration changes (e.g., increase buffer cache, adjust parameters like cursor_sharing).
    • Monitoring tools (e.g., run ADDM, ASH reports, or trace specific sessions).
    • Hardware/resource upgrades if indicated.
    • Best practices for prevention.

Output your analysis in a structured format:

  • Summary: High-level overview of the report's health (e.g., good/fair/poor performance).
  • Key Issues: Bullet list of top 5-10 problems with severity (low/medium/high).
  • Detailed Analysis: Section-by-section breakdown.
  • Recommendations: Numbered list of steps to debug and resolve, with expected outcomes.
  • Follow-up Questions: Any clarifying questions for more context (e.g., DB version, workload type).

Be objective, data-driven, and use evidence from the report. If the report is incomplete or unclear, note that and request more details.

Wednesday, January 14, 2026

USERS

SELECT sid, serial#, username, osuser, program, sql_id, event, wait_time, seconds_in_wait

FROM v$session

WHERE username IN ('APPS', 'APPLSYSPUB')  -- or the user logging in

  AND status = 'ACTIVE'

  AND program LIKE '%JDBC%'  -- AccessGate uses JDBC

ORDER BY seconds_in_wait DESC;

Wednesday, December 24, 2025

hard

 Existing,Recommended,Modified

Root login enabled via SSH,Disable direct root SSH login and enforce sudo-based access,

X server installed on DB server,Remove X server from DB and App servers,

Oracle user allowed direct remote login,Disallow direct remote login to oracle user,

Listener has EXTPROC in main listener,Separate EXTPROC into dedicated listener,

EXTPROC listener running as oracle user,Run EXTPROC listener as unprivileged OS user,

ADMIN_RESTRICTIONS not enabled on listener,Set ADMIN_RESTRICTIONS_<listener>=ON,

Listener logging disabled or minimal,Enable listener logging with LOG_STATUS=ON,

XDB service enabled in database,Disable XDB and remove XDB dispatcher,

Default database accounts not reviewed,Lock or change passwords for default accounts,

REMOTE_OS_AUTHENT parameter enabled,Set REMOTE_OS_AUTHENT=FALSE,

Unused database links exist,Remove unused database links,

Database auditing disabled,Enable database auditing and audit trail retention,

APPL_TOP permissions too permissive,Restrict APPL_TOP permissions to applmgr only,

trusted.conf allows open access,Restrict admin URLs to trusted IPs only,

s_admin_ui_access_nodes not configured,Configure trusted admin IPs via AutoConfig,

Allowed Resources feature not configured,Enable and configure Allowed Resources allowlist,

Allowed Redirects not restricted,Configure allowed_redirects.conf and custom include file,

Allow Unrestricted Redirects profile enabled,Set Allow Unrestricted Redirects to No,

Weak TLS or SSL protocols enabled,Enforce TLS 1.2 and disable weak protocols,

Weak cipher suites enabled,Disable RC4 and ciphers below 128-bit,

HTTP security headers not enforced,Enable X-Frame-Options SAMEORIGIN and nosniff,

Guest user enabled unnecessarily,Disable Guest user access where not required,

Unlimited session timeout configured,Set ICX_SESSION_TIMEOUT to 30 minutes,

Weak password length allowed,Set SIGNON_PASSWORD_LENGTH to minimum 8,

Password reuse allowed,Set SIGNON_PASSWORD_NO_REUSE to 180 days,

Case-insensitive passwords allowed,Enable case-sensitive passwords,

High failed login attempts allowed,Set SIGNON_PASSWORD_FAILURE_LIMIT to 5,

Concurrent program credentials exposed,Use ENCRYPT option for HOST executables,

File upload type unrestricted,Restrict file types using fnd_mime_types,

Unlimited file upload size allowed,Configure UPLOAD_FILE_SIZE_LIMIT,

AntiSamy HTML filter disabled,Enable AntiSamy HTML filter,

Workflow mailer access key enabled,Set WF_MAILER SEND_ACCESS_KEY to No,

Secure Configuration Console not used,Run SCC and remediate HIGH severity findings,

Audit trail not enabled for sensitive tables,Enable Audit Trail on critical tables,

Proxy user delegation unrestricted,Restrict proxy access and enable proxy auditing,

Desktop Java version outdated,Upgrade to certified Java version,

Browser cache storing sensitive data,Enable FND_SEC_FILESTREAM_NOSTORE=SECURE