Thursday, February 28, 2019

Basic Performance Tunning in Oracle Database

Basic Performance Tunning in Oracle Database


Method.1


How will you find the performance issues ?

Mostly, when any users intimates us that:
This query is running slowly ?
Daily, this query will retrieve data in 1 minute. But, today it is running since 2 hours ?
Load average is high ?
CPU utilization of a process is high ?
Users experiencing slowness ?

a. Get the top consuming PID’s (Works in almost all Linux related OS). And if it is Windows, please look into task manager.

ps -eo pcpu,pid,user,args | sort -k 1 -r |head -10

b.  Now, you need to pick the SQL_ID mainly for proceeding further. You will be prompted for PID which you picked in above command.

set linesize 2000;
select s.sid,s.serial#, s.inst_id,p.spid, s.SQL_ID, t.SQL_TEXT, s.machine from gv$process p, gv$session s, gv$sqltext t where s.paddr = p.addr and p.spid=&processid and s.SQL_HASH_VALUE = t.HASH_VALUE;

Now we have two ways:

1. Using the sql_id, pick the tables involved in it. We are using explain plans.
select * from table(dbms_xplan.display_cursor(sql_id => ‘&SQL_ID’, format => ‘+ALLSTATS’));

2. Run below Oracle Provided script to get details. This is Sql Tuning Report. This report will give all the recommendations available.
@?/rdbms/admin/sqltrpt.sql

Now, you will be having the tables list. Check when was latest time stamp of the table analyzed.

SELECT OWNER, TABLE_NAME, NUM_ROWS, BLOCKS, AVG_ROW_LEN, TO_CHAR(LAST_ANALYZED, 'MM/DD/YYYY HH24:MI:SS') FROM DBA_TABLES WHERE TABLE_NAME ='&TABLE_NAME';

What is the use of last_analyzed column ?
This will give the information when the stats were gathered.

If the stats are not up-to-date, we need to gather stats.

Find whether the table is partitioned table or normal table.

select table_name, subpartition_name, global_stats, last_analyzed, num_rows from dba_tab_subpartitions where table_name='&Tablename' and table_owner='&owner' order by 1, 2, 4 desc nulls last;

select TABLE_OWNER, TABLE_NAME, PARTITION_NAME, LAST_ANALYZED from DBA_TAB_PARTITIONS where TABLE_OWNER=’&owner’ and TABLE_NAME=’&Tablename’ order by LAST_ANALYZED;

If table has NO partitions and if stats need to be gathered, use this

EXEC dbms_stats.gather_table_stats(‘&Owner’,’&Table’,cascade=>TRUE);

If table has partitions, we can gather stats on whole table. But, its better to gather stats for recently created ten partitions, use below

begin
SYS.DBMS_STATS.gather_table_stats
(ownname => ‘&Table_Owner’,
tabname => ‘&Table_Name’,
PARTNAME => ‘&partition’,
estimate_percent => 0.001,
DEGREE => 24,
granularity => ‘PARTITION’,
CASCADE => TRUE,
stattab => NULL,
statid => NULL,
statown => NULL
);
END;
/

We can also run this SQL Tunning Advisor from OEM:

1.Go to home
2.Click on Advisor Central
3.Click on SQL Advisor
4.Click on SQL Tunning Advisor
5.Click on Top Activity
6.Choose a SQL_ID for which you want to run tune
7.Click on Actions button go
8.click Submit Button


Method.2


How to tune a SELECT query ?

Step.1
Find the SQL_ID of the slow running query

There could be two possibilities:
1) Query is still running: If the slow query is still running then we can find the sql_id of the query by using v$session view.

2) Query is completed: It might be query is completed but application team got to know it later that the query was slow and it did not finish in its usual time. Since this query is not running right now, we can’t query v$session to get its information.

So for this we use AWR/ASH report. We ask application team that at what time the query was running and for that duration we generate the AWR. In ASH report we find all kind of information regarding the top SQL’s. Basically we see SQL STATISTIS section of the AWR report. In this section there is SQL ORDERED BY ELAPSED TIME which matters most to us. If the query which is reported by application team is present in this section then we note down the sql_id of the query. Otherwise we generate ASH report for that particular time and get the sql_id.

