Oracle E-Business Suite R12 Configuration in a DMZ

DMZ (DeMilitarized Zone)

The DMZ, which stands for DeMilitarized Zone consists of the portions of a corporate network that are between the corporate intranet and the Internet. The DMZ can be a simple one segment LAN or it can be broken down into multiple regions. The main benefit of a properly-configured DMZ is better security: in the event of a security breach, only the area contained within the DMZ is exposed to potential damage, while the corporate intranet remains somewhat protected.
DMZ is the way of exposing organization specific files to outside firewall.In Oracle Aplications we can achieve this.Oracle Application architecture consists of fleet of nodes ( FND_NODES). First we need to decide which nodes we need to expose to public.Using the profile "Node Trust Level" we can set a node to public or private ( Normal -> private,External -> public ).

Following table shows the entries of FND_NODES table.
FND_NODES
SVD0ORACS03
SVD0OAPS01
AUTHENTICATION
SVD0OAPS02
SVD0OAPS03
SVD0OAPS04
SVD0SSWEBS1
SVD0SSWEBS2
SVD0ORACS01
SVD0ORACS02

Following is the picture of "Node Trust Level" profile.
Node
Node Trust Level
SVD0ORACS03
Normal
SVD0OAPS01
Normal
AUTHENTICATION
Normal
SVD0OAPS02
Normal
SVD0OAPS03
Normal
SVD0OAPS04
Normal
SVD0SSWEBS1
External
SVD0SSWEBS2
External
SVD0ORACS01
Normal
SVD0ORACS02
Normal

In the above listed nodes two nodes are identified as External (SVD0SSWEBS1 and SVD0SSWEBS2). Rest others are Internal.
Following picture shows the profile setting of "Node Trust Level" for SVD0SSWEBS2.


In Responsibilities level also we can decide weather to expose it to inside or outside firewall.This can be achieved by using another profile "Responsibility Trust Level".
I will explain this profile with an example.I will create a responsibility and i will set the "Responsibility Trust Level" toExternal.So when user invokes the application from outside then he/she can view the responsibility.
1) Create a form function which points to an OAF page as shown below.


2) Assign the above function to a responsibility.


3) Set the "Responsibility Trust Level" of above created responsibility to "External".


4) Set the "Responsibility Trust Level" of Employee Self-Service responsibility to "External".


5) "Responsibility Trust Level" of Web ADI responsibility is "Normal". 


Note: Run auto-config to complete the configuration.
When user tries to access application from inside firewall following responsibilities will display under his/her user.

1) Employee Self Service
2) Login Info
4) Oracle Web ADI

When he/she tries to access application from outside firewall following responsibilities will list.

1) Employee Self Service
2) Login Info


Company requirement

Large Organizations want to expose their Oracle Application services outside their
private network (HTTP/HTTPS and SSL). Usually these exposures must exist to promote
external communication. So they want to separate an external network from directly
referencing an internal network

Company issue
Business does not want to compromise with security information
Business cannot expose internal domain or internal URL information

Company requirement
DMZ is the solution of this problem. In Oracle application we can achieve this by following way –

Oracle Application consists of fleet nodes (FND_NODES) so first decide which node have to
expose to public

To expose the node to public use the profile “Node Trust Level”

Set node to Public/Private (Normal -> private, External -> public)

Set "Responsibility Trust Level" profile to decide whether to expose Application Responsibility
to inside or outside firewall.




Solution
Exposed web services can be accessed by both internal and external users

Configurable and can be very easily rolled out

Internal network and business data is secured from outside traffic

Unauthorized access to internal network from outside is prohibited

No need for VPN and Secure FTP server



Advantage
Large Organizations having Oracle Application can expose their web services like 
(HTTP/HTTPS and SSL) to the internet without compromise with security information 
and without exposing their internal domain


Disadvantage 
If external firewall is compromised, then external application server is also compromised, 
exposing an attack on E-Business Suite database
There’s nothing to prevent internal users from attacking internal application server, 
also exposing an attack on E-Business Suite database


Oracle E-Business Suite R12 Configuration in a DMZ (Doc ID 380490.1)

PRCD-1027

having issue with all my listeners files missing. Having this issue below:

