Sun Cluster Data Service for Sybase ASE Guide for Solaris OS

Changing the Response to a DBMS Error

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:

Responding to an Error Whose Effects Are Major

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.


Example 1 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:


Ignoring an Error Whose Effects Are Minor

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.


Example 2 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: