Dienstag, 20. November 2012

Oracle Forms and Reports Quick start



During the summer I needed to quickly work myself into Oracle Forms for a business opportunity and I decided to share my experience in form of this quick start guide.
We will look at the installation process on Windows and Linux in a development and production configuration. To work with the Forms samples we install an Oracle Express Edition Database. We will look at the basic operations and a database tutorial to get acquainted with this edition. We also look at an Application Express Example, Oracle’s quick and simple approach to database applications. We will use the development configuration to run through the Forms tutorial “Creating a Master-Detail Form”, which ships with the product. Eventually we will look at a Forms and Reports installation in a high-availability configuration. We propose a setup on two virtual box Linux machines and provide an action plan for its installation.

Software Versions used:
  • Weblogic Server 10.3.6 Generic
  • JRockit 64-Bit for Windows R28.2.4
  • Oracle Forms and Reports 11g Release 2, Windows 64-bit
  • Oracle Database Express Edition 11g Release 2
  • Oracle Linux Release 5 Update 8 for x86_64 (64 Bit)
  • Java SE Development Kit 6 Update 33 for Linux x64
  • Oracle Forms and Reports 11g Release 2 for Linux 64 bit
  • Oracle SQL Developer 3.1 (3.1.07.42). 




******************************************************************************************
This is the text-only preview. Please open the PDF file for full formatting and pictures.
******************************************************************************************




1 Contents
Oracle Forms and Reports Quick start 1
1 Contents 1
2 Introduction 3
3 Installation of the Forms and Reports Development Environment 3
3.1 Java Installation 4
3.2 Weblogic Installation 4
3.3 Forms and Report Installation 5
3.4 Forms and Reports Configuration 5
3.5 Troubleshooting 5
4 Oracle Express Database 6
4.1 Installation 6
4.2 Quickstart 8
4.2.1 Start the database 8
4.2.2 Login at the home page 8
4.2.3 Create a user 8
4.2.4 Install SQL Developer 9
4.2.5 Creating a Connection in SQL Developer. 9
4.2.6 Tutorial: Creating Objects for a Small Database 10
4.2.7 Un-locking the Sample User Account 12
4.2.8 Creating an Application Using Application Express 13
4.3 Offline Documentation 13
4.4 Links 13
5 Forms Quickstart 14
5.1 Start Forms 14
5.1.1 Start Weblogic Server 14
5.1.2 Weblogic Server URLs 14
5.1.3 Test forms 14
5.2 Tutorial 15
5.2.1 Prerequisites 16
5.2.2 Step 1 - Setting Up the Development Environment 16
5.2.3 Further Steps 17
5.3 Deploying an Application. 17
6 High Availability Configuration 18
6.1 Installation of Oracle Linux 5.8 on Virtual Box 19
6.2 Extending the file system 19
6.3 Network settings 22
6.3.1 Editing the hosts files. 22
6.3.2 Configure Linux Network 23
6.4 Testing the network 23
6.5 Linux Users. 23
6.6 Forms installation 24
6.7 Java Installation 24
6.8 WLS Installation 25
6.9 Forms installation 25
6.10 Forms Configuration 29
6.11 Testing the installation 30
6.11.1 Starting the server 30
6.11.2 Checking Browser URLs: 30
6.12 Next Steps 31
6.13 Troubleshooting Forms Configuration 31
6.13.1 Log file review 32
6.13.2 Testing the elements of the Installation 32
6.13.3 Removing Instance asinst_1 33
7 Links 34
7.1 Download Links 34
7.1.1 JRockit 64-Bit for Windows R28.2.3 34
7.1.2 JRockit 64-Bit for Windows R28.2.4 34
7.1.3 Weblogic Server 10.3.6 Generic 64-bit 34
7.1.4 Weblogic Server 10.3.5 32-Bit for Windows 34
7.1.5 Oracle Forms and Reports 11g Release 2, Windows 64-bit 35
7.1.6 Oracle Forms and Reports 11g Release 2, Windows 32-bit 35
7.1.7 Database Express Edition 11g Release2 35
7.1.8 Java SE Development Kit 6 Update 33 for Windows x64 35
7.1.9 Oracle Linux Release 5 Update 8 for x86_64 (64 Bit) 35
7.1.10 Java SE Development Kit 6 Update 33 for Linux x64 35
7.1.11 Oracle Forms and Reports 11g Release 2 for Linux 64 bit 36
7.1.12 Oracle Forms 11g Demo Pack 36
7.1.13 Oracle SQL Developer 3.1 (3.1.07.42) February 7, 2012 36
7.2 Documentation Links 36
8 Conclusion 37

2 Introduction
Oracle Forms and Reports is part of the Fusion Middleware stack, and although we can find many recommendations to use ADF for new developments, many companies stick to their legacy applications, developed with Forms, and are quite happy with it. Meanwhile Oracle has lifted this traditional two tiered client-server technology on the application server, thus improving scalability and high availability, while maintaining backward compatibility. As it is the case with all Fusion Middleware products, Forms is based on WLS. The development configuration uses a single server domain, whereas the high availability solution is based on WLS cluster technology and can span multiple machines. We want to have a look at both configurations. We will start with the simplest installation form, which is the development environment that uses only a single Weblogic Server. This is enough to run a Forms tutorial, which is included in Oracles documentation. This tutorial instructs us to create a master detail form application and provides a good overview of the technology and development approach.
Before running the tutorial however, we need to install and configure a database. Oracle Express edition is sufficient for our purposes. We will look at the installation and some samples. Eventually we will install Forms for a second time, in a Virtual Box Linux machine. This time we choose a production configuration, including an entry HTTP server which load-balances the requests to the WLS tier. This installation also includes the enterprise manager. While this installation is yet not clustered, we will briefly discuss the steps to setup a cluster and span it across two machines.  

3 Installation of the Forms and Reports Development Environment

We want to install Forms and Reports on Windows 7 64-bit. We choose the development installation option which means that we install Forms in a single WLS server instance without a separate Admin server. As a consequence the Enterprise Manager is not available.
First we have a look at the Certification Matrix in Excel (http://www.oracle.com/technetwork/developer-tools/forms/oracle-forms-11gr2certmatrix-519680.xls ).

We follow the instructions from the Quick Installation Guide for Oracle Forms and Reports http://docs.oracle.com/cd/E17904_01/install.1111/e12003/claqi.htm 

Since there might be problems on Windows systems with too long pathnames we plan the directory structure of the installation with the following path names. 
Middleware Home D:\12Forms
Java Home D:\12Forms\jR28-64
Weblogic Server Home D:\12Forms\wlserver_10.3
Oracle Forms Home D:\12Forms\FRHome1
Oracle Common Home D:\12Forms\oracle_common
Domain Home D:\12Forms\domains\ClassicDomain
Instance Home D:\12Forms\asinst_3
Table  1. Pathnames for the Forms Installation on Windows
3.1 Java Installation
Installation of jrockit-jdk1.6.0_33-R28.2.4-4.1.0-windows-x64.exe
Installation location=D:\12Forms\jR28-64
We simply run the installer executable and go with the defaults. We use the download from 7.1.2.
We test the version:
C:\Users\uScorpio>set JAVA_HOME=D:\12Forms\jR28-64

C:\Users\uScorpio>%JAVA_HOME%\bin\java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03)
Oracle JRockit(R) (build R28.2.4-14-151097-1.6.0_33-20120618-1634-windows-x86_64, compiled mode)
Ok.
3.2 Weblogic Installation
We use the download of the generic installation archive from 7.1.3.
We run the following command to start the installer.
D:
cd D:\12Forms\
set JAVA_HOME=D:\12Forms\jR28-64
set PATH=%JAVA_HOME%\bin;%PATH%
java -version
%JAVA_HOME%\bin\java -jar wls1036_generic.jar
Ok.
3.3 Forms and Report Installation
We use the unpacked installation from the download at 7.1.5.
We run the following commands to start the installer.
d: 
cd D:\01Downloads\ofm_frmrpts_win_11.1.2.0.0_64_disk1_1of1\Disk1
setup.exe
Location of the installation logfile:
Log=C:\Program Files\Oracle\Inventory\logs\install2012-07-18_06-38-20PM.log
3.4 Forms and Reports Configuration
We set up a development configuration by starting the configuration tool with the following commands.
d:
cd D:\12Forms\FRHome1\bin
config.bat 
Logfile=C:\Program Files\Oracle\Inventory\logs\install2012-07-18_08-10-43PM.log

