Wednesday, June 18, 2008

Oracle Applications Important Questions and Answers

1) Explain Architecture of Oracle Apps 11i.

Terminology which you will encounter here & in most of Oracle Documentation.
Server - is a process or group of processes and provides a particular functionality/service For example, Database Server listen and process database requests, similarly Web Server listens for and processes HTTP requests.

Tier - is a logical grouping of services, may be on single machine or spread across more than one physical machine. For Example, Middle Tier in Oracle apps consist Form, Web, Report...Services. Forms & Report can be one machine 1 & Web Server can be on machine 2, still they will be part of same tier called as Application Tier or Middle Tier.

Node - is referred as Machine, Each tier may consist of one or more node and each node can potentially have more than one tier.

Desktop Tier - Oracle Applications/E-Business Suite is built on three tier Architecture with first Desktop Tier ic client machines accessing applications via browser(HTML based Self service applications) or Java Applet(Jinitiator) for Form based interface.

Application/Middle Tier - Second is Application Tier also called as middle tier consists of WebServer Forms, Reports, Concurrent processing, Discoverer and Admin Server. Its known as Middle tier because it lies between our desktop & third tier called database tier.

Database Tier - Third is Database Tier contain Oracle database server which store all your application data.

2) What are various components in Application/Middle Tier

In Application Tier various components are Web Server, Forms Server, Reports Server, Concurrent Manager, Admin Server & Discoverer Server.

3) What's Different Top’s in Application 11i

Oracle Installer Installs Apps 11i in DB Tier & Application Tier:

So lets take Application Tier where you will see three directories under your base Installation directory, these directories are APPL, ORA & COMN
APPL is called as APPL_TOP
This is top appl directory where files & directories related to different Applications (like GL General Ledger, PO Purchase Order) exist.
ORA is called as ORA_TOP (Application Technology Stack)
Here you will see directory related to oracle home, there are two oracle Home’s in Application Tier 8.0.6 for Forms & Reports, iAS oracle home for 9iAS acting as web server
COMN is called as COMN_TOP
It will contain files & directories such as log, output, html, java files which will be used commonly by all components
For Database Tier you will see two directories, DATA and DB
DATA contains Oracle database file used by the oracle applications. (Data files, Control files, redo log files etc.)
DB is the oracle home for the oracle9i RDBMS.

4) What’s US directory in $AD_TOP or under various product Top’s.

US directory is default language directory in Oracle Applications. If you have multiple languages Installed in your Applications then you will see other languages directories besides US, that directory will contain reports, fmx and other code in that respective directory like FR for France, AR for arabic, simplifies chinese or spanish.

5) Where is Concurrent Manager log file and output file location?

By default standard location for log files are in $APPLCSF/$APPLLOG or $COMMON_TOP/admin/log/$CONTEXT_NAME, in some cases it can go to $FND_TOP/log as well.
Standard location for output files are in $APPLCSF/$APPLOUT or $COMMON_TOP/admin/out/$CONTEXT_NAME.

6) What are AD utilities?

AD utilities are tools used by the Applications DBA to install, configure and maintain oracle applications. Eg : adpatch, adadmin, admrgpch, Rapid Clone etc.

7) Where are AD utilities log file and output file location?

Log and output files are in located at
$APPL_TOP/admin/$SID/log/$CONTEXT_NAME
$APPL_TOP/admin/$SID/out/$CONTEXT_NAME

8) Where would you find .rf9 file, and what exactly it does?

These files are used during restart of patch in case of patch failure because of some reason so that you are able to resume the patch session from where you got aborted.

9) Where is appsweb.cfg or appsweb_$CONTEXT.cfg stored & why its used?

This file is defined by the environment variable FORMS60_WEB_CONFIG_FILE. This is usually in directory $OA_HTML/bin on forms tier.
This file is used by any forms client session. When a user tries to access forms, f60webmx picks up this file and based on this configuration file creates a forms session to user/client.

10) What's the difference between a multi user & a single user Apps 11i install? What are advantages/disadvantages of two?

Multi user means there will be more than one user for managing the
Oracle applications. Usually one for the application tier and the other for the database tier. Through this multi user environment security is more. In a single user install, you can go for the express installation of applications, where the installation task is much easier, here the security is less as this user has full access to the whole applications.

11) What is wdbsvr.app file used for? What's full path of this file? What's significance of this file?

