Connect DB running on a Unix system to a Windows Development environment

#1
Hello folks,

I'm really sorry to bother you with this maybe stupid question, but as I'm relatively new to database-administration I might bother you a little bit more in the future :D
First, how do I get the database which runs on an unix server connected to my Windows environment? I read several solutions, ODBC/JDBC/direct connect/AVM, but what do you recommend? And maybe a link would be helpful.


Thank you in advance
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
#2
First, some terminology. ODBC and JDBC are technologies for connecting SQL clients to a database. You likely don't need that (more on that later). AVM is more of a concept; it means "ABL Virtual Machine". This is the ABL runtime environment that is implemented in client processes (e.g. prowin.exe, prowin32.exe, _progres.exe, _mproapsv.exe, etc.). "Direct connect" isn't really an OE-specific term. But you might be referring to a "shared memory" connection, aka a "self-service" connection, where an ABL client connects directly to a database without using the network stack. This is only possible for an ABL client, and only when it runs on the same machine as the database.

Because your database is on Unix and your IDE (which one?) is on Windows, you need to make a TCP connection from the Windows client to the Unix database. This means your database must be configured with a connection broker that allows ABL clients to connect remotely.

The minimum configuration for an ABL connection broker looks like this:
proserve <dbname> -S <TCP port number or service name> -H <db server hostname or IP address> -ServerType 4GL

The client's connection parameters might look like this:
prowin32.exe -db <dbname> -H <db server hostname> -S <TCP port number or service name>

If you use service names rather than port numbers, they must be defined in the services file of both the server and the client.

Having said that, don't use the minimum broker configuration! I kept it short for the sake of simplicity. There are lots of parameters that can be specified on a database broker, even more so if it is the primary database broker. Unfortunately this is an area where the OE documentation does a fairly bad job of explaining how things work.

Other client/server parameters you should specify on a connection broker:
-Mn (primary broker only): maximum number of remote servers and secondary connection brokers
-Mpb: maximum number of servers to spawn
-Ma: maximum number of clients per server
-Mi: minimum number of clients per server
-minport: low end of contiguous range of TCP port numbers to use for servers
-maxport: high end of contiguous range of TCP port numbers to use for servers
-n (primary broker only): maximum number of database connections, not including brokers and servers

There are other client/server-specific broker parameters but these are the main ones you need to know about.

If your IDE is OpenEdge Studio, each Procedure Editor you run can be a database client. You can specify client startup parameters (parameters used in the command line that starts the client) to connect to a remote database, as I showed above. Alternatively, you can use client connection parameters with the ABL CONNECT statement to connect a client that is already running to a database. All of these parameters are documented in the Startup Command and Parameter Reference manual. Database broker parameters are also documented in the Reference section of the Database Administration manual. I trust you have access to the PDF documentation set for your OE release.

If your IDE is the Eclipse-based OpenEdge Architect (v10) or Progress Developer Studio for OpenEdge (v11), then you may have one or more database connections, depending on how your projects are configured. They can each have their own database connections or you can use a shared AVM. But the concept is similar to OE Studio. OEA/PDSOE also has a "Database Navigator" view that lets you inspect the structure of a connected database. If you want to use that feature, it uses a SQL connection to the database, rather than an ABL/4GL connection. In that case you would also need to run a SQL connection broker against your database. Its command line might look something like this:
proserve <dbname> -m3 -S <TCP port number or service name> -H <db server hostname or IP address> -ServerType SQL

Again, that is a minimum configuration. You should also specify -Mpb, -Ma, -minport, -maxport, and perhaps other parameters. Note that each broker needs its own unique port for -S; it must be different from the one use for 4GL. Also, the "-m3" designates this as a secondary broker. You need that in the command line of any broker that is started after the broker that opened the database.

Good luck, I hope this helps. Let us know if you have follow-up questions. Also, it would be helpful to know your OpenEdge version.
 
Last edited:
#3
Wow, thank you very very much Rob. I will do a test asap and give you feedback.
I think I will use the AppBuilder as IDE (easier to configure than Eclipse ^^) and the OpenEdge version used here is 11.3SP1.

Really, thanks a lot :)
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
#8
Thoughts on OE 11.3:
  • You're on 11.3.1. You should consider installing SP03 at a minimum. Ideally you should upgrade to 11.7 with the latest service pack (SP02, though SP03 will be out soon). 11.3 reached "retired" status in August of 2016.
  • OE 11.3 has a nasty prorest bug (bug# PSC00317988) that can prevent you from being able to restore a backup that was taken online. In 11.3 they changed the default way that the BI file is backed up in probkup online. It just backs up the active clusters, not all clusters. But it can result in a corrupted backup file. The bug is fixed in 11.5.0 and later, but as a workaround in 11.3.x you can revert to the pre-11.3 backup behaviour by adding "bibackup all" to the probkup parameters (the default is "bibackup active"). This bug does not affect offline backups.
    E.g.: probkup online <dbname> <dbname.pbk> bibackup all -com -verbose -Bp 10
 
Top