We save the summary to D:\12Forms\configuration_summary.txt
Typ: Oracle Forms and Reports-Installation
Konfigurationsoptionen
Speicherort von Middleware Home: D:\12Forms
Speicherort von Oracle Home:D:\12Forms\FRHome1
Speicherort der Oracle-Instanz:D:\12Forms\asinst_3
Oracle-Instanz:asinst_3
Domainoption: Create Domain
Domainname:ClassicDomain
Domainstandardverzeichnis:D:\12Forms\domains\ClassicDomain
Domainhostname: 192.168.178.103
Domain-Port-Nummer: 7001
Benutzername: weblogic
Automatische Port-Erkennung:true
Administratorkonsole: http://192.168.178.103:7001/console
Forms-URL: http://192.168.178.103:7001/forms/frmservlet
Reports-URL: http://192.168.178.103:7001/reports/rwservlet
Ok.
3.5 Troubleshooting

The configuration of Forms on Windows fails repeatedly. The installer fails in restarting weblogic. In the installation Log we find the line:
java.lang.Exception: "\Java\jre6\lib\ext\QTJava.zip" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Further investigations reveal that the variable CLASSPATH in the system environment is set to 
CLASSPATH=.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
We login to Windows as Administrator and change it to 
CLASSPATH=.
After that the installation succeeds.


4 Oracle Express Database
We install the latest version of the Oracle Express Database to be used with the Forms installation.
4.1 Installation
We use the following installer: D:\01Downloads\OracleXE112_Win32\DISK1\setup.exe.
According to the Installation Guide the user for installations needs to be a member of the Administrators group. 
We run the installation, using “run as Administrator”.
We choose the password “welcome1” for the SYS and SYSTEM database accounts.
The summary of the installation is given in the following figure.
Figure  1. Summary of the Database 11g Express Installation.
We get the following error:
Figure  2. Error during installation.
The directory C:\Users\aScorpio\AppData\Local\Temp\{2D01C272-ADE9-45A9-A7FD-6B7F4EB8AE97} exists, but the file KEY_XE.reg does not. So it is unclear what this error means. The installation proceeds successfully.

After starting the database and running Quick start from the start menu the following error appears:

Obviously the database is not correctly installed.
We run an uninstall, add the user uScorpio to Administrators, reboot and install again.
Again we get the following error:  

But the installation proceeds successfully again. But we get the same error message from the “Get Started” desktop icon.
The URL http://127.0.0.1:8080/apex/f?=4950 delivers a http Bad Request.
The database creation logs at D:\10Oracle\03Database\oraclexe\app\oracle\product\11.2.0\server\config\log don’t contain any errors.
The logfile OracleDatabaseXEServerInstall.log cannot be found on the system.