You can find this file under $IAS_ORACLE_HOME/Apache/modplsql/cfg
It’s related to mod_pls (mod plsql component of Apache/Oracle 11i Web Server) configuration file. This file is used by mod_plsql component of Apache to connect to database. So when you type url http://hostname:port/pls/SID , whenever Apache(11i Web Server) finds that request is for /pls/ then Apache delegates this request to mod_pls component which in turn pick this file & check if there is any DAD with name SID (in our example its VISION11I) &
Sample entry in wdbsvr.app
[DAD_VISION11I]
connect_string = VISION11I
password = apps
username = APPS
default_page = fnd_web.ping
On typing http://hostname: port/pls/VISION11I, it will connect to database using apps schema & will return you page fnd_web.ping (where fnd_web is package & ping is procedure or vise versa).
URL is quite useful in troubleshooting so you can check if database connection is working fine or not. Another thing you want to check about this file is since it stores APPS password you need to change here whenever you change apps password.

12) Explain steps used in cloning oracle Apps 11i Instance at broad level.

Step1 . Prerequisites Steps you do before start cloning using rapid clone
1.1 Verify source and target nodes software versions
1.2 Apply the latest AutoConfig Template patch
1.3 Apply the latest Rapid Clone patches

Step2 . Clone Source to Target
2.1 Run preclone on DB tier
2.2 Run preclone on Apps or middle tier
2.3 Copy source file system to target file system
2.4 Configure db tier
2.5 Configure apps/middle tier

Step 3 Finishing Task
3.1 Update profile options
3.2 Update printer settings (If printers are not configured or you don't want to use printer you can skip this step)
3.3 Update workflow configuration settings (Important)

13) What is multi node system?

Multi Node System in Oracle Applications 11i means you have Applications 11i Component on more than one system. Typical example is Database, Concurrent Server on one machine and forms, Web Server on second machine is example of Two Node System.

14) Can you clone from multi node system to single node system & vice versa?

Yes, this is now supported via Rapid Clone; Check if your system has all prerequisites patches for Rapid Clone and you are on latest rapid clone patch.

15) Does rapid clone takes care of Updating Global oraInventory or you have to register manually in Global OraInventory after clone?

Rapid Clone will automatically Update Global oraInventory during configuration phase. You don't have to do any thing manually for Global oraInventory.

16) What is .dbc file, where it is stored, what’s the use of .dbc file?

dbc as name says is database connect descriptor file which stores database connection information used by application tier to connect to database. This file is in directory $FND_TOP/secure also called as FND_SECURE

17) What things you do to reduce patch timing?

You can take advantage of following -
Merging patches via admrgpch.
Use various adpatch options like nocompiledb or nocompilejsp.
Make Use defaults file.
Make use of shared APPL_TOP.
Staged APPL_TOP during upgrades.
Use of Distributed AD Environment features.

18) What are various options available with adpatch?

Various options available with adpatch depending on your AD version are
autoconfig, check_exclusive, checkfile, compiledb, compilejsp, copyportion, databaseportion, generateportion, hotpatch, integrity, maintainmrc, parallel, prereq, validate

19) What is the use of adident utility?

adident utility in oracle apps is used to find version of any file. AD Identification.
For eg. "adident Header

20) What is the use of adsplice utility?

adsplice in oracle apps is utility to add a new product.

21) How can you license a product after installation?

You can use ad utility adlicmgr ($AD_TOP/bin) to license product in Oracle Apps or make use of Oracle Application Manager.

22) What is MRC? What you do as Apps DBA for MRC?

MRC also called as Multiple Reporting Currency in oracle Apps. Default you have currency in US Dollars but if your organization operating books are in other currency then you as apps dba need to enable MRC in Apps. You can enable it with the adadmin utility.

23) What is JVM (Java Virtual Machine) and which component uses JVM?

JVM - acronym for Java Virtual Machine that executes instructions generated by Java compiler. So when a user clicks on any Self Service Request or any program that uses Java, then Apache forwards this request to mod_jserv (mod_oc4j in 10g AS) & mod_jserv caters this request with help of JVM.

24) How & where check JVM related configuration in Oracle Apps 11i?

So lets start with CONTEXT file under $APPL_TOP/admin (xml file) which is of pattern $SID_$HOSTNAME.xml
There are two important lines in CONTEXT file that will help you in understanding JVM
jvm_options oa_var="s_jvm_options" osd="Solaris" -verbose:gc -Xmx512M -Xms128M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps -XX:+UseTLAB /jvm_options
-Verbose:gc means JVM is configured to print output when gc (Garbage Collector) runs.
Xmx is maximum memory allocated to JVM in above example its 512 MB.
Xms is JVM will start with this much memory i.e. 128 MB.
Now check another line in 11i Context file like
oacore_nprocs oa_var="s_oacore_nprocs"1/oacore_nprocs
Which means that there is one JVM for OACore Group.
Change it to 2, to cater huge Self Service users if required.

