Insufficient disk space

WARNING! If Sybase IQ holds certain system locks or is performing a checkpoint when you run out of disk space, you may not be able to add disk space. For this reason, recognizing when you are low on disk space and adding a new dbspace before you run out of space are important.

For an example of using an event handler to monitor disk space usage, see the section “Monitoring disk space usage”.

Actions

Effect of checkpoints on out of disk space conditions

If Sybase IQ has already run out of space when a checkpoint is requested, the checkpoint command fails with the error:

You have run out of space during the CHECKPOINT operation.
[EMSG_IQSTORE_OUTOFSPACE_CHECKPOINT: 'QSB33',-1009133].

You must add a dbspace before any new checkpoints can succeed.

Adding space if you cannot connect to a server

If you run out of space during an operation and are unable to add space because you cannot connect to the server, you must:

  1. Shut down the database server using any of these methods:

    • On any platform, run dbstop.

    • On Windows, click the correct server icon on the Windows task bar to display the Sybase IQ window, and then click the Shutdown button.

    • On UNIX, run stop_asiq or type q in the window where the server was started.

    If the server does not shut down, see “Server fails to shut down” below.

  2. Restart the engine with the start_asiq command.

  3. Connect to the database.

  4. Use the CREATE DBSPACE command to add space.

  5. Rerun the operation that originally failed due to insufficient space.

Managing dbspace size

Growth of catalog files is normal and varies depending on application and catalog content. The size of the .db file does not affect performance, and free pages within the .db file are reused as necessary. To minimize catalog file growth:

If the Catalog Store cannot extend one of its files (.tmp, .db, or .iqmsg), IQ returns the error A dbspace has reached its maximum file size. To prevent this problem:

Adding the wrong type of space

If the temporary dbspace runs out of space and you accidentally omit the temporary keyword in the create dbspace command, the create dbspace command waits for you to add space to the temporary dbspace.

To provide the temporary dbspace needed by the create dbspace command, connect to the database from a new connection and create the temporary dbspace. Once the temporary dbspace is created, the create dbspace for main completes and all waiting connections resume running.

The same is true, if the main dbspace runs out of space and you attempt to add temporary dbspace. IQ waits for you to add space to main first, before adding to the temporary dbspace. You must add space to the dbspace that runs out of space first, and IQ ensures this sequence.

Fragmentation

Sybase IQ provides control over fragmentation by taking advantage of even the smallest unused spaces. However, fragmentation can still occur. If your database runs out of space, even though Mem Usage listed by sp_iqstatus or the .iqmsg file shows Main IQ Blocks Used is less than 100%, it usually indicates that your database is fragmented,

Freeing space

Note that when a connection is out of space, freeing space by dropping tables or indexes in another connection is not possible, because the out of space transaction will see those objects in its snapshot version.

Monitoring disk space usage

Recognizing when the server is low on disk space and adding a new dbspace before the server runs out of space is important. See the section “Monitoring disk space usage” for an example of using an event handler to monitor disk space usage and to notify you when available space is low.

Reserving space for the future

To ensure that you have enough room to add new dbspaces if you run out of space in the future, set the database options MAIN_RESERVED_DBSPACE_MB and TEMP_RESERVED_DBSPACE_MB. Set these options large enough to handle running out of space during a COMMIT or CHECKPOINT. See Chapter 2, “Database Options” in the Sybase IQ Reference Manual for details.