We reboot the computer and start the database from the start menu. (Run->All Programms->Oracle Database 11g Express->Start Database.
After that the “Get Started” icon starts a browser with the database start screen.
Figure  3. Database start screen which shows after reboot and database start.
Ok.

4.2 Quickstart
We follow the instructions in the “Getting Started Guide” to become acquainted with the database. (http://docs.oracle.com/cd/E17781_01/admin.112/e18585/toc.htm)

4.2.1 Start the database
We use the Desktop Icon “Start database” which executes:
C:\Windows\SysWOW64\cmd.exe  /k D:\10Oracle\03Database\oraclexe\app\oracle\product\11.2.0\server\bin\StartDB.bat
4.2.2 Login at the home page
We browse to http://127.0.0.1:8080/apex/f?p=4950 and click “storage”.
From the Login screen we login as system/welcome1
4.2.3 Create a user
We start the SQL command line from the windows start menu which executes the command: 
D:\10Oracle\03Database\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus.exe /nolog
We connect and create a user and grant privileges.
Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> connect
Enter user-name: system
Enter password:
Connected.
SQL> create user chris identified by welcome1;
User created.

SQL> grant connect, resource to chris;

Grant succeeded.

SQL> grant create view to chris;

Grant succeeded.
4.2.4 Install SQL Developer
We install SQL Developer by unpacking the file to D:\10Oracle\03Database\sqldeveloper64-3.1.07.42-no-jre\sqldeveloper\

We use this java executable D:\13Java\03JavaSE6\jdk1.6.0_33-64bit\bin
C:\Users\uScorpio>D:\13Java\03JavaSE6\jdk1.6.0_33-64bit\bin\java.exe -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)
We start SQL Developer with D:\10Oracle\03Database\sqldeveloper64-3.1.07.42-no-jre\sqldeveloper\sqldeveloper.exe
We create an icon in the start menu.

4.2.5 Creating a Connection in SQL Developer.
We manually create a connection for Chris as depicted in the following figure:
Figure  4. Manually creating a connection with SQL Developer.

4.2.6 Tutorial: Creating Objects for a Small Database
We work through the tutorial from the Oracle SQL Developer User’s Guide on Creating Objects for a small database. (http://docs.oracle.com/cd/E18464_01/doc.30/e17472/tut_library.htm#CBACFDCH)

Here are some remarks to the chapters.
In “4.8 Debug a PL/SQL Procedure”
We need to grant more privileges to user Chris. We create a new connection (as SYSDBA) with the user sys/welcome1 an run the commands in a SQL worksheet.
grant DEBUG CONNECT SESSION to chris;
grant DEBUG ANY PROCEDURE to chris;
Now we go back to the session from Chris and continue.

In “4.10 Script for Creating and Using the Library Tutorial Objects” the whole tutorial is summarized as the following sql script, which we format, using the SQL editor from eclipse.

-- Clean up from any previous tutorial actions.
DROP TABLE transactions;
DROP TABLE books;
DROP TABLE patrons;
DROP SEQUENCE patron_id_seq;
DROP SEQUENCE transactions_seq;
DROP TRIGGER transactions_trg;
DROP VIEW patrons_trans_view;
DROP PROCEDURE list_a_rating;
DROP PROCEDURE list_a_rating2;
set serveroutput on
-- Create objects.
CREATE TABLE books (
   book_id VARCHAR2(20),
   title VARCHAR2(50)
      CONSTRAINT title_not_null NOT NULL,
   author_last_name VARCHAR2(30)
      CONSTRAINT last_name_not_null NOT NULL,
   author_first_name VARCHAR2(30),
   rating NUMBER,
   CONSTRAINT books_pk PRIMARY KEY (book_id),
   CONSTRAINT rating_1_to_10 CHECK (rating IS NULL OR
      (rating >= 1 and rating <= 10)),
   CONSTRAINT author_title_unique UNIQUE (author_last_name, title));
CREATE TABLE patrons (
   patron_id NUMBER,
   last_name VARCHAR2(30)
      CONSTRAINT patron_last_not_null NOT NULL,
   first_name VARCHAR2(30),
   street_address VARCHAR2(50),
   city_state_zip VARCHAR2(50),
   location MDSYS.SDO_GEOMETRY,
   CONSTRAINT patrons_pk PRIMARY KEY (patron_id));
CREATE TABLE transactions (
   transaction_id NUMBER,
   patron_id CONSTRAINT for_key_patron_id
      REFERENCES patrons(patron_id),
   book_id CONSTRAINT for_key_book_id
      REFERENCES books(book_id),
   transaction_date DATE
      CONSTRAINT tran_date_not_null NOT NULL,
   transaction_type NUMBER
      CONSTRAINT tran_type_not_null NOT NULL,
   CONSTRAINT transactions_pk PRIMARY KEY (transaction_id));
CREATE SEQUENCE patron_id_seq 
   START WITH 100
   INCREMENT BY 1;
-- The sequence for the transaction_id 
-- in the tutorial is created automatically,
-- and may have the name TRANSACTIONS_SEQ.
CREATE SEQUENCE transactions_seq 
   START WITH 1
   INCREMENT BY 1;
-- The before-insert trigger for transaction ID values
-- in the tutorial is created automatically,
-- and may have the name TRANSACTIONS_TRG.
CREATE OR REPLACE TRIGGER transactions_trg
   BEFORE INSERT ON TRANSACTIONS 
  FOR EACH ROW 
  BEGIN
    SELECT TRANSACTIONS_SEQ.NEXTVAL INTO :NEW.TRANSACTION_ID FROM DUAL;
  END;
/
CREATE VIEW patrons_trans_view AS
  SELECT p.patron_id,
         p.last_name,
         p.first_name,
         t.transaction_type,
         t.transaction_date
    FROM patrons p, transactions t
   WHERE p.patron_id = t.patron_id
   ORDER BY p.patron_id, t.transaction_type;
-- Procedure: List all books that have a specified rating.
CREATE OR REPLACE PROCEDURE list_a_rating(in_rating IN NUMBER) AS
  matching_title VARCHAR2(50);
  TYPE my_cursor IS REF CURSOR;
  the_cursor my_cursor;
BEGIN
  OPEN the_cursor
    FOR 'SELECT title 
           FROM books 
          WHERE rating = :in_rating'
    USING in_rating;
  DBMS_OUTPUT.PUT_LINE('All books with a rating of ' || in_rating || ':');
  LOOP
    FETCH the_cursor INTO matching_title;
    EXIT WHEN the_cursor%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(matching_title);
  END LOOP;
  CLOSE the_cursor;
END;
/
show errors;
-- Insert and query data.
INSERT INTO books VALUES ('A1111', 'Moby Dick', 'Melville', 'Herman', 10);
INSERT INTO books VALUES ('A2222', 'Get Rich Really Fast', 'Scammer', 'Ima', 1);
INSERT INTO books VALUES ('A3333', 'Finding Inner Peace', 'Blissford', 'Serenity', null);
INSERT INTO books VALUES ('A4444', 'Great Mystery Stories', 'Whodunit', 'Rodney', 5);
INSERT INTO books VALUES ('A5555', 'Software Wizardry', 'Abugov', 'D.', 10);
INSERT INTO patrons VALUES  (patron_id_seq.nextval, 
   'Smith', 'Jane', '123 Main Street', 'Mytown, MA 01234', null);
INSERT INTO patrons VALUES  (patron_id_seq.nextval, 
   'Chen', 'William', '16 S. Maple Road', 'Mytown, MA 01234', null);
INSERT INTO patrons VALUES  (patron_id_seq.nextval, 
   'Fernandez', 'Maria', '502 Harrison Blvd.', 'Sometown, NH 03078', null);
INSERT INTO patrons VALUES  (patron_id_seq.nextval, 
   'Murphy', 'Sam', '57 Main Street', 'Mytown, MA 01234', null);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (100, 'A1111', SYSDATE, 1);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (100, 'A2222', SYSDATE, 2);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (101, 'A3333', SYSDATE, 3);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (101, 'A2222', SYSDATE, 1);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (102, 'A3333', SYSDATE, 1);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (103, 'A4444', SYSDATE, 2);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (100, 'A4444', SYSDATE, 1);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (102, 'A2222', SYSDATE, 2);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (102, 'A5555', SYSDATE, 1);
INSERT INTO transactions (patron_id, book_id, 
  transaction_date, transaction_type) 
  VALUES (101, 'A2222', SYSDATE, 1);
-- Test the view and the procedure.
SELECT * FROM patrons_trans_view;
CALL list_a_rating(10);

Here is a picture of the SQL Developer after successful execution of the script.
Figure  5. SQL Developer running the tutorial script.
4.2.7 Un-locking the Sample User Account

We proceed with the “Getting Started guide” to unlock the HR User account in SQL Developer, as shown in the following picture. 

Figure  6. Unlocking the user HR in SQL Developer.
4.2.8 Creating an Application Using Application Express
We continue with the “Getting Started Guide” at section “6 Creating an Application Using Application Express”. We create a Workspace in application express first, using the following settings: Workspace Name=HR, Username=HR_APEX, Password=welcome1
Created Sample Application is available at http://127.0.0.1:8080/apex/f?p=100:1
User=HR_APEX, Password=welcome1
4.3 Offline Documentation
We download the Documentation for offline reading from “Application Express Documentation Release 4.1” http://download.oracle.com/docs/cds/E23903_01.zip 
This is the documentation of the previous release. We extract it to D:\14Documentation\08Database\ExpressEdition41\E23903_01. We make it available to the following local link: file:///D:/14Documentation/08Database/ExpressEdition41/E23903_01/welcome.html

4.4 Links

Oracle Database 11g Express Edition http://www.oracle.com/technetwork/products/express-edition/overview/index.html
Database Express Edition Documentation 11g Release 2 (11.2) http://docs.oracle.com/cd/E17781_01/index.htm
Installation Guide for Microsoft Windows http://docs.oracle.com/cd/E17781_01/install.112/e18803/toc.htm
Database Express Edition Getting Started Guide http://docs.oracle.com/cd/E17781_01/admin.112/e18585/toc.htm
Oracle SQL Developer Overview Page  
http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html     
SQL Developers User’s Guide -Tutorial: Creating Objects for a Small Database http://docs.oracle.com/cd/E18464_01/doc.30/e17472/tut_library.htm#RPTUG20000
Local: Oracle Application Express 11g 4.1 Documentation Library file:///D:/14Documentation/08Database/ExpressEdition41/E23903_01/welcome.html
5 Forms Quickstart
Now we want to turn to Oracle Forms. We show how to start the server and access a test page, verifying that the server is running. We will then start the Form Builder and connect it to the database. This is the perquisite for running the Master-Detail tutorial which we briefly describe here. After creating a Forms application in the tutorial we demonstrate how to install and test it in the development installation.
5.1 Start Forms
To start forms we need to start the Oracle Express Database and the WLS-Forms server.
To start the database we use the desktop icon as described in 4.2.1.
5.1.1 Start Weblogic Server
We start the Weblogic server from the command window:
d:
cd D:\12Forms\domains\ClassicDomain
set WLS_USER=weblogic
set WLS_PW=welcome1
startWebLogic.cmd
We leave the window open as long as the server runs.
5.1.2 Weblogic Server URLs
FWM Welcome Page Application http://192.168.56.1:7001/welcome-index.html or http://192.168.178.103:7001 
Administration Console http://192.168.178.103:7001/console (weblogic/welcome1)
Fusion Middleware Control (Enterprise Manager) http://192.168.56.1:7001/em (This app is not deployed in the development server.)


5.1.3 Test forms
We can test if Forms is running by using the Forms Testpage: file:///D:/12Forms/asinst_3/config/FormsComponent/forms/html/runform.htm
We use the settings depicted in the following picture.

Figure  7. Test Page to check if Forms is running.
If we press “Run form” we see the following window.
Figure  8. Successful Test of the forms application.
We could also directly test with the URL http://192.168.178.103:7001/forms/frmservlet?form=test.fmx&userid=&otherparams=useSDI=yes&lookAndFeel=oracle&colorScheme=blue

5.2 Tutorial
As a quick start to forms we look at the tutorial “Creating a Master-Detail Form” http://www.oracle.com/webfolder/technetwork/tutorials/obe/forms/FormsMasterDetail/FormsMasterDetailOBE.htm
We store a pdf copy of this webpage at ¬ D:\15Work\05OracleForms\MasterDetailTut\ Creating a Master-Detail Form.pdf

5.2.1 Prerequisites
We use the Oracle Express 11g Database. The HR schema is already installed.
We check with the SQL command line:
SQL> connect
Enter user-name: system
Enter password:
Connected.
SQL> ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK;
User altered.
SQL> GRANT CONNECT, RESOURCE to hr;
Grant succeeded.
The OE schema is not present, but we do not need it here.
5.2.2 Step 1 - Setting Up the Development Environment
The tutorial is a targeted at OC4J as application server, however we are using weblogic. We will point out the differences where necessary.
We start the weblogic server from the command window:
d:
cd D:\12Forms\domains\ClassicDomain
set WLS_USER=weblogic
set WLS_PW=welcome1
startWebLogic.cmd
We leave the commnad window open.
We start Forms Builder from the Start Menu, which points to D:\12Forms\FRHome1\bin\frmbld.exe.
We save the work to D:\15Work\05OracleForms\MasterDetailTut\MyForms

Connecting to a database, we try with the following values and get an error:

   
Figure  9. Connection Error while connecting from Forms Builder to the HR-Database Schema.
Remedy: Edit tnsnames.ora at D:\12Forms\asinst_3\config
Add the entry:
ORA11XE =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = XE)
 )
)
5.2.3 Further Steps
The rest of the tutorial works without problems. The following figure shows the resulting application in a browser.
Figure  10. Running Application from the Master-Detail Form Tutorial.

