The action that the server fault monitor performs in response to each DBMS error is preset as listed in Table 1. To determine whether you need to change the response to a DBMS error, consider the effect of DBMS errors on your database to determine if the preset actions are appropriate. For examples, see the subsections that follow.
To change the response to a DBMS error, create an entry in a custom action file in which the keywords are set as follows:
ERROR_TYPE is set to DBMS_ERROR.
ERROR is set to the error number of the DBMS error.
ACTION is set to the action that you require.
If an error that the server fault monitor ignores affects more than one session, action by the server fault monitor might be required to prevent a loss of service.
For example, see the following error message:
Illegal attempt to change contents of buffer: %S_BUF. |
No action is preset for Sybase error 835, Illegal attempt to change contents of buffer: %S_BUF. However, this Sybase error indicates that the when a client process completes, Adaptive Server performs some cleanup tasks such as closing the buffers and releasing the resources taken up by the buffers. If the client process terminates abnormally, however (for example if the process is killed during execution), Adaptive Server might be unable to carry out the appropriate cleanup, buffers are left open, and Error 835 is raised. If this error affects only a single session, ignoring the error might be appropriate. However, if this error affects more than one session, consider specifying that the server fault monitor restart the database.
The following example shows an entry in a custom action file for changing the response to a DBMS error to restart.
{ ERROR_TYPE=DBMS_ERROR; ERROR=835; ACTION=restart; CONNECTION_STATE=*; NEW_STATE=*; MESSAGE="Illegal attempt to change contents of buffer: %S_BUF."; }
This example shows an entry in a custom action file that overrides the preset action for DBMS error 835. This entry specifies the following behavior:
In response to DBMS error 835, the server fault monitor performs a restart.
This entry applies regardless of the state of the connection between the database and the server fault monitor when the error is detected.
The state of the connection between the database and the server fault monitor must remain unchanged after the error is detected.
The following message is printed to the resource's log file when this error is detected:
"Illegal attempt to change contents of buffer: %S_BUF." |
If the effects of an error to which the server fault monitor responds are minor, ignoring the error might be less disruptive than responding to the error.
For example, see the following error message:
Unable to find buffer 0x%lx holding logical page %ld in sdes 0x%lx kept buffer pool for object '%.*s'. |
The preset action for Sybase ASE error 804, Unable to find buffer 0x%lx holding logical page %ld in sdes 0x%lx kept buffer pool for object '%.*s'. is restart. This error occurs when Adaptive Server cannot find the pointer to a buffer header in a session descriptor. This error can be transient. In this situation, consider specifying that the server fault monitor ignore the error.
The following example shows an entry in a custom action file for ignoring a DBMS error.
{ ERROR_TYPE=DBMS_ERROR; ERROR=804; ACTION=none; CONNECTION_STATE=*; NEW_STATE=*; MESSAGE="Unable to find buffer 0x%lx holding logical page %ld in sdes 0x%lx kept buffer pool for object '%.*s'."; }
This example shows an entry in a custom action file that overrides the preset action for DBMS error 804. This entry specifies the following behavior:
The server fault monitor ignores DBMS error 804.
This entry applies regardless of the state of the connection between the database and the server fault monitor when the error is detected.
The state of the connection between the database and the server fault monitor must remain unchanged after the error is detected.
No additional message is printed to the resource's log file when this error is detected.