Step.2
Run the SQL Tuning advisor for that SQL_ID
After finding the sql_id we can run sql tuning advisor on this sql_id.

@$ORACLE_HOME/rdbms/admin/sqltrpt.sql) by providing SQL_ID as the input for generating the findings and recommendations. SQL Tuning Advisor seems to be doing logical optimization mainly by checking your SQL structure and statistics.

Based on the tuning advisor recommendation we have to take corrective actions. These recommendation could be and many more:

1) Gather Statistics
2) Create Index
3) Drop Index
4) Join orders
5) Accept sql profile
6) Create baseline and many more recommendations

Before applying any corrective action on production, we need to test that in DEV/QA/UAT/TEST environment or we can ask and tuning expert that this is the recommendation. After all the analysis we should apply in the production database.

After corrective action from tuning advisor run the SQL again and see the improvement.

Step.3
Use TOP command to check the CPU usages by various processes:

TOP command is also useful for performance tuning. Many times, in a single server multiple databases are running. It may happen that one database is consuming more server resources than others. So we have to find out which oracle process is consuming more resources and it is related to which database. For this we use  TOP command. If we see there is CPU used by an oracle process is very high then this a matter of subject to worry about.

If it is a DML statement then we have check the locking in the database

Step.4
Find the locking in the database:

The very first step is to find out if there is any locking in the database. Sometime due to locking a session does not get the required resources and the session gets slow.

We can find below command to check locking in the database:

sql>select s1.username || '@' || s1.machine || ' ( SID=' || s1.sid || ') is blocking'
|| s2.username || '@' || s2.machine || '( SID=' || s2.sid || ')' from
v$lock l1, v$session s1, v$lock l2, v$session s2
where s1.sid=l1.sid and s2.sid=l2.sid
and l1.block=1 and l2.request > 0
and l1.id1=l2.id1
and l2.id2=l2.id2;

Query Output:

S1.USERNAME||'@'||S1.MACHINE||'(SID='||S1.SID||')ISBLOCKING'||S2.USERNAME||'@'||
----------------------------------------------------------------------------------------
SYS@host1.abc.com ( SID=229) is blockingSYS@host1.abc.com( SID=226)

If we see the locking from above query then we can simply inform to user/application. And if they suggest to kill this blocking session then after killing we can get rid of this slowness.


Step.5
Check for the wait events:

There could be some wait events on the database. Check for the particular user and session.

Query for displaying sessions, session state, and wait details

col "Description" format a50
select sid,
        decode(state, 'WAITING','Waiting',
                'Working') state,
        decode(state,
                'WAITING',
                'So far '||seconds_in_wait,
                'Last waited '||
                wait_time/100)||
        ' secs for '||event
        "Description"
from v$session
where username = 'ARUP';

Output:

SID   STATE       Description
————— ——————————  ———————————————————————————————————————————————————————
2832  Working     Last waited 2029 secs for SQL*Net message from client
3346  Waiting     So far 743 secs for enq: TX - row lock contention
4208  Waiting     So far 5498 secs for SQL*Net message from client

It clearly shows the state of the sessions: whether they are working or waiting; if they are working, what they were waiting for earlier and for how long; and if they are waiting, what for and for how long.

In many troubleshooting situations, just knowing the SID of each session is not enough. We may need to know other details, such as the client machine the session is connecting from, the user (of both the database and the operating system), and the service name. All of this information is also readily available in the same V$SESSION view we have been using. Let’s briefly examine the columns that provide that information, by running the below query

select SID, osuser, machine, terminal, service_name,
       logon_time, last_call_et
from v$session
where username = 'ARUP';

SID   OSUSER  MACHINE   TERMINAL  SERVICE_NAME  LOGON_TIME LAST_CALL_ET
————— ——————  ———————   ————————  ————————————  —————————— ————————————
3346  oradb   prodb1    pts/5     SYS$USERS     05-FEB-12          6848
2832  oradb   prodb1    pts/6     SERV1         05-FEB-12          7616
4408  ANANDA  ANLAP     ANLAP     ADHOC         05-FEB-12             0

