Probkup

Dear All,

A client DB has reached 2 GB. Their back up system is to backup (online) twice a day from linux to windows share. I have recommended AI , the decision is in process.

Now, to split the backup I have created 5 more backup extent in "BACKUPFILE".

However I am confused about -vs value. What should it be?

The .st states 128.
While doing probkup it states block size 1024.

I believe the -vs value is multiplied by 8 for each backup file size.


TIA.
 

RealHeavyDude

Well-Known Member
Regarding the after image: What decision process:blush1:? The question is not whether to have after image enabled or not, it is how. How you implement it depends on what you want to achieve (disaster recovery strategy). There are two questions that needs to be answered: In case the database is gone, how long can we afford the database not to be available and how much data can we afford to lose. Utilizing after image you can limit the loss of data to just the inflight transactions that were not committed at the time the disaster occured. Plus, the after image can save you from other situations where users accidentally delete a huge amount of data that should not have been deleted :blush:
I think you completely misunderstand the -vs parameter - it has nothing to do with the structure description, it just tells the backup how big the size of the volume is to which you're writing the backup.

From the documentation:
-vs n

Indicates the volume size in database blocks that can be written to each removable volume. Before PROBKUP writes each volume, it displays a message that tells you to prepare the next volume. After writing each volume, a message tells you to remove the volume. If you use the Volume Size parameter, the value must be greater than the value of the Blocking Factor parameter.

If you do not use


-vs, PROBKUP assumes there is no limit and writes the backup until completion or until the volume is full. When the volume is full, PROBKUP prompts you for the next volume.

HTH, RealHeavyDude.
 
RHD, I agree with you entirely, but I have made them aware of the pros & cons of AI.

Now if I want my volume to be 1 GB each then what will be my -vs value?
 

RealHeavyDude

Well-Known Member
Which Progress Version you are on and which database license (workgroup or enterprise) do you use? On which OS is this thing running?

Maybe I am getting this completely wrong - but, I've used the -vs parameter only with backup tapes long, long, long time ago. As far as I unstand it, the backup process in recent Progress version automatically asks for a new backup device as soon as the limit of that device is reached (this could be the capacity limit of the device or the ulimit for example) instead of crashing and therefore leaving you without a valid backup.

The 2GB file limit is a burden of old Progress versions (I think it was fixed in 9.1c or 9.1b around the turn of the century). Recent versions of Progress do not have that limitation anymore - therefore you don't need the -vs parameter when createing backups of database which a larger than 2GB. AFAIK, this limitation was not lifted for Linux until OpenEdge 10 but I don't know why. Therefore if you are on a Linux machine then you still need it when your database is larger than 2GB. It specifies the number of database blocks that can be written to the volume. If your database blocksize is 8K then you need to calculate with 8192, if it is 4K then 4096 and so on ...

HTH, RealHeavyDude.
 
The client is on Progress91e. I can backit up on linux machine no issues.However copying across to windows share crashes cause of 2GB limit on O/S.

On the block size is it from .st file else how can I verify it?

Thanks for your responses.
 

RealHeavyDude

Well-Known Member
You can't find the blocksize of the database in the structure description file. The only thing I'm aware of is, that, when you specify fixed extents the size must be dividable by 16 times the database blocksize. If that's not the case Progress fixes the size of the fixed extent automatically to the next proper value.

ID: P11955
Title: "How to find out the blocksize of a database."
Created: 10/22/2002Last Modified: 10/14/2008Status: Verified


Goals:
One way to find the blocksize of a database.
How to find out what is my database blocksize?
How to find out the blocksize of a database.


Fixes:
Look in the database log file for the start of the last multi-user session.
The startup values for that database will include the database blocksize.
Broker 0: Database Blocksize (-blocksize) : (the value, i.e. 1024). (6573)

Another way would be using promon option 7 database status.

Regards, RealHeavyDude.
 

TomBascom

Curmudgeon
If you want to keep your backup extents under 1GB regardless of db block size use this:

probkup dbname dbname.pbk01 -vs 125000 -com < pbk.list

where pbk.list is a list of file names for overflow extents -- one file per line like so:

dbname.pbk02
dbname.pbk03
dbname.pbk04
dbname.pbk05
dbname.pbk06
dbname.pbk07
dbname.pbk08
dbname.pbk09
dbname.pbk10
...

A -vs of 125000 will translate to 1GB if the db has 8k blocks, .5GB if 4k blocks and so forth. Put as many overflow extents as you can stand in the .list file.

In any event AI & backups are not mutually exclusive. You need both.

For more information on after-imaging I suggest you check out http://dbappraise.com/ppt/ai.pptx.
 
Tom,

Pl Help


# probkup online /usr/opt/eb2.1/db/mfgprod /usr/opt/streamserve/backup/mfgprod.bk0 -vs 125000 -com < /usr/opt/eb2.1/BACKUPFILES

1946453 active blocks out of 1998651 blocks in /usr/opt/eb2.1/db/mfgprod will be dumped. (6686)
5120 bi blocks will be dumped. (6688)
Backup requires an estimated 1.9 GBytes of media. (9285)
Restore would require an estimated 2003399 db blocks using 1.9 GBytes of media. (9286)

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:

Please enter next device/file name or type "quit" to exit:
Backup failed due to EOF during next output device request. (5057)

Backup terminated due to errors. (1617)
 

TomBascom

Curmudgeon
As tamhas suggests it sounds like you do not have enough files in your BACKUPFILES. It also looks like you have 1k db blocks.
 

RealHeavyDude

Well-Known Member
If the blocksize is 1K you should definately change it. A bigger blocksize can have a very positive impact on overall performance. That is because the database engine always moves the data in blocks between disks and memory and vice versa. A bigger blocksize means that more data is moved in one operation.

The only way you can define the database blocksize is when you create the database. Therefore, in order to change the blocksize you must dump your old database, create a new one and load the dumped contents into the new one.


What you need to be aware of:
  • Some database startup parameters, most notably the buffer pool -B, use the database blocksize. Therefore you might want to adjust those parameters.
  • Backup/Restore: The blocksize of the backup and the void database where you want to restore must be identical. That means that you cannot restore a backup before the change of the database blocksize to a database with the new blocksize.
HTH, RealHeavyDude.
 
I am very Confused.

Post previous replies I checked the .st file it states 128 (see below). Then how can we conclude its 1k? Is there anywhere else I need to check.

TIA.

#
b /usr/opt/eb2.1/db/mfgprod.b1
#
d "Schema Area":6,32 /usr/opt/eb2.1/db/mfgprod.d1
#
d "TRANSACTION":7,64 /usr/opt/eb2.1/db/mfgprod_7.d1 f 128
d "TRANSACTION":7,64 /usr/opt/eb2.1/db/mfgprod_7.d2
#
d "TRANSACTION_IDX":8,32 /usr/opt/eb2.1/db/mfgprod_8.d1 f 128
d "TRANSACTION_IDX":8,32 /usr/opt/eb2.1/db/mfgprod_8.d2
#
d "STATIC":9,64 /usr/opt/eb2.1/db/mfgprod_9.d1 f 128
d "STATIC":9,64 /usr/opt/eb2.1/db/mfgprod_9.d2
#
 

RealHeavyDude

Well-Known Member
The 128 in the structure description file you are refering to is the size in KB of a fixed extent. It has nothing to do with the database blocksize other than it must be dividable by 16-times the database blocksize. Therefore it's hardly possible to determine the databse blocksize from this value.

In an earlier response to this thread I have posted solutions on how to find out the database blocksize (see above). This are two options you have to find it out.


Regards, RealHeavyDude.
 

TomBascom

Curmudgeon
This:
Restore would require an estimated 2003399 db blocks using 1.9 GBytes of media.

Indicates that the db block size is 1k (just do the math -- 1.9GB / 2003399 blocks...).

As RHD says the .st file does not indicate the block size. It specifies extent sizes, rows per block and (if OE10) blocks per cluster. All of which are quite different from db block size.

You might want to consider a DBA training class or some mentoring before you do something seriously harmful to one of your clients.
 
Top