A development domain serves one developer; a production installation serves an entire organization. Running Oracle Forms 14.1.2 in production means a full WebLogic domain with its own servers, a repository in the database, and the tools to start it in order, take it down gently for maintenance, and see what it is doing.
This guide covers the full Forms domain: what it contains, how to create it with WLST, the order to start and stop its servers, how to stop new sessions before maintenance, and how to monitor sessions and read the logs.
What a Full Forms Domain Contains
| Part | Role |
|---|---|
| Repository | Schemas created by the Repository Creation Utility: the service table (STB), the security store (OPSS), and auditing (IAU, IAU_APPEND, IAU_VIEWER), with a prefix of their own, such as FR_. |
| Administration Server | Manages the domain and runs Fusion Middleware Control (/em) and the WebLogic console. |
| Managed servers | WLS_FORMS, where the Forms servlets run, and WLS_REPORTS for Reports, each in a cluster of one, ready to grow. |
| A machine with Node Manager | Starts and stops servers and system components on that computer. |
| System components | The Forms instance forms1, and Reports' reptools1 and repserver1. |
A development domain, as created in how to install Oracle Forms 14.1.2, has none of the repository and runs Forms in the Administration Server itself.
Create the Domain with WLST
The Configuration Wizard creates a full domain from the templates Oracle Forms, Oracle Reports Application, Oracle Reports Tools, and Oracle Reports Server. A WLST script does the same without windows, which suits repeatable installations.
Part of a WLST domain creation script:
selectTemplate('Oracle Forms') # and the Reports templates
loadTemplates()
cd('/JDBCSystemResource/LocalSvcTblDataSource/JdbcResource/LocalSvcTblDataSource/JDBCDriverParams/NO_NAME_0')
set('URL', 'jdbc:oracle:thin:@//host.docker.internal:1523/formspdb')
cd('Properties/NO_NAME_0/Property/user')
set('Value', 'FR_STB') # the service table finds the other schemas
getDatabaseDefaults()
writeDomain('/u01/oracle/domains/forms_full')The script points the service table data source at the repository's STB schema, and getDatabaseDefaults finds the other schemas from it.
Start and Stop the Servers in Order
Start the servers in this order, from the domain's directory.
Start commands:
startWebLogic.sh the Administration Server bin/startNodeManager.sh Node Manager bin/startManagedWebLogic.sh WLS_FORMS t3://localhost:7001 bin/startManagedWebLogic.sh WLS_REPORTS t3://localhost:7001 bin/startComponent.sh repserver1 a system component, through Node Manager
The stop scripts reverse them. Each server needs the administrator's credentials to start; a boot.properties file in servers/<server>/security, with the user and password, lets it start unattended, and WebLogic encrypts the file at the first start.
Once the Administration Server runs, Fusion Middleware Control starts and stops the managed servers too, and a production installation starts all of them as operating system services.
Stop New Sessions Before Maintenance
Stopping WLS_FORMS ends every Forms session on it. Before maintenance, stop new sessions instead: allowNewConnections=false in the [default] section of formsweb.cfg refuses new sessions, or sends them to connectionDisallowedURL, a page that explains, while running sessions finish. formsweb.cfg is covered in how to configure formsweb.cfg in Oracle Forms.
Monitor Forms in Fusion Middleware Control
The home page of the Forms instance, under Forms in the target navigation, lists the Forms deployments with their server, status, and number of sessions, and charts the response time and load. From its menu:
- User Sessions lists the running sessions, with their users, databases, and runtime processes. A session can be traced or ended from here.
- Performance Summary charts the metrics of the instance over time.
- JVM Controllers manages shared Java virtual machines for the runtime processes that use Java, such as imported Java, Reports integration, and FHTTP.
Tracing a session is explained in how to trace a session with Forms Trace.
Read the Forms Logs
Each server writes its logs to servers/<server>/logs of the domain.
| Log | Holds |
|---|---|
| formsapp-diagnostic.log | Messages of the Forms servlets and runtime processes, with their FRM- numbers. |
| access.log | Every HTTP request, including each request to the Listener servlet. |
| <server>.log, <server>-diagnostic.log | The server's own messages. |
| reports/* | Reports Services, on WLS_REPORTS. |
In a test domain, formsapp-diagnostic.log held the story of its sessions, among them these lines.
Lines from formsapp-diagnostic.log:
[ERROR] [FRM-60315] error decrypting userid for forms application book [ERROR] [FRM-93654] Runtime process 13730 is terminating due to external action. [ERROR] [FRM-93652] The runtime process has terminated abnormally. [NOTIFICATION] [FRM-93100] configFileName: .../formsapp_14.1.2/config/formsweb.cfg
The first came from a userid copied from another domain; the next two from runtime processes stopped from the operating system.
- A runtime process that crashes writes a dump to the directory of FORMS_TRACE_DIR.
- Debug messages, below the level NOTIFICATION, are written only when the section asks for them with allow_debug and allowLservletDebug.
- FORMS_LOG_MODULE_OPEN adds each module a session opens. Environment variables like it are covered in how to set the Oracle Forms runtime environment.
Conclusion
A production Oracle Forms domain has a repository, the Administration Server, the WLS_FORMS and WLS_REPORTS managed servers, Node Manager, and system components. Start them in that order, use boot.properties or operating system services for unattended starts, and stop new sessions with allowNewConnections=false before maintenance instead of cutting off users. Fusion Middleware Control shows sessions, response time, and load, and formsapp-diagnostic.log and access.log tell you what the servlets and runtime processes did.