-bash-4.1$ srvctl config database -d dev1 -a
PRCD-1027 : Failed to retrieve database dev1
PRCR-1115 : Failed to find entities of type resource that match filters ((NAME == ora.dev1.db) && (TYPE == ora.database.type)) and contain attributes VERSION,ORACLE_HOME,DATABASE_TYPE


Unable to Startup Database and Clusterware After Node Reboot When Using NetXen NIC (Doc ID 1507061.1)

APPLIES TO:

Oracle Server - Enterprise Edition - Version 11.2.0.2 to 11.2.0.3 [Release 11.2]
Linux x86-64

SYMPTOMS

* After node reboot, the database is not up, and cannot be started with srvctl:
srvctl start database -d rcjprod
PRCD-1027 : Failed to retrieve database rcjprod
PRCR-1115 : Failed to find entities of type resource that match filters ((NAME == ora.rcjprod.db) && (TYPE == ora.database.type)) and contain attributes VERSION,ORACLE_HOME,DATABASE_TYPE
Cannot communicate with crsd
* Further investigation shows that the clusterware is actually offline:
$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager
* This issue is occurring in an environment where the cluster interconnect is using at least one NetXen NIC.

CAUSE

* The database is not coming up because the clusterware did not come up on boot.
* The clusterware does not come up because of a connectivity problem between nodes:

The Operating System log file does not show any errors but the traceroute is failing between nodes and CVU reports errors like the following:
CRS-10051:CVU found following errors with Clusterware setup : Node "racnode2" is not reachable
PING RACNODE2.US.ORACLE.COM (10.10.50.77) 56(84) bytes of data.
--- RACNODE2.US.ORACLE.COM ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3001ms
* One or more of the interfaces used for the interconnect is a NetXen NIC, eg:
/etc/sysconfig/network-scripts/ifcfg-eth2 File

-rw-r--r-- 3 root root 222  Sep 24 14:14 2012  Dec 19 10:22 2011  ifcfg-eth2

# NetXen Incorporated NX3031 Multifunction 1/10-Gigabit Server Adapter
DEVICE=eth2
 ...
 
* the NetXen NIC is using the "netxen_nic" driver.

 

SOLUTION

The cause is a known issue in RHEL 5 with NetXen NIC cards using the 'netxen_nic' driver
quote from the RedHat document linked above:
* netxen_nic interfaces fail to receive or send packets after boot until they are restarted manually. Issue is seen with both bonding and non-bonding environment.

* When having at least one netxen network card in a bond, the bond doesn't work after boot. Restarting the interface with "ifdown bond0; ifup bond0" works around the problem.

* The system appears to boot without issue and gives no indication of a network issue, however no network connectivity is available when using the netxen_nic at boot. But performing a "service network restart" or 'ifup', it brings up the interfaces and the network works perfectly from this point forward.

Please contact your Linux support to see if a fix is available.

How to get database growth in oracle 11g


To calculate the Data-file Growth on a yearly basis:

SQL> select to_char(CREATION_TIME,'RRRR') year,to_char(CREATION_TIME,'MM') month,round(sum(bytes)/1024/1024/1024) gb from v$datafile group by to_char(CREATION_TIME,'RRRR'),to_char(CREATION_TIME,'MM') order by 1,2;

YEAR MO         GB
---- -- ----------
2000 05          5
2000 12          1
2002 03          0
2002 05          1
2002 10          3
2003 01          2
2003 06          1
2003 11         19
2004 02          0
2004 03          0
2005 12          1

YEAR MO         GB
---- -- ----------
2007 01          5
2014 01         82

13 rows selected.

Take the sum of this two values which will be your total database size. Record this value daily/weekly/monthly basis and compare the difference.

SQL> select round((sum(bytes)/1048576/1024),2) from V$tempfile;

ROUND((SUM(BYTES)/1048576/1024),2)
----------------------------------
                             46.07


SQL> select round((sum(bytes)/1048576/1024),2) from V$datafile;

ROUND((SUM(BYTES)/1048576/1024),2)
----------------------------------
                            119.66

How to monitor the Database growth???