OSUSER. The operating system user as which the client is connected. The output indicates that session 4408 is connected from the ANLAP machine, where a Windows user, ANANDA, has logged in.
MACHINE. The name of the machine where the client is running. This could be the database server itself. For two of the sessions, the machine name shows up as “prodb1.” Session 4408 runs on a different machine—ANLAP—presumably a laptop.
TERMINAL. If the session is connected from a UNIX server, this is the terminal where it runs.
LOGON_TIME. This shows when the session was first connected to the Oracle Database instance.

More:

1.Run TOP command in Linux to check CPU usage.
2.Run VMSTAT, SAR, PRSTAT command to get more information on CPU, memory usage and possible blocking.
3.Enable the trace file before running your queries,then check the trace file using tkprof create output file.
According to explain plan check the elapsed time for each query,then tune them respectively.

What is the use of iostat/vmstat/netstat command in Linux?

iostat – reports on terminal, disk and tape I/O activity.
vmstat – reports on virtual memory statistics for processes, disk, tape and CPU activity.
netstat – reports on the contents of network data structures.

When a user issues a query

When a user issues a query ?


A SP is created and the related objects checks in the data dictionary cache, based on the objects parsing and execution plan is created in the library cache, depending on the execution plan it will check the data in database buffer cache, if found it will give the result to the user via SP, if not it will retrieved the data from the disk.

when a user issues a insert,update, delete statement ?

In our case data is still in the SGA database buffer cache.

Data updated in the db buffer cache and marked as dirty buffer, immediately statement is placed into redo buffer, row updated message return to the user.

After issuing commit:

1.new SCN obtained from controlfile

2.commit place into redo buffer.

3.LGWR writes redo buffer contents to redolog files & remove from redo buffer.

4.Controlfile is updated with new SCN.

What is RCU

What is RCU?


Repository Creation Utility (RCU) is used to create and manage Oracle Fusion Middleware database schemas. RCU will create custom schemas and tablespaces and it will support only Oracle databases.

Note:
Oracle Internet Directory schema names cannot be customized. Other Identity Management schemas names, like OIF (Oracle Identity Federation), can be customized.

For example:

Component                             Schema Owner
Oracle Internet Directory ODS

Monday, February 25, 2019

Weblogic upgrade server from 10.1.3.4 to 10.3.6

Weblogic upgrade server from 10.1.3.4 to 10.3.6


Important points:

Different weblogic servers and supported java versions :

Oracle WebLogic 10.3.5.0 supports Sun JDK 1.6.0_24.
Oracle WebLogic 10.3.6.0, supports the Oracle JDK 1.7.0
Oracle WebLogic 12.1.3 supports Oracle JDK 1.7.0_55+ (1.7.0_67)
Oracle WebLogic 12.2.1 (12R2) supports JDK 1.8

Upgrade Weblogic server from 10.1.3.4 to 10.3.6 by applying the Patch: 13529623.

step.1

Shut down all WebLogic processes you want to upgrade such as:

Node Manager
Admin Server
All Managed Servers

step.2

Download and installed a new version of JDK 1.7+.
After installing Verifying the JDK Version
java –version

Note:
A plus sign '+' after the version number indicates that this and its subsequent versions are supported.

step.3

Download this patch set for Oracle WebLogic 10.3.6.0: Patch 13529623 (p13529623_1036_Generic.zip)
Unzip the file in a temporary location and confirm the extracted contains this file:
wls1036_upgrade_generic.jar

step.4

Running OUI to Upgrade an Existing WebLogic Server to 10.3.6
java -jar wls1036_upgrade_generic.jar

step.5

Upon execution, the installer starts preparing the OUI install program.

1.On Choose Middleware Home Directory, select the existing Middleware home you wish to upgrade.
2.Click the Next button.
3.On Register for Security Updates, the Email address and/or the My Oracle Support Password fields as applicable.
4.Click the Next button.
5.On Choose Products and Components, verify the components.

Note:
The OUI installer automatically selects the Oracle Coherence component. You can choose to select or deselect this component, keeping in mind that this

server type has not yet been verified with Oracle JD Edwards EnterpriseOne.

6.Click the Next button.
7.On Choose Product Installation Directories, verify the directory locations for the previously selected products and components.

Note:
A new version of Oracle Coherence_3.7 will be installed.

8.Click the Next button.
OUI begins copying the files and performs the upgrade.
9.On Installation Complete, click the check box for Run Quickstart to continue with the upgrade of the Oracle WebLogic domains.
10.Click the Done button to complete the installation and exit OUI.
The Quickstart configuration screen appears.
11.On the QuickStart links panel, select this link:
Upgrade domains to version 10.3.6
An Upgrade Wizard is launched.

