tr -d '\r' < pre_clone_preserve.sh > tmp && mv tmp pre_clone_preserve.sh && chmod +x pre_clone_preserve.sh && echo "Fixed successfully"
Oracle Apps DBA stuff
Thursday, June 25, 2026
Friday, June 19, 2026
PARAMETERES
COL con_name FOR A20
COL parameter_name FOR A40
COL value FOR A80
SELECT c.name con_name,
p.name parameter_name,
p.value
FROM v$parameter p,
v$containers c
WHERE p.con_id=c.con_id
AND p.name IN (
'db_name',
'db_unique_name',
'service_names',
'utl_file_dir',
'local_listener',
'remote_listener',
'db_create_file_dest',
'log_archive_dest_1'
)
ORDER BY c.name,p.name;
Sunday, May 17, 2026
Oracle EBS 12.2 – Patch File System Validation Checklist
Oracle EBS 12.2 – Patch File System Validation Checklist
1. Take Backup of Critical Files
Take backup of the following files from all RUN/PATCH nodes and keep them in a shared NAS mount location for easy recovery.
a) Context Files
Backup all context XML files.
Example:
$INST_TOP/appl/admin/*.xml
b) Environment Files
$APPL_TOP/*.env
c) WebLogic Domain Configuration
$FMW_HOME/user_projects/domains/EBS_domain_<SID>/config/config.xml
2. Copy Patch to Shared Mount Point
Copy the required patch files to the extranet/shared mount location.
Example:
/nas/ebs_patches/
3. Run ADOP Validation
Execute validation before starting the patching cycle.
adop phase=validate
Ensure validation completes successfully without errors.
4. Validate Admin Server and Node Manager
Connect to PATCH file system and validate startup/shutdown of:
- Admin Server (Primary Node)
- Node Manager (All Nodes)
Source Patch Environment
cd ~
. ./EBSapps.env patch
Admin Server Start/Stop Validation
$ADMIN_SCRIPTS_HOME/adadminsrvctl.sh start
$ADMIN_SCRIPTS_HOME/adadminsrvctl.sh stop
Node Manager Start/Stop Validation
$ADMIN_SCRIPTS_HOME/adnodemgrctl.sh start
$ADMIN_SCRIPTS_HOME/adnodemgrctl.sh stop
5. Ensure No Patch File System Processes Are Running
Verify no residual PATCH filesystem processes are active across application nodes.
Example:
ps -ef | grep fs2
If any unwanted processes exist, stop them cleanly before proceeding.
6. Validate Node Manager Port Configuration
Ensure:
- RUN filesystem ports are identical across all RUN nodes.
- PATCH filesystem uses a different Node Manager port.
Verify Node Manager Listen Port
grep -i listen-port \
$FMW_HOME/user_projects/domains/EBS_domain_<SID>/config/config.xml
Extract Port Number
grep -i listen-port \
$FMW_HOME/user_projects/domains/EBS_domain_<SID>/config/config.xml \
| sed -n 1p \
| cut -d'>' -f2 \
| cut -d'<' -f1
Recommended DBA Validation Checks
Verify Node Manager Process
ps -ef | grep NodeManager
Check Listening Ports
netstat -an | grep LISTEN | grep <PORT>
Verify WebLogic Admin Connectivity
curl -I http://hostname:port
Important Best Practices
- Always validate PATCH filesystem before
adop prepare. - Ensure no orphan Java/WLS processes exist.
- Maintain backup of
config.xmlbefore changes. - Validate SSH equivalency between nodes.
- Confirm shared filesystem mount availability on all nodes.
- Check free space in:
$PATCH_TOP$NE_BASE$COMMON_TOP
Typical Real-Time Use Cases
This checklist is commonly used before:
adop phase=prepareadop fs_clone- WebLogic recovery
- Node Manager troubleshooting
- Dual filesystem synchronization issues
- Patch filesystem corruption validation
Generic Oracle EBS JAR Signing Certificate Renewal Runbook
Generic Oracle EBS JAR Signing Certificate Renewal Runbook
Objective
This document provides generic steps to renew or replace JAR signing certificates in Oracle E-Business Suite environments.
Applicable for:
- Oracle EBS 12.1 / 12.2
- Internal and Extranet environments
- Certificate renewal activities
- Java/JAR signing maintenance
1. Backup Existing Files
Navigate to Admin Directory
cd $NE_BASE/EBSapps/appl/ad/admin
Backup Existing Certificate Files
cp adkeystore.dat adkeystore.dat_bkp_$(date +%Y%m%d)
cp adsign.txt adsign.txt_bkp_$(date +%Y%m%d)
cp appltop.cer appltop.cer_bkp_$(date +%Y%m%d)
cp jarsecurefile jarsecurefile_bkp_$(date +%Y%m%d)
2. Backup Java Security cacerts
cd $OA_JRE_TOP/lib/security
cp cacerts cacerts_bkp_$(date +%Y%m%d)
3. Backup Existing Signed JAR
cd $OA_JAVA
cp GetClientInfo.jar GetClientInfo.jar_sign_bkp_$(date +%Y%m%d)
4. Copy New Certificate Files
Navigate to Admin Directory
cd $NE_BASE/EBSapps/appl/ad/admin
Copy New Signing Files
cp /path_to_new_certificates/adkeystore* .
cp /path_to_new_certificates/adsign.txt .
Copy Updated cacerts
cd $OA_JRE_TOP/lib/security
cp /path_to_new_certificates/cacerts .
5. Replace Signed JAR File
cd $OA_JAVA
cp /path_to_new_certificates/GetClientInfo.jar.sig .
6. Extranet Environment Steps (If Applicable)
Backup Existing Extranet Files
cd $NE_BASE/EBSapps/appl/ad/admin
cp adkeystore.dat adkeystore.dat_extranet_bkp
cp adsign.txt adsign.txt_extranet_bkp
cp appltop.cer appltop.cer_extranet_bkp
Backup Extranet cacerts
cd $OA_JRE_TOP/lib/security
cp cacerts cacerts_extranet_bkp
7. Copy New Files to Extranet Environment
cd $NE_BASE/EBSapps/appl/ad/admin
cp /path_to_new_certificates/adkeystore* .
cp /path_to_new_certificates/adsign.txt .
Copy cacerts
cd $OA_JRE_TOP/lib/security
cp /path_to_new_certificates/cacerts .
8. Stop Oracle EBS Application Services
sh $ADMIN_SCRIPTS_HOME/adstpall.sh apps/<apps_password> -mode=allnodes
9. Regenerate JAR Files
Run ADADMIN
adadmin
Select:
Maintain Applications Files Menu
→
Generate Product JAR files
Important Prompt
Do you wish to force regeneration of all jar files?
Answer:
Yes
10. Compile JSP Files
perl $FND_TOP/patch/115/bin/ojspCompile.pl --compile --flush -p 2
11. Validate New Certificate
Navigate to JAR Directory
cd $FND_TOP/java/jar
Verify JAR Signature
jarsigner -verify -verbose -certs fndforms.jar | grep -i sign
Validate:
- New certificate expiry date
- Signer information
- No verification errors
12. Start Oracle EBS Services
sh $ADMIN_SCRIPTS_HOME/adstrtal.sh apps/<apps_password> -mode=allnodes
13. Post Validation Checks
Verify Services
sh $ADMIN_SCRIPTS_HOME/adstrtal.sh status
Validate Forms Launch
Check:
- Oracle Forms open successfully
- No certificate warning
- No Java security popup
- OAF pages working properly
14. Browser & Java Cache Cleanup
Recommended on Client Machines
- Clear Java Cache
- Clear Browser Cache
- Restart Browser
- Relaunch EBS
15. Rollback Plan
Restore Old Files
cp *_bkp_* original_filename
Restore cacerts
cp cacerts_bkp_* cacerts
Restart Services
sh $ADMIN_SCRIPTS_HOME/adstrtal.sh apps/<apps_password> -mode=allnodes
Best Practices
| Area | Recommendation |
|---|---|
| Backup | Always backup before replacement |
| Testing | Validate in TEST/UAT first |
| Downtime | Perform during maintenance window |
| Validation | Verify Forms and OAF pages |
| Rollback | Keep rollback ready |
| Cache | Clear Java/browser cache |
| Security | Verify certificate expiry before deployment |
Common Troubleshooting
| Issue | Possible Cause | Action |
|---|---|---|
| Forms not launching | Invalid signing | Verify jarsigner output |
| Certificate warning | Old cache | Clear Java cache |
| OACORE issues | Incomplete restart | Restart services |
| JSP errors | JSP cache stale | Run ojspCompile |
| JAR mismatch | Partial generation | Force regenerate JARs |
Final Validation Checklist
| Validation | Status |
|---|---|
| Backup completed | ☐ |
| Certificates copied | ☐ |
| cacerts updated | ☐ |
| Services stopped | ☐ |
| JARs regenerated | ☐ |
| JSP compile completed | ☐ |
| jarsigner validation successful | ☐ |
| Services started | ☐ |
| Forms tested | ☐ |
| No certificate warnings | ☐ |
Saturday, May 16, 2026
Oracle SQL Plan Migration Runbook
Oracle SQL Plan Migration Runbook
Objective
This runbook explains how to move a good execution plan from a source environment (Source Environment) to a Production environment using:
- SQL Tuning Set (STS)
- Data Pump (expdp/impdp)
- SQL Plan Management (SPM)
This approach is commonly used by Oracle Apps DBAs during:
- SQL Plan Regression
- Month-End Performance Issues
- Concurrent Program Slow Performance
- Optimizer Plan Changes after Statistics Gathering
- Oracle EBS 12.2 Performance Stabilization
High-Level Flow
Source Environment Steps (Source Environment)
Step 1: Identify the Good SQL Plan
Find the SQL_ID and PLAN_HASH_VALUE of the good plan.
OR
Step 2: Create Empty SQL Tuning Set (STS)
Step 3: Load SQL Information into STS
Step 4: Verify SQL Tuning Set Contents
Formatting commands:
Query STS contents:
Detailed verification:
Step 5: Create Staging Table
Note: Table names and parameters are case-sensitive.
Step 6: Pack STS into Staging Table
Step 7: Create Oracle Directory Object
Step 8: Export Staging Table using Data Pump
Step 9: Transfer Dump File to Production
Transfer the dump file using:
- SCP
- FTP
- SFTP
Example:
Target Environment Steps (Production)
Step 10: Import the Dump File
Step 11: Unpack SQL Tuning Set
Step 12: Load Plan from STS into SQL Plan Baseline
Step 13: Purge Existing SQL from Shared Pool
This forces Oracle to re-parse and pick the new SQL Plan Baseline.
Generate purge command:
Execute generated command:
Step 14: Alternative Method - Load from Cursor Cache
Validation Queries
Check SQL Baselines
Verify Active Plan
Check if Baseline is Used
Oracle Apps DBA Production Checklist
| Check | Status |
|---|---|
| Good SQL_ID identified | ☐ |
| Correct PLAN_HASH_VALUE captured | ☐ |
| STS created successfully | ☐ |
| SQL loaded into STS | ☐ |
| Staging table created | ☐ |
| STS packed successfully | ☐ |
| Data Pump export completed | ☐ |
| Dump transferred securely | ☐ |
| Import completed in Production | ☐ |
| STS unpacked successfully | ☐ |
| SQL Plan Baseline loaded | ☐ |
| Old cursor purged | ☐ |
| Concurrent request rerun | ☐ |
| Improved performance validated | ☐ |
Real-Time Oracle EBS Scenario
Problem
A month-end concurrent request that normally completes in 2 minutes suddenly started taking 4 hours after statistics gathering.
Root Cause
Optimizer selected a new bad execution plan with:
- Full Table Scan
- High Logical Reads
- Excessive Nested Loop Operations
- Large TEMP Usage
Solution
DBA identified a good historical plan from Source Environment and migrated it to Production using:
- SQL Tuning Set (STS)
- SQL Plan Baseline (SPM)
Result
| Before | After |
| Runtime: 4 Hours | Runtime: 2 Minutes |
| TEMP Spike | Stable TEMP |
| CPU High | CPU Normal |
| Business Delay | Business Success |
Important Notes
Best Practices
- Always validate the plan in lower environments first.
- Never purge shared pool aggressively in peak production hours.
- Take business approval before rerunning concurrent requests.
- Verify plan stability after stats gathering.
- Monitor AWR and ASH after implementation.
Important DBA Views
| View | Purpose |
| V$SQL | Active SQL details |
| V$SQLAREA | Aggregated SQL statistics |
| DBA_SQLSET | SQL Tuning Sets |
| DBA_SQL_PLAN_BASELINES | SQL Baselines |
| V$SQL_MONITOR | Real-time SQL monitoring |
| DBA_HIST_SQLSTAT | Historical SQL statistics |
| DBA_HIST_ACTIVE_SESS_HISTORY | ASH performance analysis |
Conclusion
Using SQL Plan Management (SPM) and SQL Tuning Sets (STS) is one of the safest methods to stabilize SQL performance in Oracle EBS 12.2 Production environments.
This approach helps Oracle Apps DBAs:
- Avoid risky code changes
- Restore performance quickly
- Reduce month-end failures
- Stabilize execution plans
- Improve business confidence
It is a critical real-world DBA skill for handling production SQL regressions.
Oppertunity Ta
### 1. Opportunity Tracker Table
Design a clean, professional Markdown table (and also suggest an Excel/Google Sheet format) with these exact columns:
- Opportunity ID (e.g., OPP-001) - Company / Client - Project Name - Position (e.g., Oracle Apps DBA – Application & Infra Operations) - Location (City & Country) - Recruiter / Vendor Name & Contact - Application Date - Current Status (Applied | Screening | Interview | Offer | Rejected | On Hold | Follow-up Needed) - Last Follow-up Date - Next Action Due Date - Priority (High / Medium / Low) - Salary / Package (if known) - Key Notes / Remarks - Link to JD / Email Thread
Friday, May 15, 2026
plan migration
Oracle SQL Plan Migration Runbook
Objective
This runbook explains how to move a good execution plan from a source environment (Source Environment) to a Production environment using:
- SQL Tuning Set (STS)
- Data Pump (expdp/impdp)
- SQL Plan Management (SPM)
This approach is commonly used by Oracle Apps DBAs during:
- SQL Plan Regression
- Month-End Performance Issues
- Concurrent Program Slow Performance
- Optimizer Plan Changes after Statistics Gathering
- Oracle EBS 12.2 Performance Stabilization
High-Level Flow
Identify Good Plan
↓
Create SQL Tuning Set (STS)
↓
Load Good SQL into STS
↓
Create STS Staging Table
↓
Export STS Table using Data Pump
↓
Transfer Dump File to Production
↓
Import STS Table into Production
↓
Unpack STS
↓
Load Plan into SQL Plan Baseline
↓
Purge Old Cursor from Shared Pool
↓
Re-execute SQL / Concurrent Program
↓
Validate Improved Execution Plan
Source Environment Steps (Source Environment)
Step 1: Identify the Good SQL Plan
Find the SQL_ID and PLAN_HASH_VALUE of the good plan.
SELECT sql_id,
plan_hash_value
FROM v$sqlarea
WHERE sql_id IN ('f9k42ab71mn8q');
OR
SELECT sql_id,
plan_hash_value
FROM v$sql
WHERE sql_id IN ('f9k42ab71mn8q');
Step 2: Create Empty SQL Tuning Set (STS)
BEGIN
DBMS_SQLTUNE.CREATE_SQLSET(
sqlset_name => 'f9k42ab71mn8q_STS',
description => 'STS to move better plan to Production');
END;
/
Step 3: Load SQL Information into STS
DECLARE
s_sqlarea_cursor DBMS_SQLTUNE.SQLSET_CURSOR;
BEGIN
OPEN s_sqlarea_cursor FOR
SELECT VALUE(p)
FROM TABLE(
DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
'sql_id = ''f9k42ab71mn8q''
AND plan_hash_value = 1847263512')) p;
DBMS_SQLTUNE.LOAD_SQLSET(
sqlset_name => 'f9k42ab71mn8q_STS',
populate_cursor => s_sqlarea_cursor);
END;
/
Step 4: Verify SQL Tuning Set Contents
SELECT name,
statement_count,
description
FROM dba_sqlset;
Formatting commands:
COLUMN sql_text FORMAT a30
COLUMN sch FORMAT a3
COLUMN elapsed FORMAT 999999999
Query STS contents:
SELECT sql_id,
parsing_schema_name AS "SCH",
sql_text,
elapsed_time AS "ELAPSED",
buffer_gets
FROM TABLE(
DBMS_SQLTUNE.SELECT_SQLSET('f9k42ab71mn8q_STS'));
Detailed verification:
SELECT *
FROM TABLE(
DBMS_SQLTUNE.SELECT_SQLSET('f9k42ab71mn8q_STS'));
Step 5: Create Staging Table
Note: Table names and parameters are case-sensitive.
EXEC DBMS_SQLTUNE.CREATE_STGTAB_SQLSET(
table_name => 'TEST');
Step 6: Pack STS into Staging Table
BEGIN
DBMS_SQLTUNE.PACK_STGTAB_SQLSET(
sqlset_name => 'f9k42ab71mn8q_STS',
sqlset_owner => 'SYSTEM',
staging_table_name => 'TEST',
staging_schema_owner=> 'SYSTEM');
END;
/
Step 7: Create Oracle Directory Object
CREATE DIRECTORY TEST AS
'/opt/mis/ebs_backup_lv/backup_1/EBS_SQLSET_BACKUP';
Step 8: Export Staging Table using Data Pump
expdp system DIRECTORY=TEST \
DUMPFILE=f9k42ab71mn8q_STS.dmp \
TABLES=TEST
Step 9: Transfer Dump File to Production
Transfer the dump file using:
- SCP
- FTP
- SFTP
Example:
scp f9k42ab71mn8q_STS.dmp oracle@targetserver:/backup
Target Environment Steps (Production)
Step 10: Import the Dump File
impdp system DIRECTORY=TEST \
DUMPFILE=f9k42ab71mn8q_STS.dmp \
TABLES=TEST
Step 11: Unpack SQL Tuning Set
BEGIN
DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET(
sqlset_name => '%',
sqlset_owner => 'SYSTEM',
replace => TRUE,
staging_table_name => 'TEST',
staging_schema_owner => 'SYSTEM');
END;
/
Step 12: Load Plan from STS into SQL Plan Baseline
VARIABLE v_plan_cnt NUMBER
EXECUTE :v_plan_cnt := DBMS_SPM.LOAD_PLANS_FROM_SQLSET(
sqlset_name => 'f9k42ab71mn8q_STS',
sqlset_owner => 'SYSTEM',
basic_filter =>
'sql_id = ''f9k42ab71mn8q''
AND plan_hash_value = 1847263512');
Step 13: Purge Existing SQL from Shared Pool
This forces Oracle to re-parse and pick the new SQL Plan Baseline.
Generate purge command:
SELECT 'exec DBMS_SHARED_POOL.PURGE('''
|| ADDRESS || ',' || HASH_VALUE || ''',''C'');'
FROM v$sqlarea
WHERE sql_id IN ('f9k42ab71mn8q');
Execute generated command:
EXEC DBMS_SHARED_POOL.PURGE(
'0000001006B396C8,2113289046',
'C');
Step 14: Alternative Method - Load from Cursor Cache
DECLARE
i NATURAL;
BEGIN
i := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(
'f9k42ab71mn8q',
1847263512);
END;
/
Validation Queries
Check SQL Baselines
SELECT sql_handle,
plan_name,
enabled,
accepted,
fixed
FROM dba_sql_plan_baselines
WHERE signature IN (
SELECT exact_matching_signature
FROM v$sql
WHERE sql_id='f9k42ab71mn8q');
Verify Active Plan
SELECT sql_id,
child_number,
plan_hash_value,
executions,
elapsed_time
FROM v$sql
WHERE sql_id='f9k42ab71mn8q';
Check if Baseline is Used
SELECT sql_id,
sql_plan_baseline,
plan_hash_value
FROM v$sql
WHERE sql_id='f9k42ab71mn8q';
Oracle Apps DBA Production Checklist
| Check | Status |
|---|---|
| Good SQL_ID identified | ☐ |
| Correct PLAN_HASH_VALUE captured | ☐ |
| STS created successfully | ☐ |
| SQL loaded into STS | ☐ |
| Staging table created | ☐ |
| STS packed successfully | ☐ |
| Data Pump export completed | ☐ |
| Dump transferred securely | ☐ |
| Import completed in Production | ☐ |
| STS unpacked successfully | ☐ |
| SQL Plan Baseline loaded | ☐ |
| Old cursor purged | ☐ |
| Concurrent request rerun | ☐ |
| Improved performance validated | ☐ |
Real-Time Oracle EBS Scenario
Problem
A month-end concurrent request that normally completes in 2 minutes suddenly started taking 4 hours after statistics gathering.
Root Cause
Optimizer selected a new bad execution plan with:
- Full Table Scan
- High Logical Reads
- Excessive Nested Loop Operations
- Large TEMP Usage
Solution
DBA identified a good historical plan from Source Environment and migrated it to Production using:
- SQL Tuning Set (STS)
- SQL Plan Baseline (SPM)
Result
| Before | After |
|---|---|
| Runtime: 4 Hours | Runtime: 2 Minutes |
| TEMP Spike | Stable TEMP |
| CPU High | CPU Normal |
| Business Delay | Business Success |
Important Notes
Best Practices
- Always validate the plan in lower environments first.
- Never purge shared pool aggressively in peak production hours.
- Take business approval before rerunning concurrent requests.
- Verify plan stability after stats gathering.
- Monitor AWR and ASH after implementation.
Important DBA Views
| View | Purpose |
|---|---|
| V$SQL | Active SQL details |
| V$SQLAREA | Aggregated SQL statistics |
| DBA_SQLSET | SQL Tuning Sets |
| DBA_SQL_PLAN_BASELINES | SQL Baselines |
| V$SQL_MONITOR | Real-time SQL monitoring |
| DBA_HIST_SQLSTAT | Historical SQL statistics |
| DBA_HIST_ACTIVE_SESS_HISTORY | ASH performance analysis |
Conclusion
Using SQL Plan Management (SPM) and SQL Tuning Sets (STS) is one of the safest methods to stabilize SQL performance in Oracle EBS 12.2 Production environments.
This approach helps Oracle Apps DBAs:
- Avoid risky code changes
- Restore performance quickly
- Reduce month-end failures
- Stabilize execution plans
- Improve business confidence
It is a critical real-world DBA skill for handling production SQL regressions.