column “Percent of Total Disk Usage” justify right format 999.99
column “Space Used (MB)” justify right format 9,999,999.99
column “Total Object Size (MB)” justify right format 9,999,999.99
set linesize 150
set pages 80
set feedback off
select * from (select to_char(end_interval_time, ‘MM/DD/YY’) mydate, sum(space_used_delta) / 1024 / 1024 “Space used (MB)”, avg(c.bytes) / 1024 / 1024 “Total Object Size (MB)”,
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) “Percent of Total Disk Usage”
from
dba_hist_snapshot sn,
dba_hist_seg_stat a,
dba_objects b,
dba_segments c
where begin_interval_time > trunc(sysdate) – &days_back
and sn.snap_id = a.snap_id
and b.object_id = a.obj#
and b.owner = c.owner
and b.object_name = c.segment_name
and c.segment_name = ‘&segment_name’
group by to_char(end_interval_time, ‘MM/DD/YY’))
order by to_date(mydate, ‘MM/DD/YY’);



Weekly growth of database

set feedback off
set pages 80
set linesize 150
spool /tmp/weekly_growth.txt
ttitle “Total Disk Used”
select sum(space_used_delta) / 1024 / 1024 “Space used (M)”, sum(c.bytes) / 1024 / 1024 “Total Schema Size (M)”,
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) || ‘%’ “Percent of Total Disk Usage”
from
dba_hist_snapshot sn,
dba_hist_seg_stat a,
dba_objects b,
dba_segments c
see code depot for full script
where end_interval_time > trunc(sysdate) – &days_back
and sn.snap_id = a.snap_id
and b.object_id = a.obj#
and b.owner = c.owner
and b.object_name = c.segment_name
and c.owner = ‘&schema_name’
and space_used_delta > 0;
title “Total Disk Used by Object Type”
select c.segment_type, sum(space_used_delta) / 1024 / 1024 “Space used (M)”, sum(c.bytes) / 1024 / 1024 “Total Space (M)”,
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) || ‘%’ “Percent of Total Disk Usage”
from
dba_hist_snapshot sn,
dba_hist_seg_stat a,
dba_objects b,
dba_segments c
see code depot for full script
where end_interval_time > trunc(sysdate) – &days_back
and sn.snap_id = a.snap_id
and b.object_id = a.obj#
and b.owner = c.owner
and b.object_name = c.segment_name
and space_used_delta > 0
and c.owner = ‘&schema_name’
group by rollup(segment_type);
spool off

Through  OEM


Here are the steps to know Database growth pattern for last one month/year using OEM


1) Login to OEM and Click on the Reports Tab
2) Navigate to Reports–>Storage–>Oracle Database Space Usage path and Click on Oracle Database Space Usage link.
3) Select the Target database and here we are getting Oracle Database space usage for last one Month.
4) Also we can get one year Database growth by setting Set Time Period Button.
5) Also we can find Oracle Database Table-space Monthly Space Usage by Navigating Reports–>Storage–>Oracle Database Space Usage path and click on Oracle Database Table-space Monthly Space Usage link.
select sum(a.bytes+b.bytes)/1024/1024 "Total Size(MB)",sum(c.bytes)/1024/1024 "Used Space(MB)",sum(d.bytes)/1024/1024 "Free Space(MB)" from dba_data_files a,dba_temp_files b,dba_segments c,dba_free_space d;
Total Size(MB)                   Used Space(MB)              Free Space(MB)
--------------                   --------------              --------------
    1060137494                     528906                      28491086.3
 
 
The Total Size includes the size of Temporary tablespaces also, which is excluded in the rest two figures.

Scripts: Database,Table,Tablespace Growth Report using AWR

The following code snippets are collected from various sources and updating here, (not sure even about copy write of those, if any found so, I am happy to remove from here), until then we will try to use them.
Some background,  Oracle AWR by default collects the information about the segment growth periodically. This information can be queried using views DBA_HIST_SEG_STAT.
Script #1 : script to display table size changes between two periods. 
column "Percent of Total Disk Usage" justify right format 999.99 
column "Space Used (MB)" justify right format 9,999,999.99 
column "Total Object Size (MB)" justify right format 9,999,999.99 
set linesize 150 
set pages 80 
set feedback off 
select * from (select to_char(end_interval_time, ‘MM/DD/YY’) mydate, sum(space_used_delta) / 1024 / 1024 "Space used (MB)", avg(c.bytes) / 1024 / 1024 "Total Object Size (MB)", 
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) "Percent of Total Disk Usage" 
from 
   dba_hist_snapshot sn, 
   dba_hist_seg_stat a, 
   dba_objects b, 
   dba_segments c 