5.3 Deploying an Application.
After building the hr.fmb application we want to deploy it. The instructions in the Forms Services Deployment Guide at http://docs.oracle.com/cd/E24269_01/doc.11120/e24477/basics.htm#i1010040 are not very helpful since it explains the deployment via the Fusion Enterprise Manager, which is not installed in our development environment. Instead we proceed as follows:

In Forms Builder we open and compile the application to D:\15Work\05OracleForms\MasterDetailTut\MyForms\HR.fmx

We need to copy the file to a location where it can be found by Forms. This is indicated by the environment variable FORMS_PATH which is set in the file D:\12Forms\domains\ClassicDomain\config\fmwconfig\servers\AdminServer\applications\formsapp_11.1.2\config\default.env
FORMS_PATH=D:\12Forms\FRHome1\forms;D:\12Forms\asinst_3\FormsComponent\forms
We copy the file to the directory D:\12Forms\asinst_3\FormsComponent\forms


Now we can directly call the app with the URL http://192.168.178.103:7001/forms/frmservlet?from=hr.fmx which will load the java applet and display a database login window.

We can also create a configuration entry for the application by editing the file:
D:\12Forms\domains\ClassicDomain\config\fmwconfig\servers\AdminServer\applications\formsapp_11.1.2\config\ formsweb.cfg 

We add the following section at the bottom of formsweb.cfg:
[myApp]
form=hr.fmx
userid=hr/welcome1@ora11xe
lookAndFeel=oracle

Now we can directly start the application without a login.
http://192.168.178.103:7001/forms/frmservlet?config=myApp
http://scorpio:7001/forms/frmservlet?config=myApp (If not connected to the fritzbox router)

6 High Availability Configuration

Now take a look at a high availability configuration for forms.
The documentation can be found here. http://docs.oracle.com/cd/E16764_01/core.1111/e10106/classic.htm#CIHIEHDI
In this workshop we will set up the whole system on a single laptop computer, therefore it is clear that we will not achieve real resilience; however the environment allows us to study various aspects of this architecture and can serve as a blueprint for production installations.
We limit the complexity by introducing a single point of failure on the HTTP layer by using only one HTTP Server which routes traffic to the WLS cluster. In a real world scenario we would use a second HTTP Server on a second machine with a hardware load balancer in front. The database itself is also a single point of failure since we use a single instance. In a real HA deployment we would use an Oracle RAC cluster. 
The following figure illustrates our target architecture.


Figure  11. Oracle Forms High-Availability configuration on Virtual Box machines.
We will set up two virtual machines running Oracle Linux Version 5.8. The first one will host the HTTP Server, the WLS Admin server and one half of the Forms cluster. The other virtual machine will host the other half of the Forms cluster. 

6.1 Installation of Oracle Linux 5.8 on Virtual Box
To begin with, we want to consider the network configuration of the virtual box. There is an article  that gives a very good overview of the VBox networking options. We choose Host-Only networking, thus the virtual machines can talk to each other on an internal network and the host can also participate here. 
We setup the Linux system as described in this separate blog post document . We thus have a single virtual machine running Linux which is connected by host-only networking. If you want to save the next step, start with a virtual image size of 100 GB. Otherwise the next section shows how to enlarge it.
6.2 Extending the file system
We want to extend the file system because 8GB is too small. Since we are using a dynamically allocated vdi disk image we can enlarge it without wasting the space on the hard disk. We will extend it to 100GB.
In this blog  there is a good description of this process. It includes cloning the current ORALIN58_A.vdi file to a bigger ORALIN58_A100GB.vdi file, allocating the new space in Linux with fdisk and using the Logical Volume Manager to assign it to a logical volume.
We shut down Linux and create a new virtual disk with the VBox Manager.
Using the command line tool VBoxManage we clone the old image to the new one.
D:
cd D:\16VirtualBox\ORALIN58_A
set PATH="C:\Program Files\Oracle\VirtualBox";%PATH%
VBoxManage clonehd ORALIN58_A.vdi ORALIN58_A100GB.vdi --existing
We verify that the new image is assigned to the virtual machine and boot into Linux.
Figure  12. Extended virtual image in the VBox manager.
In Linux we open a terminal, change to root and use fdisk to allocate the new space.
[oracle@localhost ~]$ su
Password: 
[root@localhost oracle]# /sbin/fdiks -l
bash: /sbin/fdiks: No such file or directory
[root@localhost oracle]# /sbin/fdisk -l

Disk /dev/sda: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1044     8281507+  8e  Linux LVM

Disk /dev/dm-0: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 4160 MB, 4160749568 bytes
255 heads, 63 sectors/track, 505 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-1 doesn't contain a valid partition table
[root@localhost oracle]# /sbin/fdisk /dev/sda

The number of cylinders for this disk is set to 13054.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sda: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1044     8281507+  8e  Linux LVM

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1045-13054, default 1045): 
Using default value 1045
Last cylinder or +size or +sizeM or +sizeK (1045-13054, default 13054): 
Using default value 13054

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@localhost oracle]#
We reboot Linux to re-read the partition table.
In the GUI of the Logical Volume Manager we initialize the new entity, add it to the physical and then to the logical volume. 
The result is summarized in the following picture.
Figure  13. Logical Volume configuration after extending the disk space.

6.3 Network settings
We want to have a look at the network configuration first. The following diagram provides an overview of the machines and network components involved in this scenario.
Figure  14. Network configuration for the Oracle Froms High-Availability setup.
We use two Linux VMs, i.e. ORALIN58_A and ORALIN58_B. We create the second as a clone of the first. Both VMs are connected to the vboxnet, which is the Host-Only network configuration of the virtual box. With this network option the virtual box provides a configurable DHCP server, and also gives access to the host computer. The IP-Addresses of the virtual machines are not within the range of the DHCP server. We configure them manually because we want to have a fix IP-configuration. For the purpose of updating the Linux VM ORALIN58_A we temporarily configure a second network adapter, using the NAT option. Thus this VM gets access to the internet. We don’t use a DNS Server for the vboxnet network. Instead we distribute the name resolution via manual configured hosts files. 

