[See all pages on this site.] [Find out more about Trifox Inc.] [Find out how to contact Trifox personnel.] [Complete product documentation, FAQs, online references.] [Pricing is simple.] [Download an evaluation copy of any Trifox product.] [Descriptions of all products, including VORTEX, DesignVision, and Genesis.]

[LOGO]
[Navigation Map]

 

[Search Site]

| 

VORTEXserver FAQ

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 in batches.

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:
select_storedprocedurename
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 implemented.
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 the DBMS.

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
Then use
db.connect("pros2(uid/pwd)",1958,"vtx3","X","");
where uid and pwd are your VMS userid and password.

Where is net.ini used?
Client side.

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 option. Do we need to set anything?
Set the following environment variable in the shell where you start vtxnet2.
   set VORTEX_AUTH_DOMAIN=domainname 

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,
  $db->command($cursor,TDB_CMD_TIMEOUT(),"90");
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 beyond 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 ./win32i/obj/.
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  <=====
     FNC: CONNECT
     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
     OFFERT/NATURAL/nattest
 
     ***** 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 stay separated.

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 or Java.

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 a persistent 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
     where
        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 Windows.
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 vs. Pro*C.
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[0] as described in the VORTEXcli Reference manual available on our Web site (Documentation->Print Documentation).

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.
Yes.

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.


© 1985-2013 Updated 6 Sep 2011.