Migrating 11.7 Linux to Windows 11.7

Migrating OpenEdge 11.7 from Linux to Windows 11.7
I need to migrate a Progress OpenEdge 11.7 database from a Linux server to a Windows server, both running the same version of OpenEdge (11.7).

Currently, I have binary dump (.bd) files for the tables, but I understand these are platform-specific and cannot be directly loaded onto Windows due to endianness and format differences.

My questions:

Is there a reliable way to convert or use .bd files to load the data into a Windows-hosted database?
Should I recreate the database on Linux, export the data into ASCII .d files, and transfer it to Windows?
What is the most recommended method for such a migration process?
If anyone has dealt with a similar migration, your insights or any step-by-step guidance would be greatly appreciated!
 
You understand incorrectly.

Binary dump files are portable across operating systems, bitness, endianness, and (upwardly) through Progress releases. They can also be backwards compatible if they do not contain features that would prevent that (like an INT64 trying to go back to v9...)

You can load them with proutil dbname -C load ...
 
Okay
So I have exported the ST, the DF and the .bd's

when

The ST and DF say they are in UTF-8 though exported in ISO-*****

Stuck on either creating the db from st with the error of void multi volume db

Tried the Procopy empty to my db and it just breaks it.

CHATGPT SUMMARY:

Here’s a step-by-step summary of what you’ve done so far, including the commands you ran and their results.