The network configuration includes the following topics:
6.3.1 Editing the hosts files.
We add the following entries to the file /etc/hosts on Linux and  C:\Windows\System32\drivers\etc\hosts on Windows.
192.168.56.101          11oel63.vboxnet 11oel63
192.168.56.102          oralin58b.vboxnet oralin58b
192.168.56.1            scorpio.vboxnet scorpio 
On Windows 7 we need to start Notepad with the option „run as Administrator“ to be able to save the file.
6.3.2 Configure Linux Network
In Linux we use the GUI Tool (Menu->System->Administration->Network) to make the following settings.
We manually assign an IP Address for the first NIC eth0 and we specify the hostname on the DNS tab of the Network Configuration Tool.
   

Figure  15. Network configuration in Linux
6.4 Testing the network
 We run the following tests with ping

From To Result
Windows Command Shell oralin58a Ok
oralin58a.vboxnet Ok
192.168.56.101 Ok
ORALIN58_A scorpio Ok
scorpio.vboxnet Ok
192.168.56.1 Ok.

We also run tests with a Weblogic server and try to the access the admin console on all these addresses which works fine.
6.5 Linux Users.
We set up the following users.

Username Password Description Machine
root welcome1 Root user on ORALIN58_A ORALIN58_A und ORALIN58_B
oracle welcome1 User for installation of Oracle software on ORALIN58_A und ORALIN58_B
forms-int welcome1 User for the froms instance for the integration test environment. ORALIN58_A und ORALIN58_B
forms-prod welcome1 User for the froms instance for the production environment. ORALIN58_A und ORALIN58_B
Table  2. Linux Users for the Forms installation.
We add the users forms-int and forms-prod  to the group vboxsf to get access to the shared forlder.
Figure  16. Linux User Manager showing the users for the forms installation.
6.6 Forms installation
To download the correct software we consult the certification matrix .
Figure  17. Certified product for the Forms installation on Linux.
We start with the Java installation.
6.7 Java Installation
We copy the file jdk-6u33-linux-x64.bin to the shared folder. (D:\16VirtualBox\ORALIN58_A\01SharedFolder). In Linux, logged in as the user “oracle” we simple click and choose “run in terminal” as depicted in the following figure.


Figure  18. Installing  Java on Linux from the shared folder.
This will install in the shared folder which we don’t want, so we move it to the target location.
[oracle@localhost ~]$ pwd
/home/oracle
[oracle@localhost ~]$ mkdir java
 [oracle@localhost ~]$ cp -r /media/sf_01SharedFolder/jdk1.6.0_33/ java
[oracle@localhost ~]$ rm -r /media/sf_01SharedFolder/jdk1.6.0_33
[oracle@localhost jdk1.6.0_33]$ JAVA_HOME=/home/oracle/java/jdk1.6.0_33
 [oracle@localhost jdk1.6.0_33]$ $JAVA_HOME/bin/java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)
[oracle@localhost jdk1.6.0_33]$



6.8 WLS Installation

We start the installer of weblogic as shown in the following dialog and install weblogic to /home/oracle/Middleware01. We also chose to install the examples.
[oracle@localhost ~]$ JAVA_HOME=/home/oracle/java/jdk1.6.0_33
[oracle@localhost ~]$ $JAVA_HOME/bin/java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)
[oracle@localhost ~]$ $JAVA_HOME/bin/java -jar /media/sf_01SharedFolder/wls1036_generic.jar

6.9 Forms installation
We follow the installation guide from http://docs.oracle.com/cd/E17904_01/install.1111/e12003/claqi.htm#BGBGJGFA
We unpack the archive to the oracle home.

Adding oracle to sudors file as root:
/usr/sbin/visudo  and add:
## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL
%oracle         ALL=(ALL)       ALL

Start the installation:
[oracle@oralin58a Disk1]$ cd /home/oracle/forms11gR2/Disk1
[oracle@oralin58a Disk1]$ ./runInstaller

Prepare inventory:
[oracle@oralin58a oraInventory]$ pwd
/home/oracle/oraInventory
 [oracle@oralin58a oraInventory]$ sudo ./createCentralInventory.sh 
Setting the inventory to /home/oracle/oraInventory
Setting the group name to oracle
Creating the Oracle inventory pointer file (/etc/oraInst.loc)
Changing permissions of /home/oracle/oraInventory to 770.
Changing groupname of /home/oracle/oraInventory to oracle.
The execution of the script is complete
Prerequisite Checks:
There are some problems reported in this step:
Figure  19. Prerequisite Checks in the Forms Installation yields some problems.
We provide the contents of all checks, contained in the dialog window.
Root
Checking operating system certification
Expected result: One of enterprise-5.4,enterprise-4,enterprise-5,redhat-5.4,redhat-4,redhat-5,SuSE-10,SuSE-11
Actual Result: enterprise-5.4
Check complete. The overall result of this check is: Passed

Checking recommended operating system packages
Checking for binutils-2.17.50.0.6; found binutils-2.17.50.0.6-20.el5_8.3-x86_64. Passed
Checking for compat-libstdc++-33-3.2.3-x86_64; found compat-libstdc++-33-3.2.3-61-x86_64. Passed
Checking for compat-libstdc++-33-3.2.3-i386; found compat-libstdc++-33-3.2.3-61-i386. Passed
Checking for elfutils-libelf-0.125; found elfutils-libelf-0.137-3.el5-x86_64. Passed
Checking for elfutils-libelf-devel-0.125; Not found. Failed <<<<
Checking for gcc-4.1.1; found gcc-4.1.2-52.el5_8.1-x86_64. Passed
Checking for gcc-c++-4.1.1; Not found. Failed <<<<
Checking for glibc-2.5-12-x86_64; found glibc-2.5-81.el5_8.4-x86_64. Passed
Checking for glibc-2.5-12-i686; found glibc-2.5-81.el5_8.4-i686. Passed
Checking for glibc-common-2.5; found glibc-common-2.5-81.el5_8.4-x86_64. Passed
Checking for glibc-devel-2.5-x86_64; found glibc-devel-2.5-81.el5_8.4-x86_64. Passed
Checking for glibc-devel-2.5-12-i386; Not found. Failed <<<<
Checking for libaio-0.3.106-x86_64; found libaio-0.3.106-5-x86_64. Passed
Checking for libaio-0.3.106-i386; found libaio-0.3.106-5-i386. Passed
Checking for libaio-devel-0.3.106; Not found. Failed <<<<
Checking for libgcc-4.1.1-x86_64; found libgcc-4.1.2-52.el5_8.1-x86_64. Passed
Checking for libgcc-4.1.1-i386; found libgcc-4.1.2-52.el5_8.1-i386. Passed
Checking for libstdc++-4.1.1-x86_64; found libstdc++-4.1.2-52.el5_8.1-x86_64. Passed
Checking for libstdc++-4.1.1-i386; found libstdc++-4.1.2-52.el5_8.1-i386. Passed
Checking for libstdc++-devel-4.1.1; Not found. Failed <<<<
Checking for make-3.81; found make-1:3.81-3.el5-x86_64. Passed
Checking for sysstat-7.0.0; Not found. Failed <<<<
Checking for openmotif-2.2.3; Not found. Failed <<<<
Checking for openmotif22-2.2.3; Not found. Failed <<<<
Check complete. The overall result of this check is: Failed <<<<

Problem: Some recommended packages are missing (see above).
Recommendation: You may actually have installed packages which have obsoleted these, in which case you can successfully continue with the install. If you have not, it is recommended that you do not continue. Refer to the product release notes to find out how to get the missing packages and update the system.
Checking kernel parameters
Checking for VERSION=2.6.18; found VERSION=2.6.32-300.32.1.el5uek. Passed
Checking for hardnofiles=4096; hardnofiles=1024. Failed <<<<
Checking for softnofiles=4096; softnofiles=1024. Failed <<<<
Check complete. The overall result of this check is: Failed <<<<

Problem: The kernel parameters do not meet the minimum requirements (see above).
Recommendation: Perform operating system specific instructions to update the kernel parameters.
Checking Recommended glibc version
Expected result: ATLEAST=2.5-12 
Actual Result: 2.5-81.el5_8.4
Check complete. The overall result of this check is: Passed

