Oracle® Application Server 10g mod_plsql User’s Guide 10g (9.0.4) Part Number B10357-01 |
|
mod_plsql is an Oracle HTTP Server plug-in that communicates with the database by mapping browser requests into database stored procedure calls over a SQL*Net connection. It is generally indicated by a /pls
virtual path. The mod_plsql gateway provides support for building and deploying PL/SQL-based applications on the Web. PL/SQL stored procedures can retrieve data from database tables and generate HTTP responses containing formatted data and HTML code to display in a Web browser. See the Oracle Application Server 10g PL/SQL Web Toolkit Reference for more information.
The PL/SQL Web Toolkit enables you to develop Web applications as PL/SQL procedures stored in an Oracle database server. Packages in the toolkit define procedures, functions, and data types that you can use in your stored procedures. You can use these packages when developing database portlets for OracleAS Portal. See the Oracle Application Server 10g PL/SQL Web Toolkit Reference for more information.
You can determine the version of mod_plsql by executing the oversioncheck
script on the mod_plsql binary.
On UNIX platforms, issue the following command:
ORACLE_HOME/Apache/Apache/bin/oversioncheck ORACLE_ HOME/Apache/modplsql/bin/modplsql.so
On Windows platforms, issue the following command:
ORACLE_HOME\Apache\Apache\bin\oversioncheck ORACLE_HOME\bin\modplsql.dll
select owa_util.get_version from dual;
This should show the version of the OWA packages. For example, 9.0.4.0.1.
If this query fails, you are having a very old version of OWA packages that does not have versioning. It is recommended that you upgrade to a newer version.
See Section 2.2, "Installing Required Packages" for more information.
OWA packages can be uninstalled by performing the following tasks:
cd ORACLE_HOME/Apache/modplsql
owadins.sql
to uninstall the OWA packages.
The following SQL query can be used to determine the location of the OWA packages:
SELECT OWNER, OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_NAME = 'OWA'
You will see the following results:
SQL> 1 SELECT OWNER, OBJECT_TYPE 2 FROM DBA_OBJECTS 3* WHERE OBJECT_NAME = 'OWA' OWNER OBJECT_TYPE ----- ----------- SYS PACKAGE SYS PACKAGE BODY PUBLIC SYNONYM
If you see more lines than shown above, it means that older OWA packages exist in other schemas which may cause issues for mod_plsql users. In such situations, uninstall all versions of the OWA packages from the database, and reinstall the OWA packages that ship with Oracle Application Server.
mod_plsql logs detailed error messages to the OHS file ORACLE_HOME
/Apache/Apache/logs/error_log
. Scan this file to understand the problem. For more information on mod_plsql logging, see "What kind of logging facilities are available in mod_plsql?".
This problem could occur if you have duplicate OWA Packages installed in the database. See "How do I detect and clean up duplicate OWA packages installed in the database?" for more information.
The most common reason for this problem is that the Oracle Application Server middle-tier character set does not match that of the back-end database, and HTTP KeepAlive is enabled in Oracle HTTP Server. This kind of misconfiguration causes an invalid Content-Length to be sent back to the browser, causing the browser to detect the end of the response stream only when the KeepAliveTimeout interval causes the stream to be closed. To solve the problem, ensure that the PlsqlNLSLanguage parameter in the DAD matches that of the database.
Yes. But before you can run your applications, you need to install the OWA packages into your database. See Section 2.2, "Installing Required Packages".
Please refer to the Oracle HTTP Server Administrator's Guide.
Refer to Oracle Enterprise Manager documentation for information on creating DADs.
The DAD configuration tool outputs all log details from using the tool, to a log file ORACLE_HOME
/Apache/modpslql/logs/log.xml
.
Yes. But, you should run the following command after the update:
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
This will update the Oracle Enterprise Manager repository with the configuration change and will obscure the DAD password.
See Chapter 3, "Securing Application Database Access Through mod_plsql".
mod_plsql starts a thread in each httpd process. The job of this thread is to clean up idle database sessions and the file system cache. This thread is called the Cleanup Thread.
Please refer to the Oracle Application Server 10g Performance Guide.
mod_plsql cleans up unused database sessions based on the configuration setting of PlsqlIdleSessionCleanupInterval. Besides this, the configuration directive PlsqlMaxRequestsPerSession governs how many requests will be serviced from a pooled database session. Finally, database sessions are closed when httpd processes are shut down.
When the database connection is severed, the first request which attempts to execute a PL/SQL procedure using the severed connection will fail. Subsequent requests will reestablish a database session and start functioning normally. The number of failures will be directly proportional to the number of pooled database sessions. Future versions of mod_plsql will detect dead connections automatically.
The cleanup thread scans the Portal file system cache based on the configuration of PlsqlCacheCleanupTime. The default cleanup time is everyday at 11 P.M. local time.
Yes. Since mod_plsql uses the OHS' Location directive, you can configure any virtual path to be serviced by mod_plsql.
Please refer to the Oracle Application Server 10g Performance Guide.
error_log
file ORACLE_HOME
/Apache/Apache/logs/error_log
. The amount of information logged by mod_plsql is controlled by the setting of OHS' LogLevel parameter in httpd.conf
. By default, this is configured to warn.
ORACLE_HOME
/Apache/Apache/conf/httpd.conf
and set LogLevel to info (default is warn).
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
ORACLE_HOME/opmn/bin/opmnctl restartproc type=ohs
ORACLE_HOME
/Apache/Apache/logs/error_log
starts showing entries as follows:
[Tue Apr 01 14:54:49 2003] [info] mod_plsql: [perf] 130.35.92.145 /pls/app/htp.p status=200 user=scott reqTime=21ms connSU=(null),0ms connRO=(null),0ms connNSSO=HIT,1ms procTime=17ms sessionTidyTime=0ms cache=(null) cookie=(null),0ms pageCalls=0,0ms bytes=5 describe=No,0ms streamTime=0ms pid=175 sessFile=(null) userFile=834\0855 sysFile=470\5949 cacheLevel=(null) cacheTime=0ms dbProcTime=15ms id=1049237685:130.35.92.145:373:1 spid=(null) qs=(null) requestTrace=(null) cookieLen=0 cookieValue=(null) reqUserTime=16ms assertUser=(null) subid=(null) authLevel=(null) oraError=0
PlsqlInfoLogging InfoDebug
This is in addition to the previous setting of LogLevel to info in httpd.conf
.
In this mode, debug messages are logged to Oracle HTTP Server's error_log
file and additional mod_plsql specific logs are created under ORACLE_HOME
/Apache/modplsql/logs
. Log location is configurable using the PlsqlLogDirectory directive in ORACLE_HOME
/Apache/modplsql/conf/plsql.conf
. To enable debug level logging:
ORACLE_HOME
/Apache/modplsql/conf/plsql.conf
and set PlsqlLogEnable to On (default is Off).
ORACLE_HOME/dcm/bin/dcmctl updateConfig -ct ohs
ORACLE_HOME/opmn/bin/opmnctl restartproc type=ohs
Please refer to the Oracle Application Server 10g Performance Guide.
For high availability, mod_plsql based applications should be aware of the following things:
If a firewall exists between the Oracle Application Server middle-tier running mod_plsql, and the back end database, the idle session cleanup interval in mod_plsql should be configured lower than the idle session cleanup interval of the firewall. This ensures that the firewall never closes a connection established by mod_plsql.
PlsqlCGIEnvironmentList SERVER_NAME=lbr.us.oracle.com
Consider using OHS' ServerName directive in httpd.conf
instead.
PlsqlCGIEnvironmentList SERVER_PORT=9999
Consider using OHS' Port directive in httpd.conf
instead.
PlsqlCGIEnvironmentList HTTP_HOST=myservername.us.oracle.com:9999
Combination of SERVER_NAME:SERVER_PORT
.
PlsqlCGIEnvironmentList REQUEST_PROTOCOL=https
Please refer to the description of PlsqlExclusionList in Section 3.3.1, "Using the PlsqlExclusionList Directive in mod_plsql".
This error means that mod_plsql is unable to connect to the database.
Ensure that:
In most situations, the problem occurs because SQL*Net is not able to resolve the connect string parameter using the configuration information under ORACLE_HOME
/network/admin
.
tnsping dad_connect_string
. For example:
tnsping "cn=iasdb,cn=oraclecontext"
or
tnsping iasdb.us.oracle.com
If this does not work, refer to the Oracle SQL*Net documentation on how to troubleshoot this further.
|
![]() Copyright © 1996, 2003 Oracle Corporation. All Rights Reserved. |
|