Common Error Questions

 

Why can’t Warehouse access a table that I know exists?

Error attempting to describe table ‘PARTS_MASTER’. (WHERR 18009)

If you can see the table with vendor utilities, this compile-time error suggests that the user name used in the Warehouse script to OPEN the database has insufficient privileges.

 

Why do I get the following loader error when running Warehouse against Oracle 8i on Solaris?

ld.so.1: wh8: fatal: libclntsh.so.1.0: open failed: No such file or directory
The error message is generated when the Solaris runtime linker ld.so can’t resolve a reference made in the Warehouse executable to a shared library, in this case to the Oracle client shared library  libclntsh.so.1. This is a shell environment problem that must be corrected outside of Warehouse. The linker searches each directory listed in LD_LIBRARY_PATH for the Oracle libclntsh.so.1.0 and when it can’t find it gives up. Among the likely reasons for this error:

1. libclntsh.so.1.0 is not found on the LD_LIBRARY_PATH because the library was deleted by accident.

2. libclntsh.so.1.0 exists but is not found because there is no reference to its directory (usually $ORACLE_HOME/lib) in LD_LIBRARY_PATH.

3. a more recent version of libclntsh.so exists (for example libclntsh.so.8.0) and there is no symbolic link named libclntsh.so.1.0 pointing to it

4. some shells have been known to run out of environment space and remain silent about their condition.

To set the path for Bourne shell:
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
$ export LD_LIBRARY_PATH

To set the path for the C shell:
% setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:$ORACLE_HOME/lib
% rehash

The Solaris ldd command lists the dynamic dependencies of executable files.

Tip: if the Warehouse client invocation is wrapped in a customized shell script that manipulates environment settings incorrectly, then a temporary LD_LIBRARY_PATH could disappear without leaving tangible evidence of the condition.

 

What library references are needed to run Warehouse against Oracle 9i on Solaris?

You will then need to establish the following mappings:

1. libclntsh.so.8.0 to libclntsh.so.9.0
2. libskgxp8.so to libskgxp9.so (if using SQL*NET)

Tip: make sure that the symbolic link is located in a directory defined in the user’s LD_LIBRARY_PATH.

 

Why do I get a WHERR when I try to COPY data to a text type output file? 

1> create outfile text myout
2> define err_
text: x6 value “foobar”
3> copy err_text to outfile
Source of COPY must be a record. (WHERR 8128)

The compilation error is due to the fact that the COPY statement expects err_text to be a record. An option is to DEFINE a RECORD that contains the value(s) of interest and then to COPY this record to the output file. An example:

create outfile text myout
define myout_rec: record
err_text: x6
end
define err_text: x6 value “foobar”
setvar myout_rec.err_text = err_text
copy myout_rec to outfile

 

Why won’t a backslash print correctly in my script?

1> define slash: x1 value ‘\’
2> print ‘slash:’, slash
slash:

The backslash is used to place certain special characters in a string. Combined with the special character that follows it, the backslash represents a single character. For example, new line is represented as \n. In order to represent the backslash character itself, use a double backslash as in the following example:

1> define slash: x1 value ‘\\’
2> print ‘slash:’, slash

slash:\

 

Why doesn’t a script created with a Windows editor execute correctly on the HP3000?

The problem you have encountered is the traditional cross-platform issue of text file line termination. There is no common standard for the end-of-line indicator: line termination is represented differently on different platforms. Many modern file transfer programs will convert text file line terminators automatically, but some will not.

Warehouse uses the standard library fgets function to read a script, and that function is adapted to a specific platform. On MPE/iX, fgets uses the record size. On Unix, fgets looks for a Line Feed; on Windows, it looks for Carriage Return/Line Feed ; and on the Mac OS, Carriage Return.

In this case, when you moved the text file from your PC to the HP3000, the end of line indicator was not converted from a Carriage Return/Line Feed to the format recognized by MPE/iX.

 

Why do I get an error when I try to open up an MPE /iX Message file with mode=v? It returns the following message: Unable to open file ‘msg.pub.prd’ using mode ‘r+b’:

If you are using ASCII capture files, the mode to use is mode=v. If instead you are using an actual MPE/iX Message file, the mode must be mode=r ndr. You were trying to open an actual Message file with a mode designated for an ASCII capture file, hence the error message.

 

Why can’t I remotely access SQL Server on an NT4.0 machine? 

>open db remote nt401 user=qa password=homer &
> odbc usertest user=qa password=homer
>Finding 102.111.40.133… Trying 102.111.40.133
>Connected to: Warehouse 2.07.2240-W on nt401
Warehouse server error
:
Windows login failure.
A required privilege is not held by the client.
(WINERR 1314) (WHERR 20001)