25) How to increase No. Of JVMs?

Since you know place where number of JVM's are stored in Apps 11i in Context File, so you can change them as per your requirement. There are basically following Groups with their own JVM's.
OACoreGroup, where most of Java request goes
DiscoGroup, which serve your Discoverer related requests
FormsGroup, for Forms (If they are running in Servlet Mode, confirm it again)
XmlSvcsGroup, for XML Services
In Context File
disco_nprocs oa_var="s_disco_nprocs" osd="Solaris" 1 /disco_nprocs Sets 1 JVM Process for Discoverer.
oacore_nprocs oa_var="s_oacore_nprocs" 1 /oacore_nprocs Sets 1 JVM for for OACoreGroup
Similarly, s_forms_servlet_nprocs & s_xmlsvcs_nprocs for Forms & XML Services resp.
These Groups are defined in configuration file for Jserv . jserv.conf under $IAS_ORA/Apache/Jserv/conf ; like
ApJServGroup OACoreGroup
ApJServGroup DiscoGroup
ApJServGroup FormsGroup
ApJServGroup XmlSvcsGrp

26) Where to find Apps 11i JVM logs?

JVM log location is defined in java.sh (found in $IAS_ORACLE_HOME/Apache/Apache/bin). Oracle Apps 11i JVM log file directory is defined by parameter JVMLOGDIR ($IAS_ORACLE_HOME/Apache/Jserv/logs/jvm) and log file are defined by STDOUTLOG & STDERRLOG. Examples of JVM log files are
OACoreGroup.0.stderr ,OACoreGroup.0.stdout, DiscoGroup.0.stdout, DiscoGroup.0.stderr, XmlSvcsGrp.0.stderr, XmlSvcsGrp.0.stdout
where 0 denotes first JVM & 1 denotes second JVM. stderr records error encountered in JVM & stdout records other information like GC.
Analyzing Oracle Apps 11i JVM logs
In order to analyze Oracle apps 11i JVM, lets open stdout file for one of Group, I have selected OACoreGroup here, you know log file location (If not check previous) , open file like OACoreGroup.X.stdout you should see output like below if GC (Garbage Collector) is set in Verbose mode.
48561.624: [GC 325980K->170382K(519168K), 0.2751056 secs]
49307.880: [GC 334862K->179171K(519168K), 0.2660486 secs]
50236.662: [GC 343651K->187797K(519168K), 0.2518720 secs]
50515.494: [Full GC[Unloading class sun. reflect. Generated Method Accessor 143]
[Unloading class sun. reflect. GeneratedMethodAccessor136]
[Unloading class sun. reflect. GeneratedMethodAccessor74]
Here first entry is time since JVM was started so each time you bounce Apache it will be reset to 0. So difference between two entries is seconds after which GC (Garbage Collector) was executed. First entry in bracket [ is Heap Size at start of GC & Second entry is Heap Size after GC was executed. Number mentioned in round bracket () is heap size currently allocated in K. If you see GC running very frequently, you can start thinking of increasing JVM heap size
First three entries were for Minor Garbage Collector & fourth one is FULL GC is for Full Garbage Collector.

27) How to check JDBC Connection?

connect using apps, sys or system & issue
select count(*), module from v$session where program like '%JDBC%' group by module;

28) How to find JDBC thin driver that your iAS 1.0.2.2.2 is using?

Here is a java program & procedure to compile it that will give your jdbc thin driver version.
Create a file with name JDBCVersion.java in your middle tier (Application Tier)
---------
import java.sql.*;
import oracle.jdbc.driver.*;
class JDBCVersion
{
public static void main (String args[])
throws SQLException
{
// Load the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// Get a connection to a database
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=YES) (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST= ) (PORT= )))(CONNECT_DATA=(SID=)))" ,"apps","");
// Create Oracle DatabaseMetaData object
DatabaseMetaData meta = conn.getMetaData();
// gets driver info:
System.out.println("JDBC driver version is " + meta.getDriverVersion());
}
}
-----------
Replace following parameters
1. with your database hostname or IP address
2. with your database port no.
3. with SID for your database
4. with your apps password
After changing save it with name JDBCVersion.java in your middle tier & execute command
javac JDBCVersion.java
This will create class file in your working directory. Include your current directory into your class path like
export CLASSPATH=$CLASSPATH:/.xml and is in /admin for each node of application tier. It contains configuration information for the application tier of a specific oracle applications system. It is used to configure all the other files necessary to set up and make available particular oracle applications system. Database context file is in the location /appsutil and it contains configuration information for the database tier of a specific oracle application system