where begin_interval_time > trunc(sysdate) – &days_back 
and sn.snap_id = a.snap_id 
and b.object_id = a.obj# 
and b.owner = c.owner 
and b.object_name = c.segment_name 
and c.segment_name = ‘&segment_name’ 
group by to_char(end_interval_time, ‘MM/DD/YY’)) 
order by to_date(mydate, ‘MM/DD/YY’);
 Enter value for days_back: 
Enter value for segment_name:

Script #2:-  Database Growth in 1 hour intervals
Declare 
    v_BaselineSize    number(20); 
    v_CurrentSize    number(20); 
    v_TotalGrowth    number(20); 
    v_Space        number(20); 
    cursor usageHist is 
            select a.snap_id, 
            SNAP_TIME, 
            sum(TOTAL_SPACE_ALLOCATED_DELTA) over ( order by a.SNAP_ID) ProgSum 
        from 
            (select SNAP_ID, 
                sum(SPACE_ALLOCATED_DELTA) TOTAL_SPACE_ALLOCATED_DELTA 
            from DBA_HIST_SEG_STAT 
            group by SNAP_ID 
            having sum(SPACE_ALLOCATED_TOTAL) <> 0 
            order by 1 ) a, 
            (select distinct SNAP_ID, 
                to_char(END_INTERVAL_TIME,’DD-Mon-YYYY HH24:Mi’) SNAP_TIME 
            from DBA_HIST_SNAPSHOT) b 
        where a.snap_id=b.snap_id; 
Begin 
    select sum(SPACE_ALLOCATED_DELTA) into v_TotalGrowth from DBA_HIST_SEG_STAT; 
    select sum(bytes) into v_CurrentSize from dba_segments; 
    v_BaselineSize := v_CurrentSize – v_TotalGrowth ;
    dbms_output.put_line(‘SNAP_TIME           Database Size(MB)’);
    for row in usageHist loop 
            v_Space := (v_BaselineSize + row.ProgSum)/(1024*1024); 
        dbms_output.put_line(row.SNAP_TIME || ‘           ‘ || to_char(v_Space) ); 
    end loop; 
end;

Script #3: Top 50 Query which can be used to query segments with highest growth. This will also report the present size of the segment which is very useful in identifying the growth percentage.
SELECT o.OWNER , o.OBJECT_NAME , o.SUBOBJECT_NAME , o.OBJECT_TYPE , 
    t.NAME "Tablespace Name", s.growth/(1024*1024) "Growth in MB", 
    (SELECT sum(bytes)/(1024*1024) 
    FROM dba_segments 
    WHERE segment_name=o.object_name) "Total Size(MB)" 
FROM DBA_OBJECTS o, 
    ( SELECT TS#,OBJ#, 
        SUM(SPACE_USED_DELTA) growth 
    FROM DBA_HIST_SEG_STAT 
    GROUP BY TS#,OBJ# 
    HAVING SUM(SPACE_USED_DELTA) > 0 
    ORDER BY 2 DESC ) s, 
    v$tablespace t 
WHERE s.OBJ# = o.OBJECT_ID 
AND s.TS#=t.TS# 
AND rownum < 51 
ORDER BY 6 DESC 
/

Script #4: List object growth over last N days, sorted by growth desc 
set feedback on 
select * from (select c.TABLESPACE_NAME,c.segment_name “Object Name”,b.object_type, 
sum(space_used_delta) / 1024 / 1024 “Growth (MB)” 
from dba_hist_snapshot sn, 
dba_hist_seg_stat a, 
dba_objects b, 
dba_segments c 
where begin_interval_time > trunc(sysdate) – &days_back 
and sn.snap_id = a.snap_id 
and b.object_id = a.obj# 
and b.owner = c.owner 
and b.object_name = c.segment_name 
and c.owner =’SIEBEL’ 
group by c.TABLESPACE_NAME,c.segment_name,b.object_type) 
order by 3 asc;
 Enter value for days_back:
Script #5: generates tablespace usage trend/growth.
SET MARKUP HTML ON ENTMAP ON SPOOL ON PREFORMAT OFF; 
set linesize 125 
set numwidth 20 
set pagesize 50 
COL NAME FOR A30 
col SNAP_ID for 9999999 
set serveroutput off; 
SPOOL TBS_TREND.xls; 
set verify off; 
set echo off;
SELECT 
distinct DHSS.SNAP_ID,VTS.NAME, 
TO_CHAR(DHSS.END_INTERVAL_TIME, ‘DD-MM HH:MI’) AS SNAP_Time, 
ROUND((DHTS.TABLESPACE_USEDSIZE*8192)/1024/1024)/&&max_instance_num AS USED_MB, 
ROUND((DHTS.TABLESPACE_SIZE*8192)/1024/1024)/&&max_instance_num AS SIZE_MB 
FROM DBA_HIST_TBSPC_SPACE_USAGE DHTS,V$TABLESPACE VTS,DBA_HIST_SNAPSHOT DHSS 
WHERE VTS.TS#=DHTS.TABLESPACE_ID 
AND DHTS.SNAP_ID=DHSS.SNAP_ID 
AND DHSS.INSTANCE_NUMBER=1 
AND TABLESPACE_ID=&id 
ORDER BY 1; 
SPOOL OFF;


 How will I know if my database is using a PFILE or SPFILE?

Execute the following query to see if your database was started with a PFILE or SPFILE:
SQL> SELECT DECODE (value, NULL, 'PFILE', 'SPFILE') "Init File Type"
       FROM sys.v_$parameter WHERE name = 'spfile';  2
Init F
------
PFILE

ORA-00119: Invalid Specification for System Parameter LISTENER_NETWORKS During Database Startup




APPLIES TO:

Oracle Net Services - Version 11.2.0.3 to 12.1.0.1 [Release 11.2 to 12.1]
Information in this document applies to any platform.

GOAL

Can't startup a database through remote connection

Tnsping works fine.
[oracle@dmb1dbadm01 ~]$ tnsping orcl

TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 16-JAN-2014 11:11:47

Copyright (c) 1997, 2011, Oracle. All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL_SERV) (INSTANCE_NAME = ORCL)))

[oracle@myhost ~]$ sqlplus sys/password@ORCL as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Jan 16 11:11:33 2014

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-00119: invalid specification for system parameter LISTENER_NETWORKS
ORA-00137: invalid LISTENER_NETWORKS specification with NAME=NET1
ORA-00138: all addresses specified for attribute LOCAL_LISTENER are invalid
ORA-00132: syntax error or unresolved network name 'LOCAL_1'
ORA-00132: syntax error or unresolved network name 'REMOTE_1'
ORA-00132: syntax error or unresolved network name 'LOCAL_2'
ORA-00132: syntax error or unresolved network name 'REMOTE_2'
ORA-00132: syntax error or unresolved network name 'LOCAL_3'
ORA-00132: syntax error or unresolved network name 'REMOTE_3'
ORA-00132: syntax error or unresolved network name 'LOCAL_4'
ORA-00132: syntax error or unresolved network name 'REMOTE_4'
SQL> exit

--> All TNS alias are resolved

SQL> show parameter listener_networks;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
listener_networks                    string      ((NAME=NET1)(LOCAL_LISTENER=
                                                LOCAL_1)(REMOTE_LISTENER=REMOTE_
                                                1)), ((NAME=NET2)(LOCAL_LISTEN
                                                ER=LOCAL_2)(REMOTE_LISTENER=RE
                                                MOTE_2)), ((N)(NAME=NET3)(LOCAL
                                                _LISTENER=LOCAL_3)(REMOTE_LIS
                                                TENER=REMOTE_3)), ((NAME=NET4
                                                )(LOCAL_LISTENER=LOCAL_4)(R
                                                EMOTE_LISTENER=REMOTE_4))


[oracle@myhost ~]$ srvctl start database -d ORCL --> works fine

SOLUTION

The TNSNAMES.ORA file containing the TNS connect strings referenced in LISTENER_NETWORKS must be placed in both GRID_HOME/network/admin and RDBMS_HOME/network/admin.

ORA-00119




APPLIES TO:

Oracle Database Configuration Assistant - Version 11.2.0.3 and later
Information in this document applies to any platform.

SYMPTOMS

After a software install, the first run of DBCA raises
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00130: Invalid listener address (ADDRESS = PROTOCOL=TCP)(HOST=<....host name.....>)(port =1521))

CAUSE

