How do we customize the VORTEX client(s) on a Unix system? What are the
files to consider ?
VORTEXclient uses net.ini to fill in any parameters that are not provided in
the connect string. net.ini is located in $TRIM_HOME/lib.
Can you give us an efficient method to test the connection between the
VORTEX client and the server process ?
vtxping. From the AIX system, vtxping -pport MVS_system
where port is the TCP/IP port on which the VTXNETD process job is listening and
MVS_system is the name or IP address of the MVS system.
We are running OpenVMS Rdb and sometimes get an error message: Error from System
Services Request when doing queries. What is the problem?
The query is attempting to open a Sort file but it cannot find the sys$login and
sys$login_device logicals. VORTEXserver on OpenVMS is implemented as a batch
job and new connections are serviced with a new process using CreateProcess.
The new process does not inherit the Process logicals and so it does not have
these two logical set. The solution is to make them group logicals, e.g.
define/group sys$login dka0:[prod]
define/group sys$login_device dka0:
Under what conditions does a "connection reset by peer" occur ?
I would guess a database timeout.
No that is a regular database return. The connection reset by peer error is
if the proxy quits before the client has time to do its cleanup.
What does the VTXCMD() multirow option do?
Multirow applies to Sybase and SQL Server. These have a bulk interface called
bcp which greatly improves bulk insert performance but the DBMS must be
enabled to do so. Some sites do not enable their DBMS so the bcp calls fail.
Setting multirow = no, the default, means we use the bulk interface (bcp) to do
bulk inserts. Multirow = yes means we do individual inserts. There is still
some performance enhancement in this case because the data will be sent across
How do I get multiple rows back from a Sybase or SQL Server stored procedure?
How do get different result sets?
To get rows from the stored procedure, use VTXOPEN with the
following SQL statement syntax:
Then use VTXMOVE. Check sqlcode for TDB_ARS_ROWS (1) and TDB_ARS_COMPUTE (2)
to determine what is going on.
How does an embedded SQL program running on VMS authenticate to a
Microsoft SQL Server? Does it supply a username and password? How does
this interact with the final connection being made to the SQL Server? We
need to know in great detail how this security aspect of the solution is
You have both database authentication as well as OS authentication available.
SQL Server accepts a userid/passwd to login. You can also set up the
VORTEXserver to require OS login information before allowing a connection to
Can you explain the error
Message: ORA-01475: must reparse cursor to change bind variable datatype,offset:
that follows a VTXCMD(db_index, rep_sla, NULL, 7, 96);
The VTXCMD was issued after a VTXEXEC call has been issued and
the next VTXEXEC call results in the error.
We cache cursors so the second VTXEXEC() does not reparse the cursor, it merely
rebinds the values. If you want to change the character binding datatype, you
must VTXCLOS() the cursor(s) before executing them again.
Could you please tell me whether there are any Y2K problems with VORTEX?
All VORTEX products support the following date range:
0000-01-01 <-> 9999-12-31
JDK 1.02 limits the available date range to:
1970-01-01 <-> 2037-12-31
Does VORTEX convert dates passed in strings to the database format?
No, VORTEX does not modify any data passed to VORTEXcli. Dates are a problem
for DBMS applications because every DBMS has a different date string format.
If you pass date/time information in as a string, the
application is reponsible for making sure the format is correct. If you use
our TDT_DATETIME format, then you will always be ok. Use our conversion
routines to convert your date/time string into our internal datetime format.
Was exactly does VTX3 do?
vtxhost.net is used to "hop" over to another network. For example,
Machine A -> Machine B -> Machine C
Application VTX3 VTX0
It can be used to hop through a firewall for example. We do this for our
client in Glencoe who uses our databases on our local machines.
What does vtxslave do?
vtxslav is used by VORTEXaccelerator to connect to a DBMS. The slave connect
string determines where it goes.
One of our customer wants to use Oracle OCI's
obreak function, which requires access to
LDA. Is it possible to get access to LDA and use obreak,
through the VORTEX layer?
They can use VTXCAN() to cancel an outstanding request.
I use the following connect call db.connect("pros2",1958,"vtx3","X","");
to get a connection to our VMS machine pros2. How do I connect with
username and password? What does the connect_string look like?
You must specify authorization checking on the VORTEXserver by appending a "-a"
to the command line:
vtxnetd -p1958 -a
where uid and pwd are your VMS userid and password.
Where is net.ini used?
We have a fatal problem with Vortex on Windows.
It works for a few hours(?) then
without changing anything it does not respond to any connection requests,
however VTXPING still anwers.
You are using the eval copy of vtxnet2.exe. It stops taking requests after
4 hours. It still repeonds to vtxping/kill, but will not start any new
processes. If you vtxkill it and restart it you will be fine.
We are using Windows domains and want to use VORTEXserver's authentication
Do we need to set anything?
Set the following environment variable in the shell where you start vtxnet2.
What is the service name in the connect string?
The service name tells VORTEXserver what to start on the system. It can be
the complete path to the driver, /usr/local/bin/VTX0 for Oracle, or if
VORTEXserver's PATH variable includes the path to the
executables, you can simply give the name.
I get the following error when I attempt to access ADABAS C via GENESIS:
ERROR : dbChannel exception : DLLLOAD : Could not load DLL,
What is the problem?
vtx4.dll is the GENESIS SQL driver. In turn it will load gds6.dll because it
parses the connect string and finds "adabasc". One of these is failing to
load. We use a freeware program called SCANBIN to resolve DLL loading problems.
We are using VORTEXperl to access SQL Server.
Now, with some queries (resultsets are in the range 500000-1000000 rows),
we get an error from VORTEXserver, as follows :
SQL Server connection timed out.
And then everything stops, i.e., VORTEXserver is no longer sending any data
to the client.
You can set the SQL Server timeout value by using the dbChannel::command()
function. For example, to set the timeout to 90 seconds,
The default SQL Server and Sybase driver timeouts are 60 seconds.
I downloaded the VORTEXserver evaluation kit for DB2 on AIX and built the
VTX7 proxy. Every time I attempt to connect, I get an error about
the TDB7 package is not found. What do I do?
There is a bind file that must be bound to the DB2 DBMS, tdb7.bnd. Use the
DB2 sqlbind command to bind it to the DB2 DBMS you are accessing. Be certain
to specify -f ISO for the datetime.
I'm getting an error when I attempt to link the VORTEXserver proxy to Informix.
Edit the makefile makesrv.inf7 and change DBLIBSSUN571 to DBLIBS. Rerun the
make and it should link. Every platform and Informix version combination has
a different library link list.
I am using VORTEXperl with SQLserver and I want to cancel an oustanding
query. I call cancel() but the original call just hangs.
How are you "deciding" to call cancel()? If you are catching an interrupt,
ctrl-c for example, you must return control to the main program at a point
the original execute(), commit(), etc... If you just return from the interrupt,
control will return to exactly where you were.
What is the difference between VORTEXchannel and VORTEXserver?
VORTEXchannel is the name of the virtual database protocol on which
VORTEXserver functions. There is no specific executable that
represents the VORTEXchannel piece of the architecture.
On what platforms does VORTEXserver run?
VORTEXserver runs on AIX, HP/UX, Linux, Linux System z, MVS, MacOS,
Tru64 Unix, OpenVMS, SCO, Solaris, Unixware, and Windows.
Does the price per user (or per server) mean that all programs
can access all the databases supported on that machine, for example
AIX, or must I pay an aditional price for each ?
For that single price all programs can connect to all the databases
that we support: Oracle, Informix, DB2, Adabas C, Adabas D,
Ingres, etc., as well as some flat-file legacy databases, such
as ISAM and ADABAS C.
Why does the evaluation version stop receiving requests after four hours?
The evaluation version of "vtxnetd" takes requests for up to 4 hours
at a time. After 4 hours it still responds to vtxping and vtxkill
requests, but you must kill and restart the server to continue testing.
What DLLs do I use for Informix ESQL 7.2 on Windows?
You need to use the VTX5_72.DLL since you are running ESQL 7.2.
Rename this DLL to VTX5.DLL.
Are the vtxhost.* executables available for Windows? Do they
run as an NT service?
vtxnetd can run as a service and the DBMS drivers can be either
DLLs or EXEs.
For the three-tier model, is it possible to configure vtxnetd to
access a database located on a different host? (we mean, outside of
relying on net capabilities of the RDBMS).
On the server you can direct vtxnetd to start a vtxhost.net
service that in turn talks to any other machine on the network. Our
network has been benchmarked by HP in Germany to be "significantly
faster" that Oracle's SQL*NET.
Why doesn't the Alpha version of your eval work?
Be sure that you download the file specifying "binary" in the FTP
and that you transfer it to the Alpha machine as binary, too.
It should be approximately 772608 bytes after download.
Can I use SQL*NET without having VTX0 (avoiding the
linking with OCI libs?)
You could but it will run much slower. A customer of ours overseas
ran a series of benchmarks comparing SQL*NET and VORTEXnet and found
that SQL*NET generated 3 times the packets.
What is the difference between vtxnetd.exe and vtxnet2.exe on Windows?
vtxnetd.exe is a threaded server daemon for Windows.
vtxnet2.exe is a spawning server daemon for Windows. It supports
all databases on Windows.
Is there an .h file we're supposed to include with conversion
routine prototypes for things like TCVD2S?
We could copy/cat the .x files together into a .h file. Are these
files platform specific? In our hierarchy they seem to live under
We use .x files (eXternal declarations) for function headers.
They are not platform specific, you can use them on any platform.
How can I determine the VORTEXJava or VORTEXjdbc version running on Unix?
Copy the class libraries to a temporary directory on your unix
system and type
strings *.class | fgrep "@(T)"
How do I run vortex.log on a shared server?
I tried using putenv("VORTEX_API_LOGFILE=vortex.<pid>") in our server
before the VTXINIT()/VTXCONN(), but I don't think putenv() is working
as expected for me under Windows.
Your code looks fine, similar to what we do here.
In any case, you can still use the same file since we append the
TDB address to the end of the SEND and RECEIVE blocks:
----------------------------- Send @F60540 <=====
OPT: 0 FBS: 0 CUR: 0 NTE: 0 AX1: 256 SID: 0
PDL: 0 PDP: "0x0" 0
PBL: 0 PBP: "0x0" 0
SBL: 22 SBP: "0xB1E519" 11658521
***** Returning from DB *****
----------------------------- Receive @F60540 <=====
RET: 0 ARS: 11 DEC: 0 NRA: 0
NCO: 0 DDP: "0x0" 0
TBL: 0 TBP: "0x0" 0
MSL: 0 MBP:
----------------------------- Misc @F60540 <=====
DID: 11 DBI: 0 DBC: 0 MBL: 300 MNC: 256 NAC: 64 NLC: 513 CIO: 0
Even if you have several processes writing to the same file, they should
How can I fetch data from a database from a standard internet browser?
We have an HTTP server on a DEC osf/1 computer and an Ingres 6.4 DBMS on
another DEC osf/1 machine. The broswers would be a standard browser
running on a UNIX OS or PC under win95.
We support Ingres 6.4 but do not have a 64-bit version (AXP) available.
Your browser applet would call VORTEXchannel using either Perl
It seems to be that you are not using CORBA-like protocols, but some
propietary one instead. Performance reasons?
Yes. We support a bulk (multiple records) interface on both input and
output. Also the VORTEXserver is a mature product that has been around
a lot longer than Java or CORBA and is installed world-wide as part of
our other product lines. This allows our customers to use Java without
having to do anything on the server.
Does vtxnetd manage connections, or does it simply broker the
connections and pass of the connection to the java app or applet. If not
how does it maintain persistent connections?
vtxnetd starts the requested server process. The server process then maintains
connection via a socket until you do a release.
Do you have an ADABAS D local access example?
The following is for local access to ADABAS D only.
./sample1.sdb ADABASD:uid/pw/MYDB C
uid ADABAS D user-id (cannot be CONTROL user)
pw ADABAS D password
MYDB ADABAS D sample datababase
Also, make sure the environment variable DBNAME or
DBSERVER is not set. This will override the connect
if it is set on the Server.
If you want to test out the VORTEXserver, then you need to build
a remote version with the makefile makepc.net
For example make -f makepc.net creates sample1.net, which can
talk directly to the VORTEXserver.
./sample1.net NET:uid/pw/MYDB@1958:hostname!/usr/vtx/bin/VTX10 C
Why do I get an error when I use the '%' in a SQL select?
I want to do "select count(*) from foo where bar like '%baz%'".
I'm trying to parameterize the SQL statement using
dbStatement::setParam(). I have no trouble when the like expression
is a literal string, as in the example I gave above, or when I
sprintf() it into the SQL statement.
That is, I have SQL statement that looks like "select foo from bar where
baz like %:1%".
VORTEX does not parse the SQL statements. It is a pure passthrough.
Put the "%" or "_" in the bind variable value itself.
Your statement must be
"select foo from bar
where baz like :1"
I get a DLLLOAD error when I try to access VORTEXnet or VORTEXchannel on
You may be missing the MSVCRT.DLL file or it may not be in your path.
I installed Vortex Service on Windows and can see it (in DOS) but I can't
start it. ("Error 0010 - the environment is incorrect)
Telnet Host 1958 works (when I start vtxnet2 -p1958 from
command prompt), but vtxping Host does not (service/protocol
'vtxnet/tcp' not found). I've added the entry into ...\etc\services.
Make sure that each line in the file has EOL character.
Do you know what the limit in size is for an SQL statement in OCI
Probably the same, about 32k.
I have a question concerning Stored Procedures and VTXEXIO:
With SYBASE, Stored Procedures may return result sets. Does Vortex offer
a possibility to process these result sets?
If you expect result sets, use VTXOPEN(). Prefix the stored procedure name
with "select_" and check the SQLCA.SQLERRD as described in the VORTEXcli
Reference manual available on our Web site
When using VTXCMD 2 waitopt 4, does this override any timeout specified using
VTXCMD 0 (resource timeout)?
If TDB_CMD_TIMEOUT is set to a non-zero value, oopt(ocp,2,4) is applied to all
cursors at OPEN, EXEC, and EXIO time. If is is zero or you wish to change
this on a cursor-by-cursor basis, use TDB_CMD_OOPT on a particular cursor.
Does using VTXCMD 3 (Sybase data base name) allow a default to be
specified to avoid putting the database name in the connect string.
What does VTXCMD 1, use single pid within a transaction, actually do?
It tells the Sybase dblib driver to use only one dbprocess during the
transaction. This avoids deadlocking yourself.
Updated 6 Sep 2011.