Checking physical memory
Expected result: 922MB
Actual Result: 3952MB
Check complete. The overall result of this check is: Passed

Checking for LD_ASSUME_KERNEL environment variable
Expected result: LD_ASSUME_KERNEL environment variable should not be set in the environment.
Actual Result: Variable Not set.
Check complete. The overall result of this check is: Passed
We install the missing packages from a root terminal:
 yum install elfutils-libelf-devel
 yum install gcc-c++
 yum install glibc-devel
 yum install libaio-devel
 yum install libstdc++-devel
 yum install sysstat
 yum install openmotif
 yum install openmotif22
We check the installed packages
[root@oralin58a oracle]# rpm  -qa | egrep 'elfutils|gcc-c++|glibc-devel|libaio-devel|libstdc++-devel|sysstat|openmotif'
elfutils-libelf-devel-0.137-3.el5
sysstat-7.0.2-11.el5
elfutils-libelf-0.137-3.el5
libaio-devel-0.3.106-5
openmotif-2.3.1-6.1.el5_8
elfutils-libelf-devel-0.137-3.el5
libaio-devel-0.3.106-5
openmotif22-2.2.3-20
elfutils-libelf-0.137-3.el5
elfutils-libelf-devel-static-0.137-3.el5
gcc-c++-4.1.2-52.el5_8.1
openmotif22-2.2.3-20
glibc-devel-2.5-81.el5_8.4
glibc-devel-2.5-81.el5_8.4
openmotif-2.3.1-6.1.el5_8
elfutils-libelf-devel-static-0.137-3.el5
[root@oralin58a oracle]#
We change the system limits by editing /etc/security/limits.conf and reboot.
# Settings for the installtion of Oracle Forms 11gR2
* soft nofile 65536
* hard nofile 65536
We run the installation again and safe the configuration:
[oracle@oralin58a Middleware01]$ pwd
/home/oracle/Middleware01
 [oracle@oralin58a Middleware01]$ cat FormsReports11gR2_InstallationConfiguration_20120728.txt 
[ENGINE]

#DO NOT CHANGE THIS.
Response File Version=1.0.0.0.0

[GENERIC]

#Set this to true if you wish to specify a directory where latest updates are downloaded. This option would use the software updates from the specified directory
SPECIFY_DOWNLOAD_LOCATION=false

#
SKIP_SOFTWARE_UPDATES=true

#If the Software updates are already downloaded and available on your local system, then specify the path to the directory where these patches are available and set SPECIFY_DOWNLOAD_LOCATION to true
SOFTWARE_UPDATES_DOWNLOAD_LOCATION=

#Set this to true if installation and configuration need to be done, all other required variables need to be provided. Variable "INSTALL AND CONFIGURE LATER TYPE" must be set to false if this is set to true as the variables are mutually exclusive
INSTALL AND CONFIGURE TYPE=false

#Set this to true if only Software only installation need to be done. If this is set to true then variable "INSTALL AND CONFIGURE TYPE" must be set to false, since the variables are mutually exclusive.
INSTALL AND CONFIGURE LATER TYPE=true

#Give the complete path for an Oracle Home to be created. The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character.
ORACLE_HOME=/home/oracle/Middleware01/Oracle_FRHome1

#Write the complete path to a valid Middleware Home.
MW_HOME=/home/oracle/Middleware01

#Provide the My Oracle Support Username. If you wish to ignore Oracle Configuration Manager configuration provide empty string for user name.
MYORACLESUPPORT_USERNAME=

#Provide the My Oracle Support Password
MYORACLESUPPORT_PASSWORD=<SECURE VALUE>

#Set this to true if you wish to decline the security updates. Setting this to true and providing empty string for My Oracle Support username will ignore the Oracle Configuration Manager configuration
DECLINE_SECURITY_UPDATES=true

#Set this to true if My Oracle Support Password is specified
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

#Provide the Proxy Host
PROXY_HOST=

#Provide the Proxy Port
PROXY_PORT=

#Provide the Proxy Username
PROXY_USER=

#Provide the Proxy Password
PROXY_PWD=<SECURE VALUE>

#Type String (URL format) Indicates the OCM Repeater URL which should be of the format [scheme[Http/Https]]://[repeater host]:[repeater port]
COLLECTOR_SUPPORTHUB_URL=


[SYSTEM]


[APPLICATIONS]


[RELATIONSHIPS]


[oracle@oralin58a Middleware01]$
Now, the installation terminates successful. 
Installation Logfile=  /home/oracle/oraInventory/logs/install2012-07-28_08-09-30PM.log
We still need to run one script as root:
[oracle@oralin58a ~]$ su
Password: 
[root@oralin58a oracle]# cd /home/oracle/Middleware01/Oracle_FRHome1
[root@oralin58a oracle]# . /oracleRoot.sh
Finally we safe the installation summary to a text file:
[oracle@oralin58a Middleware01]$ cat FormsReports11gR2_InstallationSummary_20120728.txt 
Type: Oracle Forms and Reports Installation
        Installed Applications
                Forms
                Reports
                Forms Builder
                Reports Builder
        Installed System Components
                OHS
                EM Agent
6.10 Forms Configuration
We tried to do the configuration with the Unix user forms-int but the installer was complaining that write access to the directory /home/oracle/Middleware01/Oracle_FRHome1/ is required.
It seems that Oracle Forms does not support the configuration of an installation with a different user. This is sad, because thus we cannot setup two environments on the same set of machines, running under different Unix users, which would protect the process of one environment from activities in the other environment, i.e. you cannot accidentally kill the wrong process. Another approach to install two environments on a single machine, or set of machines, is to repeat the whole installation (Java, Weblogic, Froms and Reports) in a different Middleware Home, using a different Unix user. 
In order not to complicate matters we continue with the user oracle.

We start the configuration:
cd /home/oracle/Middleware01/Oracle_FRHome1/bin
./config.sh
We configure the port. First we copy the example file to the middleware home.
[oracle@oralin58a bin]$ ls /home/oracle/forms11gR2/Disk1/stage/Response/st*
/home/oracle/forms11gR2/Disk1/stage/Response/staticports.ini
[oracle@oralin58a bin]$ cp /home/oracle/forms11gR2/Disk1/stage/Response/staticports.ini /home/oracle/Middleware01/
The example file offers only a single managed server. We don’t know how the installer will handle the other managed servers. Here is the relevant content of the file staticport.ini
[oracle@oralin58a Middleware01]$ cat staticports.ini | egrep -v "#|^$"
[DOMAIN]
Domain Port No = 11000
[OHS]
[WEB CACHE]
[EMAGENT]
[OPMN]
[MANAGEDSERVER]
Oracle WLS Forms Managed Server Port No = 11001 
We save the response file to FormsReports11gR2_ConfigurationResponse_20120729.txt
We run through the installation screens. There was a problem which we could solve. It is described in the section 6.12.
After that the configuration terminates successful.
We save the summary to the file /home/oracle/Middleware01/ FormsReports11gR2_ConfigurationSummary_20120729.txt
[oracle@oralin58a Middleware01]$ pwd
/home/oracle/Middleware01
[oracle@oralin58a Middleware01]$ cat FormsReports11gR2_ConfigurationSummary_20120729.txt 
Type: Oracle Forms and Reports Installation
        Configuration Options
                Middleware Home Location: /home/oracle/Middleware01
                Oracle Home Location: /home/oracle/Middleware01/Oracle_FRHome1
                Oracle Instance Location: /home/oracle/Middleware01/asinst_1
                Oracle Instance: asinst_1
                Domain Option: Create Domain
                Domain Name: forms-itest
                Domain Home: /home/oracle/Middleware01/domains//forms-itest
                Domain Host Name: oralin58a.vboxnet
                Domain Port No: 11000
                User Name: weblogic
                Automatic Port Detection: false
                Administrator Console: http://oralin58a.vboxnet:11000/console
                EM Console: http://oralin58a.vboxnet:11000/em
                EMAgent URL: http://oralin58a.vboxnet:5155/emd/main
                Forms URL: http://oralin58a.vboxnet:8888/forms/frmservlet
                Reports URL: http://oralin58a.vboxnet:8888/reports/rwservlet