29) How to size Apps 11i JVM?

Sizing Apps JVM
There are four JVM Groups, OACoreGroup, DiscoGroup, FormsGroup & XMLsvcsGrp (FormsGroup JVM's disabled by default as forms run on Socket rather servlets)
So thumb rule in Apps is
1 JVM with default settings per 100 Users for OACoreGroup
So if you have 1000 users with five middle tiers you can configure 2 JVM on each middle tier i.e. 2X5X100=1000 Users.

30) What is access_log in apache, what entries are recorded in access_log? Where is default location of this file?

access_log in Oracle Application Server records all users accessing oracle applications 11i. This file location is defined in httpd.conf with default location at $IAS_ORACLE_HOME/Apache/Apache/logs.
Entries in this file are defined by directive LogFormat in httpd.conf . Typical entry in access_log is
198.0.0.1 - - [10/Sep/2006:18:37:17 +0100] "POST /OA_HTML/OA.jsp?.... HTTP/1.1" 200 28035
where 200 is HTTP status code & last digits 28035 is bytes dowloaded as this page (Size of page)

31) Where are Jserv configuration files stored?

Jserv configuration files are stored in $IAS_ORACLE_HOME/Apache/Jserv/etc

32) If someone ask Apps DBA to change Session Idle Time out value how & where will you change?

In order to answer first you have to understand what kind of sessions are in Apps 11i and what is idle timeout?
In Apps there are two broad categories of session
- Self Service Application Session (Server by Web Server iAS Apache & Jserv, like iRecruitment, iProcurement)
-Forms session (served by your form session, like system Administrator)
What is Session Idle time?
If Oracle Apps client is not doing any activity for some time (when application user goes for coffee or talks over phone) session during that time is called as Idle Session & because of security reason, performance issues and to free up system resource Oracle Applications terminates client session (both forms & self service) after idle time value is reached to the one mentioned in configuration file.

From FND.G or 11.5.9 or with introduction of AppsLocalLogin.jsp to enter into application, profile option "ICX Session Timeout" is used only to determine Forms Session Idle timeout value. This might be confusing as earlier this profile option used to control forms as well as self service application (with session.timeout) session.timeout is used to control Idle session timeout for Self Service Applications (Served by Jserv via JVM)

From where ICX: Session Timeout & session.timeout get values?
Autoconfig determines value for profile option "ICX: Session Timeout" and "session.timeout" from entry in context file ($APPL_TOP/admin/SID_hostname.xml) with parameter s_sesstimeout where value mentioned is in milliseconds so profile option ICX: Session Timeout value should be s_sesstimeout/ (1000 * 60) which means here its 10 Minutes. This value is also set in zone.properties in $IAS_ORACLE_HOME/Apache/Jserv where number mentioned is in milli second i.e. 600000 (equal to 10 Minutes) session.timeout = 600000
session.timeout mentioned in zone.properties is in milli seconds, ICX Session Time out mentioned in profile option ICX: Session Timeout is in minutes so ICX session timeout=30 & session.timeout= 1800,000 are same 30 minutes
P.S. ICX Session time out was introduced in FND.D so if your FND version is below D you might not see this variable.

Important Things Apps DBA should consider while setting session timeout value ?

1. If you keep session.timeout value too high, when some oracle application user accessing Self-service application terminates his session, so longer idle session will drain JVM resource & can result in Java.Lang No Memory available issues.

2. If you keep it too low, users going out for tea or sitting idle for some time have to login again into application & can be annoying.
Thumb rule is session time out usually set to 30 minutes.

33) Where are applications start/stop scripts stored?

Applications start/stop scripts are in directory $COMMON_TOP/admin/scripts/$CONTEXT_NAME

34) What are main configuration files in Web Server (Apache)?

Main configuration files in Oracle Apps Web Server are
httpd.conf, apps.conf, oracle_apache.conf, httpd_pls.conf
jserv.conf, ssp_init.txt, jserv.properties, zone.properties
plsql.conf, wdbsvr.app, plsql.conf

35) What is Autoconfig ?

AutoConfig is a configuration tool that automates the configuration of an Oracle Applications system. The information required for configuring an Applications system is collected into a repository, called the Applications Context; there is one Applications Context for each application tier, and one for the database tier. When AutoConfig runs, it uses information from the Applications Context file to generate all configuration files and update database profiles.

36) What is context file ?