I have all of my DB in /home/dump/*db* with ST and DF and BD files -> D:\Data\Live-Test\vision\*ALLFILES*

I keep going in circles.

Copied to windows and started with the below

1. Copy the Empty Database

You used procopy to initialize the database with the default empty database from Progress OpenEdge.

Command:

cmd
Copy code
procopy C:\Progress\OE117\empty D:\Data\Live\vision<br>
Result:

  • This copied the metaschema from the empty database to your target database (D:\Data\Live\vision).
  • The database now contains the basic structure needed for Progress OpenEdge operations.

2. Apply the Structure File (vision.st)

You ran prostrct create to apply your structure file (vision.st) and create the necessary database extents.

Command:

cmd
Copy code
prostrct create D:\Data\Live\vision D:\Data\Live-Test\vision\vision.st<br>
Result:

  • Extents were formatted successfully:
    • vision.b1, vision.b2, vision.d1, vision.d2, etc.
  • The structure file was applied without errors.

3. Attempt to Start the Database with UTF-8

You tried to start the database in multi-user mode with UTF-8 encoding.

Command:

cmd
Copy code
proserve D:\Data\Live\vision -cpinternal UTF-8 -cpstream UTF-8 -cpcoll basic
Result:

  • Error: D:\Data\Live\vision is a void multi-volume database (613).
  • The database was detected as void, meaning it did not have a valid metaschema (even though the structure file was applied).
 
There are undoubtedly lots of threads here about database platform migration. I'd suggest a site-specific Google search for related terms: dump & load, migration, etc.

At a high level, you need to dump the data from your source database and load it into a target database. Dump and load can be an involved subject, probably more than can be covered exhaustively in a forum post.

In this context, "data" can be many things:
  • You need the record data from your source tables.
    • You have that in your .bd files.
  • You need the database schema definitions (dbname.df).
    • This can be dumped from the source database via the Data Dictionary.
    • This .df will contain storage area assignments for your schema objects (tables, indexes, LOBs).
  • You need a database structure for your target database.
    • First ensure that the Linux structure file (dbname.st) is up to date, via a prostrct list <dbname> command.
    • If you intend to keep the structure the same on Windows as on Linux, copy the structure file over to the target location on the Windows server. You will obviously need to edit the paths of the extents as appropriate for the new file system.
    • If you don't intend to keep the same structure, that broadens the scope of this project. You will need to understand or research structure design, and possibly alter the AREA qualifiers in your .df file.
Those are the basics, which you need unconditionally. It is not necessarily all the data you need to preserve/migrate. What else you need depends on what features are used in the source database, and this can be a surprisingly long list. Some examples:
  • Sequence values
  • _User records
  • SQL schema
  • SQL table permissions
  • SQL DBAs
  • SQL views
  • Policies, for various policy-based database features, e.g.:
    • multi-tenancy
    • table partitioning
    • transparent data encryption
    • alternate buffer pool
    • change data capture
    • auditing
  • Replication properties
  • database security settings
Aside from data, you also need to ensure that your target database mirrors the source in terms of configuration, including:
  • AI/BI settings
  • database features (look at proutil -C describe output on the source)
  • broker configuration parameters
  • authentication settings (adminstrators/roles/systems/domains)
 
Got it to work thank you for all your support


To migrate an OpenEdge database, including schema (.df), structure (.st), and table data (.bd), from a Linux server to a Windows server.
Step-by-Step Instructions
Step 1: Export Data on the Linux Server
Navigate to the Live Database Location

cd /home/radius/live/
Run the Dump Script
Use the provided script to dump all table data into .bd files:

bash dump_vision.sh
This will output .bd files to:

/home/dump/vision/*TableName*.bd
Dump the Database Structure File (.st)
Generate the structure file:

prostrct list <dbname>
This creates the dbname.st file in the current folder.

Copy the Structure File to the Dump Directory
Move the .st file to the dump folder:

cp dbname.st /home/dump/vision.st
Dump the Schema Definition File (.df)
Launch the Data Dictionary:

mpro -p _dict.p <dbname>
Use Admin → Dump Data and Definitions → Table Definitions.

Save the .df file to /home/dump/vision/.

Transfer Files to Windows
Copy all files (*.bd, vision.st, vision.df) from /home/dump/vision to the Windows server at:

D:\Data\LtW\vision\
Step 2: Prepare Files on the Windows Server
Move vision.st and vision.df
Move the vision.st and vision.df files to:

D:\Data\Live-Test\vision\
Update the Structure File (.st) Paths

Open vision.st in a text editor.

Replace the Linux file paths (/home/radius/data/live/) with Windows paths (D:\Data\Live\vision\).

Example:

d "Indx":10,32;8 D:/Data/Live/vision_10.d1 f 2048000
d "Indx":10,32;8 D:/Data/Live/vision_10.d2 f 2048000
Important: Save the file as ANSI, not UTF-8.

Step 3: Create and Initialize the Database
Open the ProEnv Command Prompt
Navigate to the database directory:

cd D:\Data\Live-Test\vision\
Create the Database Structure

prostrct create vision vision.st
Copy the Blank Metaschema
Initialize the database with the default metaschema:

procopy C:\Progress\OE117\empty D:\Data\Live\vision
Step 4: Load the Schema and Data
Load the Schema (.df)
Run the following command:

pro D:\Data\Live\vision -C load D:\LtW\vision\vision.df
Create a Batch File to Load .bd Files
Save the following script as load_bd.bat:

@echo off
for %%f in (D:\LtW\vision\*.bd) do (
echo Loading table %%~nf ...
proutil D:\Data\Live\vision -C load %%~nf %%f
)
echo Data load completed.

REM Rebuild indexes
proutil D:\Data\Live\vision -C idxbuild all
Run the Batch File
Execute the script to load all table data:

load_bd.bat
Step 5: Verify the Database
Start the Database:

proserve D:\Data\Live\vision
Check Table Data:

Open the Data Dictionary:

pro -p _dict.p D:\Data\Live\vision
Navigate to Admin → Table Contents to verify data.

Check Logs for Errors:
Review the database log file:

type D:\Data\Live\vision.lg
Summary of Commands
 
Those are the basics, and if your database is very small, you can get away with a simple proutil -C idxbuild all. If you have a meaningful amount of data (a production-like DB), e.g. several GB or more, you likely want to specify options on that command to tune its resource utilization and performance. Of course that depends on your needs, e.g. available window of downtime, and your hardware performance.
 
It is production indeed but the nice part is we have this running on windows already else where, just needed to get it half up if that makes sense.
Same exact system otherwise yes it would be chaos getting this to actually being configured correctly.
It's weird that they wouldn't just add this as a knowledge base in their articles. rather than it's "Unsupported"

Unless I am still being Naive to other issues at hand that could arise?
 
It's weird that they wouldn't just add this as a knowledge base in their articles. rather than it's "Unsupported"
Did you find an article that said this process is unsupported? If so can you share that?

Database dump and load (whether by ASCII or binary dump) is in fact the only supported method of migrating a database from one OS to another.
 
For some reason I can't find a way to actually import the BD's, it still keep saying must use -cpinternal UTF-8 even though both the db and the files are UTF-8?
 
Perhaps you could try posting the actual commands that you are using along with the messages being produced?

It is generally much more fruitful to respond to the actual commands and errors than it is to attempt to infer them from brief descriptions of the results thereof…
 
proenv>load_vision.bat -cpinteral UTF-u

proenv>proutil vision -C load /home/dump/vision/attribute-list.bd
OpenEdge Release 11.7.18 as of Fri Aug 4 14:41:30 EDT 2023
Use "-cpinternal UTF-8" with load only with a UTF-8 database. (8557)

proenv>load_vision.bat -cpinteral UTF-8

proenv>proutil vision -C load /home/dump/vision/attribute-list.bd
OpenEdge Release 11.7.18 as of Fri Aug 4 14:41:30 EDT 2023
Use "-cpinternal UTF-8" with load only with a UTF-8 database. (8557)

proenv>load_vision.bat -cpinteral UTF-u

proenv>proutil vision -C load D:\LtW\vision\attribute-list.bd -cpinternal UTF-8
OpenEdge Release 11.7.18 as of Fri Aug 4 14:41:30 EDT 2023
Use "-cpinternal UTF-8" with load only with a UTF-8 database. (8557)

proenv>
 
I'm glad that you figured it out but, just for completeness, if you had not figured it out we probably would have needed to ask you to share the content of load_vision.bat.

We may have also needed to know what commands you used to create the .bd file in the first place.
 
Back
Top