Consultor Eletrônico



Kbase 19260: -bithold -bistall and the ProQuiet bithreshold - Summary
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   30/04/2004
Status: Technically Reviewed

GOAL:

To remove confusion around -bithold -bistall startup parameters and the ProQuiet bithreshold command.

SYMPTOM(s):

'Before Image Threshold is greater or equal to 1GB.'

'Crash recovery may not be successful in the event of a crash.'

Quiet point has been enabled by the broker. (5583)

Quiet point has been disabled by the broker. (5584)

BI Threshold value has changed to  <num>, was  <num>. (6556)

BI File Threshold size of  <num> has been reached. (6558)

BI file size has grown to within 90 percent of the threshold value of  <num>. (6559)

Forward processing stalled until database administrator intervention. (6560)

Forward processing continuing. (6561)

CAUSE:

This solution summarizes how these parameters are supposed to be used through the use of a scenario where a transaction is running that causes expansion of the before-image (BI) file that you hope to fit into 1GB but are not sure.

The following command starts a server and sets a 500MB BI threshold that allows the system to stall if that threshold is reached:


$ proserve mydemo -bithold 500 -bistall

Before the threshold is reached, it is possible that a message similar to the following might appear that indicates the BI file is getting near the established threshold:


12:31:24 Usr     1: BI file size has grown to within 90% of the threshold value of 523763712. (6559)

At this point it is possible for an administrator to bump up the threshold online to allow for investigation of whatever is causing unexpected BI growth (before) the system stalls. A reasonable course of action is to bump the threshold to 1GB.

For this example, assume you expect to have to go above 500M and you hope the update finishes before too long. The following commands expand the BI threshold to 1GB:


$ proquiet mydemo -C enable
$ proquiet mydemo -C bithreshold 1000
$ proquiet mydemo -C disable

The following log (.lg) file results:


12:33:19 BROKER 0: Quiet point has been enabled by the broker. (5583)
12:33:20 QUIET  2: BI Threshold value has changed to 1048051712, was 523763712. (6556)
12:33:21 BROKER 0: Quiet point has been disabled by the broker. (5584)

Notice the -C syntax on ProQuiet and no dash on bithreshold command. Also, carefully consider that here you are establishing a quiet point to allow the threshold to be changed and that the system is not stalled.

In practice, all three commands should appear in a script to make sure they occur as quickly as possible with as little impact on the online system as possible. If processing continues and the BI file continues to expand, eventually the same 90% warning will be issued and, once the BI size reaches the 1GB threshold value, the following message appears in the .lg file:


13:08:36 Usr     1: BI File Threshold size of 1048051712 has been reached. (6558)
13:08:36 Usr     1: Forward processing stalled until database administrator intervention. (6560)

At this point, all updates on the database stall until the threshold is raised or the database is shutdown. The database has been placed in a quiet point, and it cannot be explicitly disabled. The only command supported is to raise the BI threshold further. In this scenario, you have reached the safety point where you might be unwilling to allow more BI log to be used.

For Progress Version 8.3 users, it is dangerous to allow the value to go beyond 1GB because crash recovery may not be possible (due to a need to expand the BI log beyond 2GB). In fact, if you attempt to start with a BI threshold larger than 1GB, you get an error similar to:


$ proserve mydemo -bithold 1500 -bistall
14:31:32 SERVER : Before Image Threshold is greater or equal to 1GB.
14:31:32 SERVER : Crash recovery may not be successful in the event of a crash.

For an example, assume you know your transaction is long-running, that it does infrequent updates during its long run and that you are completely confident you can go to 1.2GB and not take any risk.  The BI threshold can be raised above 1GB to 1.2GB with the command:


$ proquiet mydemo -C bithreshold 1200

with the following .lg results:


13:08:40 QUIET   2: BI Threshold value has changed to 1257766912, was 1048051712. (6556)
13:08:40 Usr     1: Forward processing continuing. (6561)

Note that immediately after this command is issued, processing is continued. Also note that, contrary to some stat.ements in some documentation, it is not necessary (in fact not allowed) to enable and disable a quiet point when you adjust the BI threshold (while) the database is stalled. The stall itself causes an implicit quiet point and the (only) command allowed is proquiet -C bithreshold.

At this point in the example, the long transaction completes.  Your BI file stands at, say, 1.1GB with a threshold at 1.2 GB.  While there were reasons to allow the BI file to grow above 1GB, you now need to schedule a BI truncate command to push the value down below 1GB.

Since your startup script has -bithold 500, the BI threshold will be reset to a safe 500MB value once the database is restarted..