Issue: A DAD was configured for the “mod_plsql” module in OHS. However when attempting to run a database procedure via OHS, the following error message is displayed in the end-user’s browser which will result in an OHS failure with dads.conf misconfigurations:
“The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.” The HTTP error was a 503 error.
Cause:
We reproduced the issue and found in the OHS logs that OHS had a TNS error and couldn’t resolve the database SID that was configured in the PlsqlDatabaseConnectString parameter in the $ORACLE_INSTANCE/config/OHS/ohs1/mod_plsql/dads.conf file.
The correct entries were in the $TNS_ADMIN/tnsnames.ora file.
The exact cause was OHS could not resolve the SID against the logical name provided in PlsqlDatabaseConnectString value in dads.conf against the SID configured in tnsnames.ora.
For example:
- tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
) - dads.conf:
<Location /pls/plsqlapp>
SetHandler pls_handler
Order deny,allow
Allow from all
AllowOverride None
PlsqlDatabaseUsername scott
PlsqlDatabasePassword tiger
PlsqlDatabaseConnectString orcl
PlsqlDefaultPage scott.home
PlsqlDocumentTablename scott.wwdoc_document
PlsqlDocumentPath docs
PlsqlDocumentProcedure scott.wwdoc_process.process_download
PlsqlAuthenticationMode Basic
</Location>
Solution:
To prevent an OHS failure with dads.conf misconfigurations, in the $ORACLE_INSTANCE/config/OHS/ohs1/mod_plsql/dads.conf file, specify a full TNS connect string in the “PlsqlDatabaseConnectString” parameter. Save changes to dads.conf and reboot OHS to apply changes. Once OHS is successfully rebooted, test.
Format of a full TNS connect string is as follows: db_host:db_port:SID
Here is an example of how the TNS connect string should be structured (using tnsnames.ora example from above): hostname:1521:orcl