Informix

 View Only
  • 1.  What is dbsname BEFIMAGE?

    Posted Thu February 29, 2024 04:35 AM
    Edited by Dennis Melnikov Thu February 29, 2024 04:53 AM

    Hi,

    Informix Dynamic Server Version 11.70.FC5XE

    During a Level-0 backup, two temporary tables, named `th_dbs01_1` and `th_dbs02_1`, appeared in one of our temporary dbspaces, `tmpdbs3`. The dbsname for these tables was marked as `BEFIMAGE`.

    Once the backup of `dbs01` and `dbs02` was successfully completed, these temporary tables vanished, and the space they occupied was freed up.

    From what I understand, these tables could be part of Informix's internal mechanism to ensure data consistency during the backup, possibly holding 'before images' of data changes that occur while the backup is in progress. This ensures that any changes made during the backup process can be accurately reflected, preserving the integrity of the backup.

    However, this raises a question: What happens if there isn't enough space in the temporary dbspace for these tables? Would the backup fail, or does Informix have a way to handle such situations, ensuring the backup process completes successfully?



    ------------------------------
    Sincerely,
    Dennis
    ------------------------------



  • 2.  RE: What is dbsname BEFIMAGE?

    IBM Champion
    Posted Thu February 29, 2024 05:50 AM

    It would fail - did already happen.



    ------------------------------
    Andreas Legner
    ------------------------------



  • 3.  RE: What is dbsname BEFIMAGE?

    IBM Champion
    Posted Thu February 29, 2024 06:23 AM

    Dennis:

    Yes, during an archive, physical log pages associated with the dbspace(s) currently being archived are copied into a temp table for safety (since any checkpoint during the archive will clear out the physical log), that/those are the BEFIMAG temp tables. Once each dbspace archive has completed the contents of the associated BEFIMAG table is appended to the archive and deleted. During an ontape archive only one dbspace is archived at a time, but during a parallel onbar archive there may be several dbspaces being archived in parallel so there will be multiple BEFIMAG tables extent at any given time during the full archive. Yes, as well, if the temp dbspaces are not large enough the archive will fail. The BEFIMAG tables are partitioned across all of the temp dbspaces so all temp space mentioned in DBSPACETEMP will be used. Note that these tables are competing for temp space with any production temp tables as well.

    For completness: This process of appending physical log records to the archive is the innovation that allowed Informix to be the first RDBMS that could be successfully archived while transactions were being actively processed. Before Informix OnLine v5.01 all RDBMS systems either had to be taken offline or had to be put into an "archive mode" that blocked transactions (similar to Informix's external backup procedure with onmode -c block/unblock) during an archive. The physical log records captured during the archiving of a dbspace and appended to the archive will overwrite any pages that were modified and flushed by checkpoints happening during the archive thereby restoring them to their consistent content as of the checkpoint that started the archive processing.

    Art



    ------------------------------
    Art S. Kagel, President and Principal Consultant
    ASK Database Management Corp.
    www.askdbmgt.com
    ------------------------------



  • 4.  RE: What is dbsname BEFIMAGE?

    Posted Fri March 01, 2024 04:28 AM

    Art,

    The BEFIMAG tables are partitioned across all of the temp dbspaces so all temp space mentioned in DBSPACETEMP will be used

    tmpdbs3 was the only tempspace occupied. If DBSPACETEMP is not set in environment, does onbar use the config parameter, or a random single tempdbs?



    ------------------------------
    Sincerely,
    Dennis
    ------------------------------



  • 5.  RE: What is dbsname BEFIMAGE?

    IBM Champion
    Posted Fri March 01, 2024 06:41 AM

    Dennis:

    The ONCONFIG setting for DBSPACETEMP is supposed to be the default for any session that does not have the environment variable DBSPACETEMP set. 

    Art



    ------------------------------
    Art S. Kagel, President and Principal Consultant
    ASK Database Management Corp.
    www.askdbmgt.com
    ------------------------------



  • 6.  RE: What is dbsname BEFIMAGE?

    IBM Champion
    Posted 8 days ago

    Hi,

    I am sure I put feature requests in for these but I cannot find them!

    The backup effectively creates temporary tables with partitions in each dbspace to hold the before images of any pages written during a backup.

    If you have multiple temporary dbspaces, one fills and the backup wants more space in tthat temp dbspaces then the backup fails.

    My feature request was have it just write to a different temp partition if one of them cannot grow!

    Also I did wonder if the before image is say  a 16k page and your temp dbspaces are 2k then presumably it split the write up into 8 2k writes at some level internally. It would be best if it could include temporary dbspaces with different page sizes in DBSPACETEMP and it would prefer the dbspaces with page sizes which most closely matched the before image page size.

    I added new ideas

    https://ideas.ibm.com/ideas/INFX-I-606 - Allow temp tables and backup before images to handle temp dbspaces which fill up.

    https://ideas.ibm.com/ideas/INFX-I-607 - Backups to use temp dbspaces with most closlely matching page size.

    Regards,
    David.



    ------------------------------
    David Williams
    ------------------------------