[oracle@oralin58a Middleware01]$
At this point we take a Virtual box snapshot (Sicherungpunkt 3)
6.11 Testing the installation
We follow the instructions at http://docs.oracle.com/cd/E17904_01/install.1111/e12003/claqi.htm#CACHCHDE to verify the installation.

6.11.1 Starting the server
To start the server, we use the following commands.

### Starting Admins Server:
cd /home/oracle/Middleware01/domains/forms-itest/bin
export WLS_USER=weblogic
export WLS_PW=welcome1
sh ./startWebLogic.sh

### Starting WLS_FORMS 
cd /home/oracle/Middleware01/domains/forms-itest/bin
sh ./startManagedWebLogic.sh WLS_FORMS

### Starting WLS_FORMS 
cd /home/oracle/Middleware01/domains/forms-itest/bin
sh ./startManagedWebLogic.sh WLS_REPORTS

### starting the Forms instance
cd /home/oracle/Middleware01/asinst_1/bin
./opmnctl start
./opmnctl status 

6.11.2 Checking Browser URLs:
Administrator Console: http://oralin58a.vboxnet:11000/console 
EM Console: http://oralin58a.vboxnet:11000/em 
EMAgent URL: http://oralin58a.vboxnet:5155/emd/main 
Forms URL: http://oralin58a.vboxnet:8888/forms/frmservlet 
Reports URL: http://oralin58a.vboxnet:8888/reports/rwservlet 
Ok.
Checking forms directly at the wls server:
Forms URL: http://oralin58a.vboxnet:11001/forms/frmservlet 
Ok



Verifying OPMN Status:
[oracle@oralin58a bin]$ pwd
/home/oracle/Middleware01/asinst_1/bin
[oracle@oralin58a bin]$ ./opmnctl status

Processes in Instance: asinst_1
---------------------------------+--------------------+---------+---------
ias-component                    | process-type       |     pid | status  
---------------------------------+--------------------+---------+---------
emagent_asinst_1                 | EMAGENT            |    6556 | Alive   
RptSvr_oralin58a_asinst_1        | ReportsServerComp~ |    6409 | Alive   
ohs1                             | OHS                |    6144 | Alive   

[oracle@oralin58a bin]$ ./opmnctl status -l

Processes in Instance: asinst_1
---------------------------------+--------------------+---------+----------+------------+----------+-----------+------
ias-component                    | process-type       |     pid | status   |        uid |  memused |    uptime | ports
---------------------------------+--------------------+---------+----------+------------+----------+-----------+------
emagent_asinst_1                 | EMAGENT            |    6556 | Alive    | 1069356969 |    63852 |   0:30:43 | N/A
RptSvr_oralin58a_asinst_1        | ReportsServerComp~ |    6409 | Alive    | 1069356968 |    63852 |   0:30:55 | N/A
ohs1                             | OHS                |    6144 | Alive    | 1069356967 |   144956 |   0:32:26 | https:8889,https:8890,http:8888
Ok.

This concludes our workshop on Oracle Forms and Reports for a production environment. In the next section we will outline the steps to extend this installation to span a cluster across two machines, for studying the high-availability aspects of this product.

6.12 Next Steps
So far we have a Forms and Reports deployment installation running on a single Linux 5.8 virtual box machine. The next steps for the HA-Configuration will be.
We will clone the virtual machine to ORALIN58_B and adjust the network settings so that it could serve as second machine for the Forms cluster.
We configure a Forms Cluster on the first machine ORALIN58_A. 
We deploy a simple Forms test application to the cluster.
We adjust the configuration of the Oracle HTTP Server to distribute load to the cluster.
We test this cluster.
We expand this cluster to the second machine ORALIN58_B. The HTTP Server should automatically recognize the new machines of the cluster. 
We test load balancing to the cluster instances.
We install the Oracle Forms 11g Demo Pack to the cluster and test it.