This error has been generated by Windows NT 4 security. User qa must be given the “Log on as service” right before a login can be accepted by the Windows platform. A user can be granted this right through the NT4.0 or Windows 2000 Administrative Tools. See the Warehouse Reference Manual for further details.

 

Why can’t I log in remotely to an NT4.0 machine?

Warehouse server error:
Windows login failure.
Logon failure: the user has not been granted the requested logon type at … (WHERR 20001)

See the answer to the earlier question “Why can’t I remotely access SQL Server on an NT4.0 machine?”.

If you look at the WHLOG on the server machine, you will find an indication of the problem: user qa is the culprit.

Jun-14 11:58:36 Login failed –
as user qa from user MGR.TAURUS on sol15 (230.121.054.47
)
Windows login failure.
Logon failure: the user has not been granted the requested logon type at this computer.
(WINERR… (WHERR 8243)

 

Why do I get a “table does not exist” error after I’ve just created it?

1> open db remote sol15 user=qa password=homer &
2>     oracle scott/tiger home=/t01/app/oracle/product/8.0.5 sid=o805
Finding sol15… Trying 230.121.054.47
Connected to: Warehouse 2.07.2320-S on sol15
3> direct db, ‘ create table
 foo(id char(6), val integer)’
4> read x = db.foo
[Using serial read]
5> endread
6> direct db, ‘drop table foo’

Error reading next record. (WHERR 18018)
ORACLE error -942: ORA-00942: table or view does not exist
Error in statement 4 (WHERR 8007)

The DIRECT command is invoked immediately at statement compile time. So by the time the script began executing, the table foo had already been both created (line 3) and dropped (line 6). In order to drop the table at the conclusion of a run, use the CALL DIRECT command that is executed at run time:

5> endread
6> call direct (db, ‘drop table foo’)

 

Why can’t I demo validate my Warehouse instance on MPE/iX? I just received the code, my system date is correct, but I’m seeing a message telling me that the validation code I entered has expired.

The MPE/iX CI SHOWTIME command displays the system time. On the other hand, the MPE/iX CI SHOWCLOCK command displays the system time zone setting as well.

In this case, the time zone setting reads:

TIME ZONE: 137122 HOURS 15 MINUTES WESTERN HEMISPHERE.

Warehouse is time zone aware. Once the erroneous time zone setting has been corrected with the SETCLOCK command, the instance will validate.

 

Why do I get a networking error when I OPEN a remote database?

Warehouse relies on system and network services in order to operate. When experiencing a networking error, the following diagnostic steps should be taken:

Determine whether basic network connectivity exists between systems: ping the remote system by IP number.
Demonstrate DNS resolution:  ping the remote system by fully-qualified name.
Ensure that there is no firewall on the remote site denying access to port 1610.
Ensure that no other application has port 1610 already open.
Check that the Warehouse server is running on the remote system.
Ensure that the Warehouse software on the remote system is not running with a lapsed demo code.
Demonstrate simple application loop-back: run the Warehouse client on the database system with the -c option.
Demonstrate application loop-back:  run the Warehouse client on the database system and OPEN the database
Demonstrate simple application connectivity: run the Warehouse client remotely with the -c option.
Determine whether the AUTHFILE settings on the remote server system are correct, particularly if the IP addresses or domain/subdomain identities have been changed.

If this final step fails, there is likely a system security or permissions issue.

 

Why do I see a WHERR 20001 when connecting remotely?

This WHERR indicates that you are having problems logging on to the remote system.

If the user or password in your OPEN connect string is not known to the remote system or is invalid, then you will see one of the following two messages if that remote system is Unix:
Incorrect password. (WHERR 20001)
Unknown user name ‘homer’. (WHERR 20001)

If the remote system is Windows, the error message will be:
Logon failure: unknown user name or bad password.
(WINERR 1326) (WHERR 20001)

If the remote system is MPE/iX, the error message will be one of:
MPE/iX Error: Invalid account password specified. (WHERR 20001)
MPE/iX Error: Non-existent account. (WHERR 20001)
MPE/iX Error: Non-existent user. (WHERR 20001)

On the other hand, if the AUTHFILE in use by the remote Warehouse server doesn’t permit your client system to connect to that system under the user names that you have provided, you will see this message:
Login not allowed by Warehouse. (WHERR 20001)

The WHLOG file on the remote system will contain an entry describing the failed connection attempt.

 

Why do I get a LDERR 505 when starting WHSERV on the HP3000?

SGAII-MF:RUN WHSERV.WHII.TAURUS
Program requires more capabilities than allowed for the group, the user
of a temporary file, or the hierarchical directory user. (LDRERR 505)
Native mode loader message 505
Unable to load program to be run. (CIERR 625)

For a program to run the group needs all of the capabilities required by the program. The Warehouse server program requires the following capabilities: BA, IA, PM, MR, PH. To fix this log on as MANAGER.SYS and enter the following two commands:

ALTACCT TAURUS;CAP=+IA,+BA,+PM,+MR,+PH
ALTGROUP WHII.TAURUS;CAP=+IA,+BA,+PM,+MR,+PH

 

Why do I get a WHERR 18002 when opening an Oracle data base?

1> open db remote alpha04 user=qa pass=homer &
2> oracle home=/c/u01/app/oracle/product/8.1.7 sid=ora817
Finding alpha04… Trying 102.111.40.129
Connected to: Warehouse 2.07.2800-
on alpha04
Unable to open ORACLE database using ‘home=/c/u01/app/oracle/product/8.1.7’. (WHERR 18002)
ORACLE error -12545: Error while trying to retrieve text for error ORA-12545

You need to specify a user/password to connect to the instance, for example:
oracle scott/tiger home=/c/u01/app/oracle/product/8.1.7 sid=ora817

Since the user/password is missing, the remote WHSERV cannot connect on your behalf to the Oracle instance.

 

Why do I get a WHERR 21037 when reading a SQL Server database defined with a binary collation?

1> open db odbc w12a_ss7_ukrbin
[Microsoft][ODBC SQL Server Driver][SQL Server]Changed database context to ‘ukrbin’. (ODBC 01000)
[Microsoft][ODBC SQL Server Driver][SQL Server]Changed language setting to us_english. (ODBC 01000)
2> read x = db.Table1
Error getting number of Result Columns. (WHERR 21037)
ODBC error 208: [Microsoft
][ODBC SQL Server Driver][SQL Server]Invalid object name ‘TABLE1’. (ODBC S0002)
[Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (ODBC 37000)

When you turn on binary collation (for example, Latin1_General_BIN), the database becomes case-sensitive. So if your table/field names are not all uppercase, you must enclose them in curly braces. The following script works fine:

open db odbc w12a_ss7
read r=db.{Table1} for {ccval} = ‘bbbb’
print {akey}, {bcval}, {ccval}
endread

 

Why do I get a WHERR 6006 (Illegal sign in packed decimal number)?

The Warehouse runtime error is telling you that a TurboIMAGE P-type source field does not contain a legal sign. The last nibble of a P-type field should be 0xF (unsigned), 0xD (negative), or 0xC (positive). When Warehouse sees none of these values it throws a WHERR 6006. It sounds like you have bad data in that field.

Tip: you can wrap the assignment in a try/recover block in order to retain control should Warehouse throw an error.

 

Why do I get a Win32 error 183 when I re-start my Windows Warehouse service?
183 Cannot create a file when that file already exists. 

When you stopped the Warehouse Service, there was at least one Warehouse server actively handling a connection from a remote Warehouse client. In order to determine whether a Warehouse server is still running, open the Windows Task Manager and look for processes with an Image Name of WhServ.exe.

In order to re-start the Warehouse Service, any active Warehouse server process will first have to be stopped.

Tip: before stopping a Warehouse process first check with those individuals or groups who are running remote Warehouse clients.

 

Why do I get an error -623 when I install Warehouse on Windows?

The full pop-up error reads: “An error occurred during the move data process: -623”.

This error indicates that the installer was not able to overlay an existing file because that file was in use. You were probably trying to install a release of Warehouse in a directory while one or more existing Warehouse executables were still running from that directory.

The existing Warehouse instance should be quiesced before the installation overlays its files. Stop the Warehouse service and any local Warehouse clients, and wait until any and all Warehouse servers have terminated before re-installing.

 

Why do I get an MPE/iX FSERR 151 when reading from a Message File?

Error reading from file ‘ltmx.data.netbase’. (WHERR 16015)
MPEFILE error 151: CURRENT RECORD WAS LAST RECORD WRITTEN BEFORE SYSTEM CRASHED (FSERR 151)

This error is returned after a hard crash occurs on the MPE/iX system where a Bridge Message File resides. Warehouse cannot work around this error condition. You will need to contact Quest Software for assistance in evaluating and correcting the problem. For more information, please visit http://www.quest.com/.

Although the following approach is not guaranteed to always resolve the problem, it is one that Quest Software suggests as way of addressing off-hour emergencies associated with this condition. In the following example, the Message File is named LTMX.DATA.NETBASE.

Stop the Export process to release the Bridge Message File.

Rename the Message File.
:RENAME LTMX.DATA.NETBASE,LTMX1.DATA.NETBASE

Set a file equation to preserve the Message File contents.
:FILE X=LTMX1.DATA.NETBASE;COPY 

FCOPY the records from the renamed Message File back to the original Message File. This will build the Message File with the desired attributes. Do not forget to use the asterisk in the FROM portion of the FCOPY command.
:FCOPY FROM=*X;TO=LTMX.DATA.NETBASE;NEW 

Start the Export process and verify that records are being placed into the Bridge Message File.

Start the Taurus script(s).

 

Why do I get a logon_cmd error when OPENing an MPE/iX database?

MPE/iX Error: Syntax error (logon_cmd). (WHERR 20001)

This error is usually generated when the MPE/iX user/pass is malformed.

The OPEN syntax you coded:
open db remote hp3k03 user=mgr.qa\homer image summa pass=HOMER mode=5
used a wrongly-directed slash in the MPE/iX user/password declaration.

The correct syntax is:
open db remote hp3k03 user=mgr.qa/homer image summa pass=HOMER mode=5

 

Why do I get an ORA-12545 when OPENing an ORACLE database?

A common reason for this error is that the Oracle home is invalid or non-existent.

In this first example, ORACLE_HOME (and ORACLE_SID) is set correctly, and the OPEN succeeds:

osf03> echo $ORACLE_HOME
/c/u01/app/oracle/product/8.1.7

1> open db oracle scott/tiger
2>

In this next example, an erroneous Oracle home is specified in the Warehouse OPEN statement, over-riding the environmental parameter ORACLE_HOME. Since the value of home= has been truncated and points to a non-existent directory, the OPEN fails.

1> open db oracle scott/tiger sid=ora817 home=/c/u01/app/oracle/product/8.1
Unable to open ORACLE database using ‘scott/tiger’. (WHERR 18002)
ORACLE error -12545: Error while trying to retrieve text for error ORA-12545
2>

Now let’s set ORACLE_HOME to this non-existent directory.

osf03> setenv ORACLE_HOME /c/u01/app/oracle/product/8.1; rehash
osf03> echo $ORACLE_HOME
/c/u01/app/oracle/product/8.1

The next OPEN fails.

1> open db oracle scott/tiger
Unable to open ORACLE database using ‘scott/tiger’. (WHERR 18002)
ORACLE error -12545: Error while trying to retrieve text for error ORA-12545
2>

Finally, a valid home is specified in the Warehouse OPEN statement, over-riding the invalid contents of ORACLE_HOME, and the OPEN succeeds.

1> open db oracle scott/tiger sid=ora817 home=/c/u01/app/oracle/product/8.1.7
2>

 

Why do I get a TurboIMAGE error -1858 at the conclusion of a script run?

Unexpected error on DBUNLOCK to database ‘thunder’:
“Unable to
 getshadowafterimage(Ds=,S1=,S2=).” (WHERR 10066)
IMAGE error -1858: Unable to get shadow after image (Ds=
,S1=,S2=). 

This error is telling us that TPS needs to be enabled. The condition is usually encountered when Quest Software’s NETBASE product is used together with Warehouse.

 

What is the dynamic locking error I get when OPENing a file on MPE/iX?

Unable to open file ‘FCOMIN/LOCK.datax12.qa’ using mode ‘r’:
“Dynamic LOCKING was specified on a previous OPEN of this file, and dynamic
LOCKING was not spec…” (WHERR 16021)

You need a file equation in the job stream before the execution of the Warehouse script. This is a requirement if an OPEN wants to access a file that has been previously defined as multi-job/user enabled even if your particular OPEN is read-only.

You will need a file equation of the form:;LOCK , and you should check your IMAGE/iX documentation for details associated with this file equation.

 

Why can’t my MPE/iX system ping itself when other systems can ping it?

From HP 3000 Manuals: “The HP Sockets/iX requires the use of the loopback feature of HP Network Services to operate. This feature is started by issuing the:NETCONTROLNET=LOOP;START command prior to issuing the:NSCONTROL START command.

The command can be inserted into your SYSSTART.PUB.SYS file in order for it to be automatically invoked at system start-up.

 

What MPE/iX JCWs are set on a failed OPEN?

The following indicators are set: CIERROR, JCW, and CJCW. This one-command script fails on the OPEN statement and sets these indicators.

PUB.QA [10]: RUN WH.WHII.TAURUS; INFO=’BADOPEN’
Warehouse 3.00.3100-M (c) Taurus Software, Inc. 2004
Installed for: Taurus Software, Inc.
1> open db remote nt08.taurus.com  &
2>   user=qa pass=homer &
3>   odbc nosuchdsn
Finding nt08.taurus.com… Trying 67.37.146.18
Connected to: Warehouse 3.00.3100-W on nt08
Unable to open ODBC data source. (WHERR 21026)
ODBC error -1: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (ODBC IM002)

Error(s) in script.  No script processing performed. (WHERR 8006)

run wh.whii.inhouse;info=’BADOPEN’
Program terminated in an error state. (CIERR 976)
PUB.QA [11]:SHOWJCW
CIERROR = 976
JCW = FATAL0
CJCW = 1
PUB.QA [12]:

This allows the following logic to be appended to a job to test for success or failure:

!if cierror <> 0 or cjcw <> 0
!   tellop Job EC001 Failed.
!   tell mgr.qa;***********EC001 FAILED***************
!else
!   tell mgr.qa;*************EC001 complete**************
!endif
!
!eoj

 

How can I fix a Warehouse client’s “Out of new memory” condition on MPE?

Let’s assume that you are building a very large script and suddenly your testing fails with the following:

Out of new memory (New 95300).
Number of mallocs=4133465
—- mallinfo() —-
arena = 81692656
ordblks = 634
smblks = 1000
hblkhd = 280
usmblks = 9816
fsmblks = 17384
uordblks = 81496824
fordblks = 168352
keepcost = 3480
**** Data memory protection trap (TRAPS 68).
ABORT: WH.WHII.TAURUS
NM PROG 89.000be288 out_of_memory+$40
Program terminated in an error state. (CIERR 976)
REMAINDER OF JOB FLUSHED.

“Out of memory” means the client program ran out of memory. This error is correctable by running Warehouse with a bigger NMHEAP:

RUN WH.WHII.TAURUS;NMHEAP=200000000

The system default NMHEAP value is set in SYSGEN. MISC -> SHOW shows the current value and MISC -> STACK sets the current value.

The values on our development machine (which have never been changed) are:

STACK command MAX MIN CURRENT
—————– ———- ———- ———-
DEFAULT NM STACK 749998080  262144 393216
MAXIMUM NM STACK 749998080  262144 749998080
DEFAULT CM STACK 4096       256    1200
MAXIMUM CM STACK 31232      256    31232
DEFAULT HEAP     1047527424 524288 81920000
MAXIMUM NM HEAP  1047527424 524288 1047527424

 

What does “Error dynamically loading getspwnam( )” mean?

Warehouse server error:

Error dynamically loading getspwnam() (WHERR 20001)

 

I am running on an HP-UX 11 64-bit platform configured as a Trusted System.

This condition is caused by a PA_RISC library version incompatibility. Please see What does the Warehouse server require on an HP-UX Trusted System?

 

What does Invalid client program. (WHERR 20001) mean?

This message is telling us that a Warehouse Client of version 2.07 or earlier is failing to connect to a Warehouse Server that is version 2.08 or later.

Due to a significant enhancement in the Warehouse security layer between 2.07 and 2.08, a 2.07 or earlier Warehouse Client cannot connect to a later release of the Warehouse server. You will need to upgrade the 2.07 software. This is a good idea in principle: the first 2.08 release, 2.08.0100, came out in August 2003.

 

Why do I get the message Warehouse validation error number 20?

This error is emitted by the Warehouse Client or Server if unable to open the message files in the Warehouse directory. The likely reason for this condition is either that the Warehouse directory has been damaged or moved, or else that the Client or Server has been executed from a soft link – for example, a Unix symbolic link.

To correct the problem caused by the soft link, please direct Warehouse to its directory by setting the WHHOME variable in the environment of the user running the process. WHHOME should be set to the fully qualified Warehouse directory. Both Warehouse Client and Server check for the existence of thisvariable: if it is present, they will use the value to locate the Warehouse home directory. For example, using the Bourne shell:

WHHOME=/usr/local/taurus/whii/@

export WHHOME

 

What does Decimal number overflow (WHWARN 5267) mean?

Warehouse is informing you that the receiving field is not large enough to hold the numeric result of the right-side expression, variable, or literal. In such a case Warehouse will issue a warning, set the receiving field to 0, and continue processing. If the result is a valid one, then consider either expanding the receiving field or changing the field’s data type.

There are a number of other numeric overflow-related WHWARN messages that are generated for the same reason, varying only with the data type of the receiving field. These include :

Numeric overflow (WHWARN 6010)

Packed decimal field overflow (WHWARN 6004)

Zoned decimal field overflow (WHWARN 6007)

Oracle number out of range. (WHWARN 6019)