12.On the Welcome panel of the Upgrade Wizard, review and complete the tasks listed in the Prerequisites section of the above screen.
13.When the Prerequisite tasks are complete, click the Next button.
14.On Select WebLogic Version, select this radio button:
9.0 or higher

15.Click the Next button.
16.On Select a Domain to Upgrade, drill down through the Oracle\Middleware\user_projects\domains directory structure and select the Oracle JD Edwards

domain. For example:
E1_Apps

17.Click the Next button.
18.On Inspect Domain, review the upgrade configuration selections.
19.Click the Next button.
20.On Select Upgrade Options, select this check box:
Back up current domain (recommended)

Caution:
The wizard advises you that if you choose the check box or Add log files to backup zip, the resultant zip file can be extremely large.

21.On Domain Backup, review the message.
22.Click the Next button.
23.On Select Directory for Domain Backup, you can accept or change location and filename of the backup zip file.
24.The wizard shows the progress of the domain backup.
25.When the backup is complete, click the Next button.
26.On Finalize Domain Upgrade, review the message.
27.Click the Next button to begin the Upgrade.
28.On Upgrade Complete, click the Done button to exit OUI.

Note:
As a result of this domain upgrade, you do not need to individually upgrade any Managed Server.

29.start the WebLogic NodeManager.
30.Start the WebLogic Administration Console.
31.Start the existing Managed Server such as the Oracle JD Edwards EnterpriseOne HTML server.
32.Test and verify the upgrade.

Source:

https://docs.oracle.com/cd/E24902_01/doc.91/e18840/upgrade_1036.htm#EOHWL191

Wednesday, February 13, 2019

DMZ Configuration on R12

DMZ Configuration on R12


* OS verification
* Backup the source (prodcution instance)
* Copy the source application tier to the DMZ machine
* Create user and group for the DMZ machine
* Create directories for the target DMZ and give them the required grant and ownership
* Configure the DMZ
* Run autoconfig on both application tiers and the database tier
* Start and check the services

--> OS Verification

i)   Create OS user

ii)  Host file format
The  “/etc/hosts”  file  should use the  following  format  and Hostname  length should be less than 255 characters.
IP Address   Full Qualified Hostname    alias
Example:
10.10.19.39   externalnode.oracle.com    externalnode
10.10.11.31   internalnode.oracle.com    internalnode

iii) Mount Point / Storage Details
All disks in a disk group should have the same I/O density (Megabytes per second of transfer rate per Gigabyte of capacity)

iv)  Software Requirement
Ar, ld, make, X Display Server

v)   Login into the Source and shut the application services

vi)  Take a backup of the application directories and transfer it to the target server

--> Configuring DMZ

vii)  login as: appldmz

viii) Check the below settings

echo $PATH
which make
which ld

ix)  Navigate to the location where the files have been transfered.

x)  And further navigate to the clone bin diretory and run the adcfgclone.pl with appsTier
pwd
/oracle/appldmz
apps  inst
cd apps/apps_st/comn/clone/bin

perl adcfgclone.pl appsTier

It will ask the instance specific details:

Target System Hostname (virtual or normal) [externalnode] :
Target System Database SID : RAC1
Target System Database Server Node [irecruit] : internal
Target System Base Directory : /oracle/appldmzTarget System Forms ORACLE_HOME Directory [/oracle/appldmz/apps/tech_st/10.1.2] :Target System Web ORACLE_HOME

Directory [/oracle/appldmz/apps/tech_st/10.1.3] :
Target System APPL_TOP Mountpoint [/oracle/appldmz/apps/apps_st/appl] :
Target System COMMON_TOP Directory [/oracle/appldmz/apps/apps_st/comn] :
Target System Instance Home Directory [/oracle/appldmz/inst] :
Username for the Applications File System Owner [appldmz] :
Target System Root Service [enabled] :
Target System Web Entry Point Services [enabled] :
Target System Web Application Services [enabled] :
Target System Batch Processing Services [enabled] :
Target System Other Services [disabled] :
Do you want to preserve the Display [internal:0.0] (y/n) ? : n
Target System Display [irecruit:0.0] :
Do you want the the target system to have the same port values as the source system (y/n)[y] ? : n
Target System Port Pool [0-99] : 10