We leave these steps open for further study.
6.13 Troubleshooting Forms Configuration
During the installation we encountered some problems. This chapter contains the analysis and solution.
The configuration fails at the step “Creating ASInstance”.  
Figure  20. Forms Configuration Failure
6.13.1 Log file review
The corresponding entry from the log file does not give any usable hint. (/home/oracle/oraInventory/logs/install2012-07-29_01-53-57PM.log)
[2012-07-29T14:34:41.045+02:00] [as] [NOTIFICATION] [] [oracle.as.provisioning] [tid: 14] [ecid: 0000JZIhPjL3n3WjLxuHOA1G5IHO000005,0] Created ASInstance. Calling opmn start command
[2012-07-29T14:34:41.098+02:00] [as] [ERROR] [] [oracle.as.provisioning] [tid: 14] [ecid: 0000JZIhPjL3n3WjLxuHOA1G5IHO000005,0] [[
oracle.as.management.opmn.optic.OpticException: Error in starting opmn server
Unexpected exit code (127) returned by opmnctl.
at oracle.as.management.opmn.optic.OpmnAdmin.executeCommand(OpmnAdmin.java:310)
at oracle.as.management.opmn.optic.OpmnAdmin.startOpmnServer(OpmnAdmin.java:87)
at oracle.as.provisioning.fmwadmin.ASInstanceProv._createInstance(ASInstanceProv.java:254)
at oracle.as.provisioning.fmwadmin.ASInstanceProv.createInstance(ASInstanceProv.java:166)
at oracle.as.provisioning.fmwadmin.ASInstanceProv.createInstanceAndComponents(ASInstanceProv.java:116)
at oracle.as.provisioning.engine.WorkFlowExecutor._createASInstancesAndComponents(WorkFlowExecutor.java:523)
at oracle.as.provisioning.engine.WorkFlowExecutor.executeWLSWorkFlow(WorkFlowExecutor.java:439)
at oracle.as.provisioning.engine.Config.executeConfigWorkflow_WLS(Config.java:866)
at oracle.as.install.classic.ca.standard.InstanceProvisioningTask.doExecute(InstanceProvisioningTask.java:218)
at oracle.as.install.classic.ca.standard.StandaloneTool.execute(StandaloneTool.java:50)
at oracle.as.install.classic.ca.standard.StandardProvisionTaskList.execute(StandardProvisionTaskList.java:61)
at oracle.as.install.classic.ca.ClassicConfigMain.doExecute(ClassicConfigMain.java:124)
at oracle.as.install.engine.modules.configuration.client.ConfigAction.execute(ConfigAction.java:339)
at oracle.as.install.engine.modules.configuration.action.TaskPerformer.run(TaskPerformer.java:87)
at oracle.as.install.engine.modules.configuration.action.TaskPerformer.startConfigAction(TaskPerformer.java:104)
at oracle.as.install.engine.modules.configuration.action.ActionRequest.perform(ActionRequest.java:15)
at oracle.as.install.engine.modules.configuration.action.RequestQueue.perform(RequestQueue.java:63)
at oracle.as.install.engine.modules.configuration.standard.StandardConfigActionManager.start(StandardConfigActionManager.java:158)
at oracle.as.install.engine.modules.configuration.boot.ConfigurationExtension.kickstart(ConfigurationExtension.java:81)
at oracle.as.install.engine.modules.configuration.ConfigurationModule.run(ConfigurationModule.java:83)
at java.lang.Thread.run(Thread.java:662)

6.13.2 Testing the elements of the Installation
Admin Server is accessible: http://oralin58a:11000/console
Enterprise Manager is accessible: http://oralin58a:11000/em
Nodemanager is started

Staring opmnctl manually:
[oracle@oralin58a bin]$ pwd
/home/oracle/Middleware01/asinst_1/bin
[oracle@oralin58a bin]$ ./opmnctl start
/home/oracle/Middleware01/Oracle_FRHome1/opmn/bin/opmn: error while loading shared libraries: /home/oracle/Middleware01/Oracle_FRHome1/lib/libdms2.so: cannot restore segment prot after reloc: Permission denied
opmnctl start: failed.
[oracle@oralin58a bin]$
After changing the permission levels in SELinux (Menu->System->Administration->SELinux Management) we can start ompnctl.

Figure  21. Changing the Permission Level in SELinux
While this solution is not satisfying completely, it will work for this test-installation.
6.13.3 Removing Instance asinst_1
Before retrying this step we have to remove the current instance, which is registered with WLS. Instructions can be found here (http://docs.oracle.com/cd/E21764_01/install.1111/e10421/deinstall.htm#CBHGFFFJ)
We start the uninstall dialog.
[oracle@oralin58a bin]$ ./runInstaller.sh -deinstall
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 270 MB.   Actual 76325 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 3936 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2012-07-29_03-49-03PM. Please wait ...
[oracle@oralin58a bin]$ Log: /home/oracle/oraInventory/logs/deinstall2012-07-29_03-49-03PM.log
[oracle@oralin58a bin]$
In the dialog we choose the instance to be removed.
   
Figure  22. Deinstallation of instance asinst_1.
After this we successfully retry the failed step in the installation process.



7 Links
We summarize a couple of relevant Links.
7.1 Download Links
These are the links for the software packages, used during this installation.

7.1.1 JRockit 64-Bit for Windows R28.2.3

Link http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html
File D:\01Downloads\jrockit-jdk1.6.0_31-R28.2.3-4.1.0-windows-x64.exe
MD5 e2d010d228c7e7152761a2e030f1c206 (unbekannt, Norton ok.)
Notes Installation to:    D:\10Oracle\02Java\jrockit-jdk1.6.0_31-R28.2.3-4.1.0

7.1.2 JRockit 64-Bit for Windows R28.2.4

Link http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html 

File D:\01Downloads\jrockit-jdk1.6.0_33-R28.2.4-4.1.0-windows-x64.exe
MD5 bdd86b94f377d4e6a2c35c44dd2406ac  (unknown, Norton ok.)
Notes

7.1.3 Weblogic Server 10.3.6 Generic 64-bit

Link http://www.oracle.com/technetwork/middleware/ias/downloads/wls-main-097127.html 

File D:\01Downloads\wls1036_generic.jar
MD5 33d45745ff0510381de84427a7536f65 (not found)
Notes

7.1.4 Weblogic Server 10.3.5 32-Bit for Windows

Link http://www.oracle.com/technetwork/middleware/ias/downloads/wls-main-097127.html 

File D:\01Downloads\wls1035_win32.exe
MD5 34a1e77a4d687deefdcdb48f5e71fc79  (unknown) Norton Ok.
Notes

7.1.5 Oracle Forms and Reports 11g Release 2, Windows 64-bit

Link http://www.oracle.com/technetwork/developer-tools/forms/downloads/index.html 

File D:\01Downloads\ofm_frmrpts_win_11.1.2.0.0_64_disk1_1of1.zip
MD5 ee010f2643f34b469dd6499a1dda23f4 (unknown, Norton Scan ca. 10 min, ok.)
Notes

7.1.6 Oracle Forms and Reports 11g Release 2, Windows 32-bit

Link http://www.oracle.com/technetwork/developer-tools/forms/downloads/index.html 

File D:\01Downloads\ofm_frmrpts_win_11.1.2.0.0_32_disk1_1of1.zip
MD5 b98bc40156deb3b40658857cf9ad5c25 (unknown, Norton ok.)
Notes Problems during installation, Installation hangs, WLS Server cannot be started, further errors.

7.1.7 Database Express Edition 11g Release2

Link http://www.oracle.com/technetwork/products/express-edition/downloads/index.html

File D:\01Downloads\OracleXE112_Win32.zip
MD5 97f1fa70fd70f713bd30c05f2ba05d85 (know, Norton Ok)
Notes

7.1.8 Java SE Development Kit 6 Update 33 for Windows x64

Link http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html

File D:\01Downloads\jdk-6u33-windows-x64.exe (unknown, Norton Ok)
MD5 9e7a5f6e34fdf71efda51f9b1b11219c
Notes Installed D:\13Java\03JavaSE6\jdk1.6.0_33-64bit
7.1.9 Oracle Linux Release 5 Update 8 for x86_64 (64 Bit)
Link https://edelivery.oracle.com/EPD/Download/process_download/V31120-01.iso
File D:\01Downloads\V31120-01.iso
MD5 1ec844c1090a417b741a9bf0d6dea240 (matches website)
Notes Digest Website https://edelivery.oracle.com/EPD/ViewDigest/get_form?epack_part_number=B66657-01, Norton Ok.

7.1.10 Java SE Development Kit 6 Update 33 for Linux x64

Link http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html 

File D:\01Downloads\jdk-6u33-linux-x64.bin
MD5 94a1de1f4c00a31df1cee902962bc2f5 (unknown)
Notes Norton ok. 

7.1.11 Oracle Forms and Reports 11g Release 2 for Linux 64 bit
Link http://www.oracle.com/technetwork/developer-tools/forms/downloads/index.html

File D:\01Downloads\ofm_frmrpts_linux_11.1.2.0.0_64_disk1_1of1.zip
MD5 145eb1090d11560999af292d26137634 (unknown)
Notes Norton ok.

7.1.12 Oracle Forms 11g Demo Pack
Link http://www.oracle.com/technetwork/developer-tools/forms/downloads/index.html

File D:\01Downloads\demos_11g.zip
MD5 cf093ef55b74be085c1f18cbdaaa5fb6 (unknown)
Notes Norton ok.

7.1.13 Oracle SQL Developer 3.1 (3.1.07.42) February 7, 2012
Link http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

File D:\01Downloads\sqldeveloper64-3.1.07.42-no-jre.zip
MD5 409e29fab7b6030446e5c38bddef7859 (unknown)
Notes Oracle SQL Developer for 64-bit Windows (This zip does not include a JDK)

7.2 Documentation Links


Understanding Oracle Fusion Middleware Concepts and Directory Structure (http://docs.oracle.com/cd/E17904_01/install.1111/b32474/concepts.htm#BABGIBGJ )
Supported Plattforms (http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html )
Certification Matrix in Excel (http://www.oracle.com/technetwork/developer-tools/forms/oracle-forms-11gr2certmatrix-519680.xls )
Quick Installation Guide for Oracle Forms and Reports http://docs.oracle.com/cd/E17904_01/install.1111/e12003/claqi.htm 
Oracle Forms Homepage http://www.oracle.com/technetwork/developer-tools/forms/overview/index.html
Oracle Forms 11g Release 2 Documentation http://docs.oracle.com/cd/E24269_01/index.htm
Oracle 11g  PORTAL, FORMS, REPORTS, AND DISCOVERER DOCUMENTATION http://docs.oracle.com/cd/E17904_01/pfrd.htm
Oracle Forms 10g  Tutorial “Creating a Master-Detail Form” http://www.oracle.com/webfolder/technetwork/tutorials/obe/forms/FormsMasterDetail/FormsMasterDetailOBE.htm

8 Conclusion
This paper presents a quick start guide to Oracle Forms and Reports. While the theoretical background was only covered by suggesting documentation links, this guide leads through the actual installation and configuration of Forms and Reports and the development of a brief example application. We looked at all steps, required to setup and run the example, including the installation and configuration of a database. While this example was executed in a development configuration, we also installed Forms in a production setup on a Linux virtual machine. We briefly discussed the steps to extend this installation to a clustered environment, spanning two machines. Working through the proposed steps provides a good understanding of the Forms and Reports architecture, the development environment and the configuration scenarios for a productive installation. 




Keine Kommentare:

Kommentar veröffentlichen