Top 48 Oracle AOL (Application Object Library) Interview Questions You Must Prepare 29.Nov.2023

Apps schema is the one that comprises of only synonyms and there is no possibility of creating tables in it. Other schema comprises of tables and objects in it and allows the creation of tables as well as for providing grants to tables.

Application Top is a physical folder on server which holds all the executable, UI and support files.

We have two different types of Application Tops

  1. Product Top
  2. Custom Top

Product Top: Product top is the default top built by the manufacturer. This is usually called as APPL_TOP which stores all components provided by the Oracle.

Custom Top: Custom top can be defined as the customer top which is created exclusively for customers. According to the requirement of the client many number of customer tops can be made. Custom top is made used for the purpose of storing components, which are developed as well as customized. At the time when the oracle corporation applies patches, every module other than custom top are overridden.

This comes into picture when security rule comes into picture.

For example Say Maintanance is the one of the accounts in that we have cleaning painting expenses when we are not accesssible to main a/c (i.e maintanance) we cannot use sub a/c i.e cleaning and painting when you select Hierarchicalsecurity when it is non-Hierarchical we can use sub a/c i.e painting cleaning etc... 

_ALL  Table holds all the information about different operating units in a Multi-Org environment. You can also set the client_info to specific operating unit to see the data specific to that operating unit only.

Out put file and Log file are physically stored in server, you can find the physical path of log and output file of a concurrent request in FND_CONCURRENT_REQUESTS table.

Column LOGFILE_NAME stores Log file name along with the physical  path

Column OUTFILE_NAME sores Out file along with the physical path

In simple wordsOrg_id referes the operating unit and and organization id refers the InventoryOrganizationRegardsKarthikeyan


We can use $FLEX$.<Value set name> in the where condition of the target valueset to restrict LOV values bases on parent value set.

Step1: Enable Trace at the Report Definition.

Go to System Administrator -> Concurrent Programs -> Define , Query the report and check the ‘Enable trace‘ check box  Navigate to:

Query on the Profile Option: “Concurrent: Allow Debugging”
  This should be set to ‘yes’ at ‘Site’ level.
If it isn’t set, then set it, then logout and bounce the APPS services.
The ‘Debug Options’ button on the concurrent program will now be enabled. )

Step2: Run the report for Step @above

Step3: Get the request id from below query. i.e. Request id = 11111111

SELECT fcr.request_id “Request ID”
  –, fcr.oracle_process_id “Trace ID”
  ||’.trc’ “Trace File” ,
  TO_CHAR(fcr.actual_completion_date, ‘dd-mon-yyyy hh24:mi:ss’) “Completed” ,
  fcp.user_concurrent_program_name “Program” ,
  || fe.subroutine_name “Program File” ,
  ||DECODE(fcr.status_code,’R’,’Normal’) “Status” ,
  fcr.enable_trace “Trace Flag”
FROM fnd_concurrent_requests fcr ,
  v$parameter p1 ,
  v$parameter p2 ,
  fnd_concurrent_programs_vl fcp ,
  fnd_executables fe
WHERE                  =’user_dump_dest’
AND                    =’db_name’
AND fcr.concurrent_program_id  = fcp.concurrent_program_id
AND fcr.program_application_id = fcp.application_id
AND fcp.application_id         = fe.application_id
AND fcp.executable_id          =fe.executable_id
AND ((fcr.request_id           =
OR fcr.actual_completion_date > TRUNC(sysdate)))
ORDER BY DECODE(fcr.request_id,
  &request_id, 1, 2),
  fcr.actual_completion_date DESC;
–you will be prompted to enter the request_id;

Step4: trace file directory using an sql query

SELECT value FROM v$parameter WHERE name = ‘user_dump_dest’;

Step5: Go to directory in Step @above.

Step6: Find out the trace file using GREP command

eg:- grep ‘11111111’ *.trc

Step7: Run TKPROF to get a structured information from trace file.

Syntax of the command:

$ tkprof <RAW TRACE> <output> explain=apps_uname/apps_pwd sys=no  sort=prsela,exeela,fchela

Write a PL/SQL script to submit concurrent request using FND_REQUEST.Submit() API in a file and execute that file in shell script using SQLPLUS


sqlplus -s  apps/apps @XX_SUBMIT_CP.sql

GUI: Use Help->About Oracle Applications 

Scroll down to find the form name 

Character: Use Help->Version

$Flex$ is used when we need to return the Flex value contained by any AOL Vlauset or AOL object . 

For Ex . $Flex$. would return the value held by that valueset.

$profiles$. are used to get the values of environment variables like org_id or mfg_Organization_id etc which are related to the current apps environment.

Ex. $profiles$.org_id would return the operating unit which is active at that time for the user.

100 is the limit for the number of parameters for a concurrent program

May be your question about series of requests is from PL/SQL. For this it is not possible to submit series of requests at a time their is only one option to submit request from backend is fnd_request.sumbint_request(Paramenters)

We can find Custom Application top physical path from Application Developer responsibility:

navigate to Application Developer  –> Application –> Register. Query for the custom application 

name. The value in the field Basepath, is the OS system variable that stores the actual directory info.

Give it some more time. Did you ensure that you had run immediately checked when you submitted the report/request? If it was accidentally scheduled for a later date/time the best thing you can do is to submit it again with correct parameters.

  1. FTP the Custom.pll from $AU_TOP/resource 
  2. Open the Custom.pll in Forms6i 
  3. Include the following code for your Form logic :

    Form_Name varchar2(50) : name_in('system.current_form');
    If Form_Name 'YOUR CUSTOM FORM then
    include your logic

  4. Once changes over using the following command to generate the CUSTOM.plx f60gen module CUSTOM.pll userid apps/apps@mfgdev module_type LIBRARY to generate the latest CUSTOM.plx and move this CUSTOM.plx to $AU_TOP/resource

Token is used for trferring values towards report builder. Tokens are usually not case – sensitive.


If MULTI_ORG_FLAG is set to 'Y' Then its Multi Org.

If MULTI_ORG_FLAG is set to 'N' Then its single Org.

There are 8 different types of Value Set Validations.

  1. None: this is the indication of minimal validation.
  2. Independent: Input should be there in the list of – values that are defined previously.
  3. Dependent: According to the previous value, input is compared with a subset of values.
  4. Table: Input is checked on the basis of values that exist in the application table.
  5. Special: These are the values that make use of flex field.
  6. Pair: A pair can be defined as the set of values that make use of flex fields.
  7. Trlated Independent: This is a kind of value that can be made used only if there is any existence for the input in the list that is defined previously.
  8. Trlatable dependent: In this kind of validation rules that compare the input with the subset of values associated with the previously defined list.

There are two types of program incompatibilities, “Global” incompatibilities, and “Domain-specific” incompatibilities.

You can define a concurrent program to be globally incompatible with another program — that is, the two programs cannot be run simultaneously at all; or you can define a concurrent program to be incompatible with another program in a Conflict Domain. Conflict domains are abstract representations of groups of data. They can correspond to other group identifiers, such as sets of books, or they can be arbitrary.

Use adctrl utility to monitor and restart adworkers after fixing your locking problem. check ad workers log file that show you which table has problem and error message.

rf9 files are created while applying patches usually in $APPL_TOP/admin/SID/restart directory

  1. We can also find out through Help > About Oracle Applications
  2. SELECT release_name FROM fnd_product_groups

relink the particular module eg :if FNDLOAD is missing then relink FND module

US folder is nothing but a language specific folder. Oracle Apps uses american language by default and so is the US folder.

The Scheduler enables database administrators to full fill business tasks in an organized and controlled fashion.

To achieve job scheduling Oracle provides a collection of functions and procedures in the DBMS_SCHEDULER package.

Below are the major this a Scheduler can do:

  1. Schedule job execution based on time or events
  2. Schedule job processing in a way that models your business requirements
  3. Manage and monitor jobs
  4. Execute and manage jobs in a clustered environment

A field is a position on a form that one uses to enter, view, update, or delete information. A field prompt describes each field by telling what kind of information appears in the field, or alternatively, what kind of information should be entered in the field.

A flexfield is an Oracle Applications field made up of segments. Each segment has an assigned name and a set of valid values. Oracle Applications uses flexfields to capture information about your organization. There are two types of flexfields: key flexfields and descriptive flexfields.

We can also recover through the following steps:

Go to system administrator responsibility > Security > Responsibility > Define > Give the particular responsibility name query on it and then see the effective dates to field. If any date is there then that repsonsibility will expire on that date and if it is null then it will not expire on any date.

Log file get following name by default: lRequest_id.req

and Output file get following name by default :

Output files are stored at $APPLCSF/$APPLOUT
and Log files are stored at $APPLCSF/log

These paths may vary depending on the setups that sys admins perform at the time of Oracle Apps installation

go to applcation developer responsibilitynavigation->Application/function.query the function name then goto form tab then goto parameters field then write the following code in that fieldQUERY_YES= YES save the changes and then see the forms get affected in query only mode.

It can be generated through submission of Concurrent Program from Application Developer responsibility.

Key FlexField is used for creating unique identifiers or constraints. It is the building block which defines the structure of objects. Key flexfields are flexible enough to let any organization use the code scheme they want, without programming. With the help of Key Fields an organization can define rules to specify which segment values can be combined to make a valid complete code (also called a combination).

Descriptive FlexField is used to create new fields on screen and capture other information. Also provides customizable “expion space” on your forms. Descriptive flexfields can be context sensitive, where the information your application stores depends on other values that users enter in other parts of the form.

Key flexfields displays like text item but Descriptive FlexField displays like arrays. Key flexfields gives the result after simple entry of data and Descriptive FlexField is user dependent whic me when user want to get output.

Though FND_GLOBAL and FND_PROFILE gives us same result but they work in a different fashion FND_GLOBAL is a server-side package which returns the values of system globals, such as the login/signon or “session” type of values. Where as FND_PROFILE  uses user profile routines to manipulate the option values stored in client and server user profile caches.