Check for a mismatch or other issue in nsswitch.conf


 

SOLUTION

Either workaround by :
Creating a manual tnsnames entry
i) create tnsnames.ora under $ORACLE_HOME/network/admin
ii) Add entry :

REGISTER_LOCAL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =rmm01.rexam.com )(PORT = 1521))
)



Or user netmgr if you have a syntax problem.

iii) Use tnsping to confirm the value was parsing correctly.
tnsping register_local , if you hit TNS-12533 then use netmgr to add the entry instead of manually adding it in tnsnames.ora

iv) Then set local_listener in the dbca to this new tested tnsnames entry.

And try to create the database again.
 or Contact your system / network admin or your hardware vendor to verify if there is a mismatch in nsswitch.conf

compile jsp in EBS R12

How to compile JSP in R12/11i?



How to compile JSP in R12


In Linux/Unix


Login as applmgr user and source the environment by running the script:

[applmgr@sujeet ~]$ cd /u02/sujeetapps/apps/apps_st/appl/

[applmgr@sujeet appl]$ . APPSCHTLPROD_sujeet.env

[applmgr@sujeet appl]$ cd $FND_TOP/patch/115/bin

[applmgr@sujeet bin]$ pwd

/u02/sujeetapps/apps/apps_st/appl/fnd/12.0.0/patch/115/bin

[applmgr@sujeet bin]$ perl ojspCompile.pl --compile --flush -p 2
( -p means parallel execution)

In Windows

cd %FND_TOP%\patch\115\bin
perl -x ojspCompile.pl –compile –flush


Restart the Apache services or Middle-ware services.


How to compile individual JSP in R12:


[applmgr@sujeet ~]$ cd $COMMON_TOP/_pages

[applmgr@sujeet  _pages]$ pwd

/u02/sujeetapps/apps/apps_st/comn/_pages

Delete the class files (abcdef.class) for the JSP that you want to compile manually.
Eg. JSP File abcdef_12.jsp 
Class File: abcdef_12.class ------------- Delete this file.

Navigate to the OA_HTML (Location for all the Jsp pages). if the JSP pages do not exist, copy the JSP to the location & run the below command.

[applmgr@sujeet ~]$ FND_TOP/patch/115/bin/ojspCompile.pl --compile -s 'abcdef_12.jsp' --flush

or

Compile a jsp page:
 [applmgr@sujeet ~]$ cd $OA_HTML
 [applmgr@sujeet ~]$ $FND_TOP/patch/115/bin/ojspCompile.pl --compile -s 'xxxx.jsp' -log err.log --flush

Compile all jsp pages:
 $FND_TOP/patch/115/bin/ojspCompile.pl --compile  --flush -p 4

Restart the Apache services or Middle-ware services. 
Check whether the respective class files have been created under 

cd $COMMON_TOP/_pagesCheers!

Enable Automatic Compilation of JSP pages in R12

edit the $CONTEXT_FILE
Change value for the entry s_jsp_main_mode from justrun to recompile

run AutoConfig, restart the web tier services.

***************************************************************************************************************************
For help use below cmd.
[applmgr@sujeet comn]$  $FND_TOP/patch/115/bin/ojspCompile.pl

syntax: /apps/vision/apps/apps_st/appl/fnd/12.0.0/patch/115/bin/ojspCompile.pl COMMAND {ARGS}

COMMAND --compile               update dependency, compile delta
        --create                rebuild entire dependency file
        -delta.out <file>       update dependency, list delta to file
        -dep.out <xmlfile>      update dependency, output heirarchy to file

ARGS    -s <regex>      matching condition for JSPs filenames
        -p <procs>      number of parallel compilations
        -log <file>     to override logfile from ojspCompile.conf

You are recommended to set the log file location

 outside of any network file system shared (NFS) area/drive.
        -conf <file>    to override ojspCompile.conf
        --retry         retry previously failed compilation attempts
        --flush         forces recompilation of all parent JSPs
        --quiet         do not provide an actively running progress meter
        --fast          instantly fail jsps that are *possibly* invalid

ERROR 1396 (HY000): Operation ALTER USER failed for 'Mysql'@'%'

 This MySQL error — ERROR 1396 (HY000): Operation ALTER USER failed for 'Mysql'@'%' — means that MySQL cannot find the user ...