Context file is called .xml and is in /admin for each node of application tier. It contains configuration information for the application tier of a specific oracle applications system. It is used to configure all the other files necessary to set up and make available particular oracle applications system. Database context file is in the location /appsutil and it contains configuration information for the database tier of a specific oracle application system

37) How to create User in Oracle Applications 11i ? Can you delete a User ?

You can create a user in oracle applications through OAM, you cannot delete a user that is created, instead you can make him expire so that you wont be able to login again.

38) What is Single Sign On ? ( If you are using portal 3.0.9 or 10G )?

As name says Single-Sign On Server is set of services (Software) which enables login to Application once which will allow you to login to partner Applications with no need to login again. Lets assume I have configured single SSO Server for Portal , E-Business Suite, Collaboration Suite plus some other other applications, Now if I login to any one of them & after that if I wish to login to other applications I should be able to login without supplying passwords again.

39) How to check if Apps 11i System is Autoconfig enabled ?

Under $AD_TOP/bin check for file adcfginfo.sh & if this exists use
adcfginfo.sh contextfile= show=enabled
If this file is not there , look for any configuration file under APPL_TOP if system is Autoconfig enabled then you will see entry like
# AutoConfig automatically generates this file. It will be read and .......

40) How to check if Oracle Apps 11i System is Rapid Clone enabled ?

For syetem to be Rapid Clone enabled , it should be Autoconfig enabled (Check above How to confirm if Apps 11i is Autoconfig enabled). You should have Rapid Clone Patches applied , Rapid Clone is part of Rapid Install Product whose Family Pack Name is ADX. By default all Apps 11i Instances 11.5.9 and above are Autoconfig & Rapid Clone enabled.

41) Whats is difference between two env files in .env and APPS.env under $APPL_TOP ?

APPS.env is main environment file which inturn calls other environment files like .env under $APPL_TOP, .env under 806 ORACLE_HOME and custom.env for any Customized environment files

42) What is access_log in Apache ?

access_log file keeps record of users accessing Oracle Apps 11i Webserver.
Typical entry in access_log is like
198.0.0.1 - - [25/Aug/2006 :03:15:13 +0100] "GET /OA_JAVA /oracle /forms /registry/Registry.dat HTTP/1.1" 200 4117
Which means client with IP 198.0.0.1 requested for file mentioned above on 25 Aug 2006 at 03:15 AM , 200 is status code returned by Apache which means page returned successfully (Status Code 302 means page redirected , 404 page not found, 500+ Internal Server error)
last digit 4117 in above entry of access_log means file size which is 4117 bytes. This file is quite useful in monitoring your Web Server.
Please note above format might defer on your system as this is dependent log_format in Apache configuration file ( httpd.conf)

43) Whats is location of access_log file ?

access_log file by default is located in $IAS_ORACLE_HOME/ Apache/Apache/logs. Location of this file is defined in httpd.conf by patameter CustomLog or TransferLog

44) What is your Oracle Apps 11i Webserver Version and how to find it ?

From 11.5.8 to 11.5.10 Webserver version is iAS 1.0.2.2.2, In order to find version under $IAS_ORACLE_HOME/Apache/Apache/bin execute ./httpd -version
./httpd -version
Server version: Oracle HTTP Server Powered by Apache/1.3.19
Server built: Dec 6 2005 14:59:13 (iAS 1.0.2.2.2 rollup 5)
P.S. You can configure 10g Application Server as well with Oracle Apps 11i.

45) What is Location of Jserv configuration files ?

Jserv configuration files are located in $IAS_ORACLE_HOME /Apache/Jserv/etc .

46) What is pl/sql database cache ?

In order to improve performance mod_pls (Apache component) caches some database content to file. This database/plssql cache is usually of type session & plsql cache
session cache is used to store session information.
plsql cache is used to store plsql cache i.e. used by mod_pls

47) Where is database/plsql cache stored ?

plssql & session cache are stored under $IAS_ORACLE_HOME/ Apache/modplsql/cache directory.

48) How to determine Oracle Apps 11i Version ?

select RELEASE_NAME from fnd_product_groups;
You should see output like
RELEASE_NAME
-----------------------
11.5.9 or 11.5.10.2

49) What is *.dbc file & whats is location of dbc file ?

dbc as name stands for is database connect descriptor file used to connect to database. This file by default located in $FND_TOP/secure directory also called as $FND_SECURE directory

50) What is content of dbc file & why its important ?

DBC file is quite important as whenever Java or any other program like forms want to connect to database it uses dbc file. Typical entry in dbc file is
GUEST_USER_PWD
APPS_JDBC_URL
DB_HOST