xi)  Once this process completes succesfully shut down the services change the following parameters in the .xml file

s_isWeb                           ----required value=YES
s_isWebDev                     ----required value=YES
s_http_listen_parameter    ----New Port for the http listener
s_https_listen_parameter  ----New Port for the https listener
s_webentryurlprotocol      ----Set the value to the web entry protocol (http/https)
s_webentryhost                ----Set the value to the webentry host
s_webentrydomain            ----Set the value to the webentry domain
s_active_webport              ----Set the value to the active port
s_login_page                    ----Set the value to point to the new webentry configuration
s_server_ip_address          ----Set the value of this variable to the IP address of the external facing network interface

xii)  Run the node clean package as apps user
Sqlplus apps/********
exec fnd_conc_clone.setup_clean;
commit;
exit
Run autoconfig in the series as stated below
a)  database tier
b)  primary apps tier (prodcution)
c)  DMZ (externalnode)

xiii)  After the completion of the autoconfig run the following script as apps from the primary node
sqlplus apps/welcome @$FND_TOP/patch/115/sql/txkChangeProfH.sql SERVRESP

This would change the profile options hierarchy type values to SERVRESP. Run autoconfig again on the primary node. As seen in the following lines

@txkChangeProfH.sql SERVRESP
Changing the hierarchy type for the  Profile APPS_WEB_AGENT
Profile APPS_WEB_AGENT hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile APPS_SERVLET_AGENT
Profile APPS_SERVLET_AGENT hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile APPS_JSP_AGENT
Profile APPS_JSP_AGENT hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile APPS_FRAMEWORK_AGENT
Profile APPS_FRAMEWORK_AGENT hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile ICX_FORMS_LAUNCHER
Profile ICX_FORMS_LAUNCHER hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile ICX_DISCOVERER_LAUNCHER
Profile ICX_DISCOVERER_LAUNCHER hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile ICX_DISCOVERER_VIEWER_LAUNCHER
Profile ICX_DISCOVERER_VIEWER_LAUNCHER hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile HELP_WEB_AGENT
Profile HELP_WEB_AGENT hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile APPS_PORTAL
Profile APPS_PORTAL hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile CZ_UIMGR_URL
Profile CZ_UIMGR_URL hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile QP_PRICING_ENGINE_URL
Profile QP_PRICING_ENGINE_URL hierarchy type has been
successfully changed to SERVRESP
Changing the hierarchy type for the  Profile TCF:HOST
Profile TCF:HOST hierarchy type has been
successfully changed to SERVRESP
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit
Production
With the Partitioning, OLAP and Data Mining options

xiv)  After the completion of the script start the primary instance and login as sysadmnin, And change the following profiles at server level
Server  : externalnode <server_name>
Profile : Node Trust Level <profile_name>
Make the changes at the server level to external

This Completes the DMZ Configuration !!!
xv)  Expose the responsibility to the external tier as per the requirement.

xvi) Once the above process is completed, the DMZ node can be started with the sequence given below.

xvii)  Startup and shutdown of DMZ Applications

We can start the externalnode(DMZ) node with the following sequence

adopmnctl.sh start
adoafmctl.sh start
adformsctl.sh start
adoacorectl.sh start
adapcctl.sh start

To stop the DMZ follow the sequence stated below

adapcctl.sh stop
adoacorectl.sh stop
adformsctl.sh stop
adoafmctl.sh stop
adopmnctl.sh stop

URL :  http://externalnode.oracle.com:8010/OA_HTML/IrcVisitor.jsp

Note:

1.Check SERVER_ADDRESS in fnd_nodes for external tier, make sure it should be pointing to external hostname, if it is not showing add node to fnd_nodes using the Sysadmin –> Install –> nodes.
Check the below columns:
*NODE_NAME                   
*SERVER_ADDRESS               
*HOST                   
*DOMAIN

2.Enable Oracle E-Business Suite Application Server Security

1.Set the value of Application Server Security Authentication (s_appserverid_authentication) to SECURE, in the CONTEXT_FILE on all the nodes.
2.Run AutoConfig on each Applications middle tier to complete the configuration.
3.After AutoConfig completes successfully, restart Oracle HTTP Server and OC4J processes








Oracle Applications Cloning Steps For 12.2.x

Oracle Applications Cloning Steps For 12.2.x


High-level steps of cloning process with AD and TKX delta6
=============================================:

1.Execute the adpreclone.pl dbtier and appsTier
2.Copy the database and applications files (run filesystem) from source to target
3.Configure the database tier on the target server
4.Configure the applcation tier on the run edition
5.Copy the run editon to the patch edition
6.Configure the application tier with patch edition

High-level steps of cloning process with AD and TKX Delta7
=============================================:

1.Execute the adpreclone.pl on dbtier and appsTier.
2.Copy the database and applcation files (run file system) from source to target.
3.Configure the database tier on the target server.
4.Configure the applcation tier on the run edition with the dualfs option.
5.Copy the run editon to the patch edition
6.Configure the application tier with patch edition

Note:
When using the dualfs option, you don't have to copy the patch file system from the run file system. Rapid clone will copy the patch file system and configure both file systems.

What happens when you run adpreclone and adcfgclone.

When you run this commnad adpreclone.pl dbTier ?
This will run in two steps Techstack and database.

1.Techstack:
It will create following directories in the ORACLE_HOME/appsutil/clone
Jlib, db, data where “Jlib” relates to libraries “db” will contain the techstack information, “data” will contain the information related to datafiles and required for cloning.
Creates driver files at ORACLE_HOME/appsutil/driver/instconf.drv
Converts inventory from binary to xml, the xml file is located at $ORACLE_HOME/appsutil/clone/context/db/Sid_context.xml

2.Prepare database for cloning:
This includes creating datbase control file script and datafile location information file at
$ORACLE_HOME/appsutil/template
adcrdbclone.sql, dbfinfo.lst
Generates database creation driver file at ORACLE_HOME/appsutil/clone/data/driver
data.drv
Copy JDBC Libraries at ORACLE_HOME/appsutil/clone/jlib/classes12.jar and appsoui

When Running adpreclone appsTier ?
This will create stage directory at $COMMON_TOP/clone. This also run in two steps.

1.Techstack:
Creates template files for
Oracle_iAS_Home/appsutil/template
Oracle_806_Home/appsutil/template

Creates Techstack driver files for
IAS_ORACLE_HOME/appsutil/driver/instconf.drv
806_ORACLE_HOME/appsutil/driver/instconf.drv

2.APPL_TOP preparation:
-It will create application top driver file $COMMON_TOP/clone/appl/driver/appl.drv
-Copy JDBC libraries $COMMON_TOP/clone/jlib/classes111.zip

Configuring the target system
Once it is done . Run as below adcfclone.pl for apps Tier and dbTier.

On database side:
cd $ORACLE_HOME/appsutils/clone/binperl adcfgclone.pl dbTier pwd=apps
This will use the templates and driver files those were created while running adpreclone.pl on source system and has been copied to target system.

Following scripts are run by adcfgclone.pl dbTier for configuring techstack

* adchkutl.sh — This will check the system for ld, ar, cc, and make versions.
* adclonectx.pl — This will clone the context file. This will ceate a new context file as per the details of this instance.
* runInstallConfigDriver — located in $Oracle_Home/appsutil/driver/instconf.drv
* Relinking $Oracle_Home/appsutil/install/adlnkoh.sh — This will relink ORACLE_HOME

1.On database side, following scripts are run
Driver file $Oracle_Home/appsutil/clone/context/data/driver/data.drv
Create database adcrdb.zip
Autoconfig is run
Control file creation adcrdbclone.sql

2.On Application Side:
COMMON_TOP/clone/bin/perl adcfgclone.pl appsTier pwd=apps
Following scripts are run by adcfgclone.pl
Creates context file for target adclonectx.pl

Run driver files
$ORACLE_HOME/appsutil/driver/instconf.drv
$IAS_ORACLE_HOME/appsutil/driver/instconf.drv

Relinking of Oracle Home $ORACLE_HOME/bin/adlnk806.sh $IAS_ORACLE_HOME/bin/adlnkiAS.sh
At the end it will run the driver file $COMMON_TOP/clone/appl/driver/appl.drv and then runs autoconfig.