From this we can understand that FND_GLOBAL works on server side and FND_PROFILE works on client side.

On the client, a single user profile cache is shared by multiple form sessions. Thus, when Form A and Form B are both running on a single client, any changes Form A makes to the client’s user profile cache affect Form B’s run-time environment, and vice versa.

On the server, each form session has its own user profile cache. Thus, even if Form A and Form B are running on the same client, they have separate server profile caches. Server profile values changed from Form A’s session do not affect Form B’s session, and vice versa.

That is the reason in forms we use FND_GLOBAL.

Autonomous Traction is a kind of traction that is independent of another traction. This kind of traction allows you in suspending the main traction and helps in performing SQL operations, rolling back of operations and also committing them. The autonomous tractions do not support resources, locks or any kind of commit dependencies that are part of main traction.

‘Run Alone‘ check box should be enabled in Concurrent program definition to make it run one request at a point of time.

Use: oerr ora XXXX 

or: oerr tns XXXX 

where XXXX is the error number 

(This also supports a number of other error types. Use the 3-letter error prefix in place of 'ora')

Navigate to the Concurrent Request Summary form 

  • Select a request 
  • In character, do a Quickpick on the Status column 
  • You can select Cancel or Hold 
  • In GUI, use the Cancel or Hold buttons 
  • The Sysadmin responsibility can cancel or hold any running request

The concurrent manager first looks for the environment variable $APPLCSF 

If this is set, it creates a path using two other environment variables: 


It places log files in $APPLCSF/$APPLLOG 

Output files go in $APPLCSF/$APPLOUT 

So for example, if you have this environment set: 

$APPLCSF = /u01/appl/common 
$APPLLOG = log 
$APPLOUT = out 

The concurrent manager will place log files in /u01/appl/common/log, and output files in /u01/appl/common/out 

Note that $APPLCSF must be a full, absolute path, and the other two are  directory names. 

If $APPLCSF is not set, it places the files under the product top of the application associated with the request. So for example, a PO report would go under $PO_TOP/$APPLLOG and $PO_TOP/$APPLOUT 

Logfiles go to: /u01/appl/po/9.0/log 
Output files to: /u01/appl/po/9.0/out 

Of course, all these directories must exist and have the correct permissions. 

You can do this with Custom.pll and if ur using apps version greater that 11.5.9 then you can do this with form personlization too

FlexRpt: The execution file is wrnitten using the FlexReport API.

FlexSql: The execution file is written using the FlexSql API.

Host: The execution file is a host script.

Oracle Reports: The execution file is an Oracle Reports file.

PL/SQL Stored Procedure: The execution file is a stored procedure.

SQL*Loader: The execution file is a SQL script.

SQL*Plus: The execution file is a SQL*Plus script.

Spawned; The execution file is a C or Pro*C program.

Immediate: The execution file is a program written to run as a subroutine of the concurrent manager. We recommend against defining new immediate concurrent programs, and suggest you use either a PL/SQL Stored Procedure or a Spawned C Program instead.

Request Set Stage Function: PL/SQL Stored Function that can be uesd to calculate the completion statuses of request set stages.

Basically a schema is collection of objects(tables views indexes sequences) belonging to particular user here in case of Oracle apps every module is implemented as a user for example Order Management is implemented as a user ONT so to create a custom schema we need to create a user and register the user with AOL.check this link for step by step process to create a custom module(Application) and register with oracle AOL.

No! As per Oracle standard process, the application will not allow file extensions. It will also not allow any special characters and spaces.

One of the easiest ways is to run the product if you can. Running Reports designer will give you the Reports version, running SQL*Plus will give you its version etc. 

Another easy way is to launch the Oracle Installer and look in the installed products on the right side. It will list all the products installed with their versions. 

Another way is to look at the .rgs file. This file is located in $ORACLE_HOME/orainst 

On UNIX, it will be called unix.rgs. On the PC, it will be called Windows.rgs. 

This file will list all the products installed and their versions. Note though that this file is not always correct. For example, patching Reports from to will not show up in this file as the new version. Running Reports Designer is the best way of getting the correct version. 

Also, on UNIX there is an executable called 'inspdver'. It is located in $ORACLE_HOME/orainst. 

Running it will produce a display of all the installed products. It just pulls the information from unix.rgs, so it may show the wrong information as well.

Quick Code or Lookup Code are short names given to some field values. an example is two letter codes given to Country names.

Navigate to the Update System Profile Screen. 

( navigate profile system)

  • Select Level: Site 
  • Query up Utilities:Diagnostics in the User Profile Options Zone. 

If the profile option Utilities:Diagnostics is set to NO, people with access to the Utilities Menu must enter the password for the ORACLE ID of the current responsibility to use Examine. If set to Yes, a password will not be required.




The Oracle Diagnostic Tool is provided by Oracle to gather and analyze information from eBusiness suite to diagnose an existing data issue, tractional problem or setup error through a complete set up responsibility “Application Diagnostics”.