IBM DB2 Universal Database
Version 5.2

Release Notes

© Copyright International Business Machines Corporation 1998. All rights reserved.


Table of Contents

Welcome to DB2 Universal Database Version 5.2!

1.0 Special Notes

  • 1.1 FixPak 6 Service Information and Documentation
  • 1.2 Web Control Center Installation
  • 2.0 SCOhelp Information

  • 2.1 How to Access SCOhelp
  • 2.2 Working With National Languages and SCOhelp
  • 2.2.1 Special Considerations When Using the Spanish Language Extensions
  • 2.2.2 Changing Default SCOhelp Language on the Server
  • 2.2.3 Setting the Language SCOhelp Returns for a Specific Client
  • 2.2.4 Using the Search
  • 2.3 Web Control Center Help and SCOhelp
  • 2.4 Support Level Supplement (SLS) PTF7004A, the UnixWare 7 Language Extension Supplement
  • 2.4.1 Modifications to lang.conf for Simplified Chinese and Brazilian Portuguese
  • 2.5 SCOhelp Search Index Files
  • 3.0 Changes to the DB2 Documentation

  • 3.1 Administration Guide
  • 3.1.1 Implementing Your Design (Creating a Database/Creating a Summary Table/Isolation Levels and Query Optimization Using Summary Tables or Replicated Tables)
  • 3.1.2 Implementing Your Design (Optimizing Performance When Data is Placed on RAID Devices)
  • 3.1.3 Auditing DB2 Activities
  • 3.1.4 Utilities for Moving Data (LOAD, IMPORT, and EXPORT File Formats/PC/IXF File Formats/Code Page Considerations)
  • 3.1.5 Utilities for Moving Data (Load Restriction on Windows NT and OS/2 SMP-enabled Machines)
  • 3.1.6 Recovering a Database
  • 3.1.6.1 Backing Up and Restoring Databases on Different Operating Systems
  • 3.1.6.2 Considerations for Using ADSTAR Distributed Storage Manager (ADSM)
  • 3.1.7 Recovering a Database (Planning to Use the ROLLFORWARD Command)
  • 3.1.8 Using DB2 with an XA-Compliant Transaction Manager (Setting Up a Database Manager as a Resource Manager/XA Function Supported/Using the DB2 Universal Database XA Switch)
  • 3.1.9 Operational Performance (Managing Multiple Database Buffer Pools)
  • 3.1.10 Configuring DB2 (Tuning Configuration Parameters/Optimizing Hash Join Performance)
  • 3.1.11 ASLHEAPSZ and Failed Queries Against Large Tables
  • 3.1.12 INTRA_PARALLEL Setting on an SMP Machine (Windows NT)
  • 3.1.13 DB2 Registry Values and Environment Variables
  • 3.1.14 Additional Rah (Run All Hosts) Information (Solaris and AIX only)
  • 3.2 API Reference
  • 3.2.1 sqlecrea - Create Database
  • 3.2.2 sqlubkp - Backup Database
  • 3.2.3 sqlugtpi - Get Table Partitioning Information
  • 3.2.4 sqluhget - Retrieve DDL Information From the History File (New API)
  • 3.2.5 sqluhgne - Get Next Recovery History File Entry
  • 3.2.6 sqluhops - Open Recovery History File Scan
  • 3.2.7 sqluload - Load
  • 3.2.8 SQLE-CLIENT-INFO (Connection Settings)
  • 3.2.9 SQLFUPD
  • 3.2.10 SQLUHINFO (SQLUHADM)
  • 3.2.11 sqluvput - Writing Data to Device
  • 3.3 Building Applications for Windows and OS/2 Environments
  • 3.3.1 Building Windows NT and Windows 95 Embedded SQL Applications (IBM VisualAge for COBOL)
  • 3.3.2 Building Java Applications and Applets (Setting the Environment for Using Microsoft SDK for Java on the Windows Operating System)
  • 3.4 Building Applications for UNIX** Environments
  • 3.4.1 Building SCO UnixWare 7 Embedded SQL Applications
  • 3.4.2 Building Java Applications and Applets (Setting the Environment: HP-UX, SCO UnixWare 7)
  • 3.5 CLI Guide and Reference
  • 3.5.1 SQLPREPARE()
  • 3.5.2 SQLDISCONNECT()
  • 3.5.3 Using Stored Procedures - Programming Stored Procedures To Return Result Sets
  • 3.5.4 Stored Procedure Catalog Tables
  • 3.6 Command Reference
  • 3.6.1 db2cmd - Open DB2 Command Window
  • 3.6.2 db2eva - Event Analyzer
  • 3.6.3 db2evmon - Event Monitor Productivity Tool
  • 3.6.4 db2look - DB2 Statistics Extraction Tool
  • 3.6.5 db2set - DB2 Profile Registry Command
  • 3.6.6 db2upd52 - Update Catalog to Support Version 5.2
  • 3.6.7 BACKUP DATABASE
  • 3.6.8 EXPORT
  • 3.6.9 GET DATABASE MANAGER CONFIGURATION
  • 3.6.10 IMPORT
  • 3.6.11 LIST DATABASE DIRECTORY
  • 3.6.12 LOAD
  • 3.6.13 RECONCILE
  • 3.6.14 RESTORE DATABASE
  • 3.7 Embedded SQL Programming Guide
  • 3.7.1 Writing User-Defined Functions (Interface between DB2 and a UDF/The Arguments Passed from DB2 to a UDF)
  • 3.7.2 Programming in C and C++ (Programming Considerations/Host Variables)
  • 3.7.2.1 Declaring Host Variables
  • 3.7.2.2 Handling Graphic Host Variables (Windows Operating System)
  • 3.7.3 Programming in Java (Creating Java UDFs and Stored Procedures/Classes for Java Stored Procedures and UDFs)
  • 3.7.4 A JDK Problem That Affects JDBC Programs Running under a DBCS Code Page on AIX
  • 3.7.5 JDBC Sample Applications Restriction on SCO UnixWare 7
  • 3.7.6 DATALINK Data Type
  • 3.7.7 Changes to the Embedded SQL Programming Guide (ESPG) Documented in the FixPaks
  • 3.7.7.1 Multithreaded UNIX Applications Working with Code Page and Country Code
  • 3.7.7.2 Scratchpad and Final Call Type Arguments for EXTERNAL TABLE Functions
  • 3.7.7.3 Other Revisions to the Book
  • 3.8 Installing and Configuring DB2 Clients
  • 3.8.1 Configuring Client to DB2 Server Communications Using the CCA
  • 3.9 Messages Reference
  • 3.9.1 Error in Description of DBI1768W
  • 3.9.2 Changed/Additional Reason Codes for SQL0270N
  • 3.9.3 New Description for SQL0351N
  • 3.9.4 New Description for SQL0352N
  • 3.9.5 New Description for SQL0357N
  • 3.9.6 New Description for SQL0432N
  • 3.9.7 New Description for SQL0680N
  • 3.9.8 Additional Reason Code for SQL0903N
  • 3.9.9 Additional Reason Code for SQL0911N
  • 3.9.10 New Description for SQL1339N
  • 3.9.11 SQL5048N or SQL0901N When Using Change Password Support
  • 3.9.12 Additional Reason Code for SQL20053N
  • 3.9.13 New Message Text for SQL20056N
  • 3.9.14 Additional Reason Code for SQL30083N
  • 3.10 Quick Beginnings
  • 3.10.1 Installing DB2 on NEC PC98 Machines Running Windows 95
  • 3.10.2 Uninstalling DB2 on NEC PC98 Machines Running Windows 95
  • 3.10.3 Planning for Installation (Software Requirements/Server Product Requirements)
  • 3.10.4 Planning for Installation (Client Product Requirements/Software Requirements for OS/2 Clients)
  • 3.10.5 Planning for Installation (DB2 for AS/400 SNA Connections to DB2 Universal Database for AIX, OS/2, and Windows NT)
  • 3.10.6 Planning for Installation (Software Prerequisites/DB2 for OS/390 Recommended Fixes)
  • 3.10.7 Getting Started with DB2 Universal Database (Changing Passwords)
  • 3.10.8 Getting Started with DB2 Universal Database (Counting Concurrent Users on AIX)
  • 3.10.9 Working with Instances (Adding a Database Partition Server to an Instance, Using DB2 Extended Enterprise Edition for Windows NT/Domain User ID Requirement for Using Raw Device)
  • 3.10.10 Migrating from Previous Versions and Releases
  • 3.10.11 Running Your Own Applications (Running Java Programs)
  • 3.10.12 Contents of the DB2 Products (Abbreviated Names for Locales)
  • 3.11 Quick Beginnings for File Manager
  • 3.11.1 DB2 File Manager Cannot Be Installed on an DB2 Enterprise - Extended Edition System
  • 3.11.2 DLFM Administration User ID
  • 3.11.3 Using NFS to Access a Remote DLFS File System
  • 3.11.4 Restrictions Pertaining to Datalinks Clients
  • 3.11.5 Changed Setup Option for DLFM
  • 3.11.6 Recovering from a Disk Crash on the File Manager Server
  • 3.11.7 DB2 File Manager Recovery Scenarios
  • 3.11.8 Datalinks Configuration File Cannot be Created or Modified through the Command Line Processor (CLP)
  • 3.12 Changes to the Quick Beginnings Manuals Documented in the FixPaks
  • 3.12.1 DB2 Products
  • 3.12.2 Planning for Installation
  • 3.12.2.1 OS/2 Software Requirements
  • 3.12.2.2 NetFinity Support Program Must Be Stopped - Windows NT
  • 3.12.2.3 Communications Server for Windows NT - Fixes Required
  • 3.12.2.4 AUTHENTICATION for DB2 UDB DRDA Application Server
  • 3.12.2.5 Client Application Enabler Upgrade Recommended for Partitioned Database Users
  • 3.12.2.6 Client Application Enabler Upgrade Recommended for Windows ODBC Users
  • 3.12.2.7 Recommended Fix Level for ADSM on AIX
  • 3.12.2.8 CS/NT is Required for Two-phase Commit Support on Windows NT
  • 3.12.2.9 DCE Support on Windows NT and Windows 95
  • 3.12.2.10 Windows NT Level Required for Raw Device Support
  • 3.12.2.11 Assumption of SYSADM Authority (UNIX)
  • 3.12.3 Other Installation and Configuration Tasks
  • 3.12.3.1 Configuring CS/NT for Syncpoint Manager (SPM)
  • 3.12.3.2 Problem Affecting NIS Users on AIX Version 4.1.5
  • 3.12.3.3 db2cpic.dll - Extended SNA Security Codes on Windows NT and Windows 95
  • 3.12.3.4 DB2NTMEMSIZE Profile Variable for Windows NT
  • 3.12.4 Snapshot Monitoring in the Control Center
  • 3.12.5 Accessing DB2 Data from the Web
  • 3.12.6 Setting Network-Related Parameters on the RS/6000 SP
  • 3.12.7 Setting up the CCA and the Control Center in a Partitioned Database Environment (DB2 Universal Database Extended Enterprise Edition for AIX)
  • 3.12.8 Migrating from Previous Versions (UNIX)
  • 3.12.9 DB2 SNMP Subagent
  • 3.12.10 Configuring Client to DB2 Server Communication Using the CCA
  • 3.12.11 Administering and Using OS/2 User Profile Management
  • 3.12.12 ADSM Client Setup for EEE on Solaris - Use db2profile
  • 3.12.13 Connections from DB2 for OS/390 Version 5 to DB2 Universal Database Version 5
  • 3.12.14 Configuring NetBIOS on Windows NT Servers
  • 3.12.15 Shared Memory Addresses - Windows NT or Windows 95
  • 3.12.16 Running the DB2 JDBC Applet Server as a Windows NT Service
  • 3.12.17 Obtaining Information
  • 3.12.17.1 Online Help
  • 3.12.17.2 DB2 Books
  • 3.12.17.3 Printing the PostScript Books
  • 3.12.17.4 Viewing Online Books
  • 3.12.17.5 Setting up a Document Server
  • 3.12.17.6 Searching Online Books
  • 3.12.18 Microsoft Internet Explorer 4.0 HTTP 1.1 Settings
  • 3.12.19 Considerations When Remotely Administering Clusters Using the Control Center
  • 3.13 Replication Guide and Reference
  • 3.13.1 New Platforms Supported
  • 3.13.2 New Messages
  • 3.13.3 LONG VARCHAR Support by the Capture program for DB2 UDB Version 5.2
  • 3.14 Road Map to DB2 Programming
  • 3.14.1 About the Application Developer's Kit
  • 3.15 SQL Reference
  • 3.15.1 ALTER TABLE
  • 3.15.2 CREATE FUNCTION
  • 3.15.3 CREATE TABLE
  • 3.15.4 Appendix A. SQL Limits/Database Manager Limits
  • 3.16 System Monitor Guide and Reference
  • 3.16.1 Event Monitors are Created with Local Scope
  • 3.17 What's New
  • 3.17.1 Performance (Query/Summary Tables)
  • 3.17.2 Building Java Applications and Applets Updates
  • 3.17.3 Web Control Center and NetQuestion (Enabling the Web Control Center Remote Documentation Searches)
  • 3.17.4 Control Center Restrictions
  • 4.0 HTML Search Server for OS/2: Searching HTML Documentation

  • 4.1 Installing the HTML Search System on OS/2
  • 4.1.1 Prerequisites for the Search System on OS/2
  • 4.1.2 Configuring TCP/IP on OS/2
  • 4.1.3 Verifying TCP/IP Configuration
  • 4.1.4 Locating the Search System Directory
  • 4.1.5 Changing the Port Number for the Search Server
  • 4.1.6 Diagnosing Search Server Install Errors
  • 4.2 Using the HTML Search System
  • 4.2.1 Starting and Stopping the Search Server
  • 4.2.2 Searching while Disconnected from the Network
  • 4.2.3 File Not Found Errors
  • 4.2.4 If Search Does Not Work (ERROR 500 when trying to search)
  • 4.2.5 Error Detected When Starting the Search Service
  • 4.3 Uninstalling the HTML Search System
  • 4.3.1 Problems Uninstalling the Search System on OS/2
  • 5.0 HTML Search Server for Windows NT, Windows 95, and Windows 98: Searching HTML Documentation

  • 5.1 Restrictions on Use
  • 5.2 Installing the HTML Search System on Windows NT, Windows 95, and Windows 98
  • 5.2.1 Prerequisites for the Search System
  • 5.2.2 Stop Any Previously Installed Version of the Search System
  • 5.2.3 Locating the Search System Directory
  • 5.2.4 Changing to a Different Port Number for the Search Server
  • 5.2.5 Installing DB2 Universal Database on a LAN-Connected Drive
  • 5.2.6 Diagnosing Search Server Install Errors
  • 5.3 Using the HTML Search System
  • 5.3.1 Starting and Stopping the Server
  • 5.3.2 Searching with Proxies enabled in Netscape or Internet Explorer
  • 5.3.3 Searching with a Laptop on Windows 95
  • 5.3.4 If Search Does Not Work (ERROR 500 when trying to search)
  • 5.3.5 File Not Found Errors
  • 5.3.6 Error Detected when Starting the Search Service
  • 5.4 Uninstalling the HTML Search System
  • 5.4.1 If the Search System is not Uninstalled from Windows NT, Windows 95, or Windows 98
  • 5.4.2 Rebooting After Uninstalling the Product
  • 6.0 Miscellaneous

  • 6.1 DB2 Family Newsletter

  • Welcome to DB2 Universal Database Version 5.2!

    Note:These Release Notes include DB2 information about issues discovered after the shipped README file was published.

    This README file contains information that was not available when the DB2 manuals were printed, as well as FixPak information about the following products:

       IBM DB2 Universal Database Enterprise - Extended Edition for AIX, Version 5.2
       IBM DB2 Universal Database Enterprise - Extended Edition for Solaris, Version 5.2
       IBM DB2 Universal Database Enterprise - Extended Edition for Windows NT, Version 5.2
       IBM DB2 Universal Database Enterprise Edition, Version 5.2
       IBM DB2 Universal Database Workgroup Edition, Version 5.2
       IBM DB2 Universal Database Personal Edition, Version 5.2
       IBM DB2 Universal Developer's Edition, Version 5.2
       IBM DB2 Personal Developer's Edition, Version 5.2
    
    Note:VisualAge for Basic and Lotus Approach are no longer bundled in the product boxes.

    A separate Release Notes file, installed as READDCS.TXT, is provided for the following products:

       IBM DB2 Connect Enterprise Edition, Version 5.2
       IBM DB2 Connect Personal Edition, Version 5.2
    

    The What's New book contains both an overview of some of the major DB2 enhancements for Version 5 and Version 5.2, and a detailed description of these new features and enhancements. New features that were available as part of DB2 Universal Database Version 5 and DB2 Connect Version 5 FixPaks are considered Version 5.2 enhancements.

    Some portions of the DB2 Universal Database library have not been updated for Version 5.2. These include:

    If a document has not been reissued for DB2 Universal Database Version 5.2, the details of any enhancements that affect it are included in the What's New book. You can use that book in conjunction with the Version 5 documentation for DB2 Universal Database Version 5.2.


    1.0 Special Notes


    1.1 FixPak 6 Service Information and Documentation

    DB2 UDB Version 5.2 can be purchased and installed separately, or it can be installed as a FixPak. DB2 UDB Version 5.2 is equivalent to DB2 UDB Version 5.0 with FixPak 6 applied. The PTF numbers by operating system for FixPak 6 are listed in the following table:

    Table 1. PTF Numbers for DB2 UDB FixPak 6
    Operating System PTF Number for DB2 UDB FixPak 6
    AIX U458635
    HP-UX U458637
    OS/2 WR09053
    Solaris U458636
    Windows 95, Windows 98, and Windows NT WR09054
    Windows 3.1 and Windows for Workgroups 3.11 WR09056
    Note:Running the DB2 File Manager on AIX Version 4.2 requires a minimum of PTF U456886.

    The following PTF numbers, from SCO, are required for DB2 UDB Version 5.2 to run on SCO UnixWare 7:

       ptf7003c
       ptf7010
       ptf7013
    

    The latest information about SCO PTFs required for DB2 UDB Version 5.2 can be found in the Product and Service Technical Library (see section 6.1).

    The following patch levels are required for running the Sun Cluster software:

       105786-05     - Required patch for Sun Cluster 2.x on Solaris 2.6.
       2.1_105458-06 - Required Sun Cluster patch level for DB2.
    

    In Version 5.2, most of the books that make up the product libraries have been updated. They are available online in HTML format (after the products are installed), and in printed format. See the What's New book for the complete list of updated books, instructions for printing them, and the form numbers that you can use to order them. You can use form number SBOF-8921-00 to order the complete set of the books that were updated for Version 5.2.

    FixPak information that was previously included in files read1297.txt, read0398.txt, and read0698.txt has been included:

    In addition, information that was not available when the books were printed is included in the Release Notes.


    1.2 Web Control Center Installation

    The Web Control Center is a Java version of the DB2 Universal Database Control Center (a database administration tool). Its design is modelled on the original DB2 Control Center, yet it provides a more flexible network-centric administration environment. The Web Control Center is implemented as a Java applet that uses DB2's JDBC support.

    While the Web Control Center is not installed as part of this version of DB2, you can download it from the following URL:

       http://www.software.ibm.com/data/db2/udb/webcc
    

    2.0 SCOhelp Information

    The following SCOhelp information is available:


    2.1 How to Access SCOhelp

    You can access SCOhelp in one of the following ways:


    2.2 Working With National Languages and SCOhelp

    2.2.1 Special Considerations When Using the Spanish Language Extensions

    The "UnixWare 7 Update 1 (7.0.1)" CD-ROM provides, among other things, fixes for the Spanish Language Extensions (esle). The following DB2 procedures will not work when LANG is set to "es", unless the UnixWare 7 Update 1 is installed:

    If the default value of LANG is "es", this line should be commented out from the /etc/inittab file. Once the reboot has completed, log on as root, set LANG to "en" or "C", then run /etc/rc.db2. Set LANG back to "es" once DB2 has started.

    Note that once UnixWare 7 Update 1 has been installed to fix problems for the Spanish Language Extensions, these problems will disappear. You should uncomment out the line in the etc/inittab file, so that DB2 services will autostart on the next reboot:

       db:234:once:/etc/rc.db2 > /dev/console 2>&1 # Autostart DB2 Services
    

    2.2.2 Changing Default SCOhelp Language on the Server

    If you want to change the language SCOhelp returns by default on the server, edit /usr/ns-home/httpd-scohelphttp/config/lang.conf and set DocumentRoot to the desired default language. For instance:

       DocumentRoot /usr/lib/scohelp/fr
    

    Once this change is made, you must restart the web server, with the command:

    	/usr/ns-home/httpd-scohelphttp/restart
    

    If this does not work, try stopping the web server, then restarting it, with the commands:

    	/usr/ns-home/httpd-scohelphttp/stop
    	/usr/ns-home/httpd-scohelphttp/start
    

    2.2.3 Setting the Language SCOhelp Returns for a Specific Client

    Different clients can have SCOhelp return information in different languages.

    The SCOhelp server uses the *httpAcceptLanguage resource to determine which language to use when a request is received. You can set *httpAcceptLanguage to the required language as follows:

    If English is still displayed by SCOhelp, even after *httpAcceptLanguage is set, try removing English from the list altogether.

    2.2.4 Using the Search

    Note that there is no search in Simplified Chinese and Brazilian Portuguese.

    You can select multiple languages to search by clicking on the "Options" button on the SCOhelp search panel. The list of installed languages is displayed; select the set of languages to search.


    2.3 Web Control Center Help and SCOhelp

    There is no direct link from the Web Control Center help to the DB2 books (displayed using SCOhelp). Use one of the methods described in 2.1 , How to Access SCOhelp to run SCOhelp and access the DB2 books.

    There is no search in the SCO DB2 Web Control Center help.


    2.4 Support Level Supplement (SLS) PTF7004A, the UnixWare 7 Language Extension Supplement

    The "Support Level Supplement (SLS) PTF7004A" is available from the SCO ftp site at: ftp://ftp.sco.com/SLS/ Download the files ptf7004a.Z and ptf7004a.txt

    PTF7004A "corrects problems with the configuration of the Verity search engine within SCOhelp and with the localization of various utilities and SCOadmin managers." You are required to install this SLS if you will be viewing the DB2 documentation. See the ptf7004a.txt file for more details.

    2.4.1 Modifications to lang.conf for Simplified Chinese and Brazilian Portuguese

    Once the PTF7004A is installed, and before you use SCOhelp in Simplified Chinese or Brazilian Portuguese, you must edit the file /usr/ns-home/httpd-scohelphttp/config/lang.conf and make the following changes:

    1. Modify the following two lines in the LocalizedDocRoot list and add "_BR" and "_CN" to the end of the subdirectory names, as follows:
         LocalizedDocRoot pt_PT.ISO8859-1 /usr/lib/scohelp/pt_BR
         LocalizedDocRoot zh_ZH.ISO8859-1 /usr/lib/scohelp/zh_CN
      

    2. Modify the various Language Aliases for zh: Make sure that the various Language Aliases for zh are mapped to zh_ZH.ISO8859-1 (an underscore between zh and ZH, NOT a dash). The lines should read:

      	LanguageAlias zh zh_ZH.ISO8859-1
      

      This value then matches the line:

       	LocalizedDocRoot zh_ZH.ISO8859-1 /usr/lib/scohelp/zh_CN
      

    Once these changes are made restart (or stop and start) the web server, as described in 2.2.2 , Changing Default SCOhelp Language on the Server.


    2.5 SCOhelp Search Index Files

    SCOhelp stores all of its search index files in the /usr/lib/scohelp/<lang>/_SearchIndex/parts directory.

    These files will continue to grow in size as you install products, but will not get smaller as you remove products (using the current UnixWare 7 utilities). This is the case for DB2 as well as other products.

    If you delete these files, your SCOhelp search will no longer work properly.


    3.0 Changes to the DB2 Documentation


    3.1 Administration Guide

    3.1.1 Implementing Your Design (Creating a Database/Creating a Summary Table/Isolation Levels and Query Optimization Using Summary Tables or Replicated Tables)

    If a query is running under the cursor stability (CS) isolation level, only summary tables and replicated tables that are defined under CS or higher isolation levels are used for optimization. In general, a summary table or a replicated table is used for optimization of a query if the isolation level of the summary table or the replicated table is higher than or equal to the isolation level of the query.

    3.1.2 Implementing Your Design (Optimizing Performance When Data is Placed on RAID Devices)

    This section describes how to optimize performance when data is placed on Redundant Array of Independent Disks (RAID) devices. In general, you should do the following for each table space that uses a RAID device:

    DB2_PARALLEL_IO

    When reading data from, or writing data to table space containers, DB2 may use parallel I/O if the number of containers in the database is greater than 1. However, there are situations when it would be beneficial to have parallel I/O enabled for single container table spaces. For example, if the container is created on a single RAID device that is composed of more than one physical disk, you may want to issue parallel read and write calls.

    To force parallel I/O for a table space that has a single container, you can use the DB2_PARALLEL_IO registry variable. This variable can be set to "*" (asterisk), meaning every table space, or it can be set to a list of table space IDs separated by commas. For example:

       db2set DB2_PARALLEL_IO=*        {turn parallel I/O on for all table spaces}
       db2set DB2_PARALLEL_IO=1,2,4,8  {turn parallel I/O on for table spaces 1, 2, 4, and 8}
    
    
    

    After setting the registry variable, DB2 must be stopped (db2stop), and then restarted (db2start), for the changes to take effect.

    DB2_STRIPED_CONTAINERS

    Currently when creating a DMS table space container (device or file), a one-page tag is stored at the beginning of the container. The remaining pages are available for data storage by DB2, and are grouped into extent-sized blocks.

    When using RAID devices for table space containers, it is suggested that the table space be created with an extent size that is equal to, or a multiple of, the RAID stripe size. However, because of the one-page container tag, the extents will not line up with the RAID stripes, and it may be necessary during an I/O request to access more physical disks than would be optimal.

    DMS table space containers can now be created in such a way that the tag exists in its own (full) extent. This avoids the problem described above, but it requires an extra extent of overhead within the container. To create containers in this fashion, you must set the DB2 registry variable DB2_STRIPED_CONTAINERS to "ON", and then stop and restart your instance:

       db2set DB2_STRIPED_CONTAINERS=ON
       db2stop
       db2start
    

    Any DMS container that is created (with CREATE TABLESPACE or ALTER TABLESPACE) will have new containers with tags taking up a full extent. Existing containers will remain unchanged.

    To stop creating containers with this attribute, reset the variable, and then stop and restart your instance:

       db2set DB2_STRIPED_CONTAINERS=
       db2stop
       db2start
    

    The Control Center and the LIST TABLESPACE CONTAINERS command will not show whether a container has been created as striped or not. They will continue to use "file" or "device", depending on how the container was created. To verify that a container was created as striped, you can use the /DTSF option of DB2DART to dump table space and container information, and look at the type field for the container in question. Also, the query container APIs, sqlbftcq( ) and sqlbtcq( ), can be used to create a simple application that will display the type.

    Definitions for these new types have been added to the sqlutil.h header file:

       #define SQLB_CONT_STRIPED_DISK 5      /* DMS: Striped disk */
       #define SQLB_CONT_STRIPED_FILE 6      /* DMS: Striped file */
    

    3.1.3 Auditing DB2 Activities

    There is no audit support for summary tables, typed tables, or replicated tables.

    3.1.4 Utilities for Moving Data (LOAD, IMPORT, and EXPORT File Formats/PC/IXF File Formats/Code Page Considerations)

    If you want to load or import an IXF format file containing DBCS data, you must have the corresponding conversion files (located in sqllib\conv) installed on your client machine. The names of these conversion files contain both the source and the target code page numbers; the extension is always .cnv. For example, file 09320943.cnv contains the conversion table for converting code page 932 to 943.

    If your client machine does not have the appropriate conversion files, you can copy them from a server machine to the sqllib\conv directory of the client machine. Be sure to copy the files from a compatible platform; for example, if the client is running on a UNIX based operating system, copy the files from a server that is also running on a UNIX based operating system.

    3.1.5 Utilities for Moving Data (Load Restriction on Windows NT and OS/2 SMP-enabled Machines)

    In DB2 UDB Version 5.2 for Windows NT and DB2 UDB Version 5.2 for OS/2, users operating in an SMP environment might occasionally experience a system hang during a load operation. This is a known problem that occurs only during index creation (the BUILD phase of the load utility) involving large volumes of data (on the order of several gigabytes). To avoid this problem, it is recommended that existing indexes on a loading table be dropped before issuing the LOAD command, and recreated using the CREATE INDEX statement after the load operation has completed successfully. An alternative that does not require the dropping of indexes is to perform the load operation into a staging table that does not have any indexes defined on it. The target table can subsequently be updated by issuing an INSERT statement encompassing all of the data from the staging table.

    3.1.6 Recovering a Database

    3.1.6.1 Backing Up and Restoring Databases on Different Operating Systems

    You cannot back up a database or table space on one operating system and restore it to another operating system by using the BACKUP DATABASE and RESTORE DATABASE commands. Instead, you move tables from one operating system to another by using the db2move command (or by exporting, then importing or loading the data). For more information, see "Moving Data Using the db2move Tool" in the Administration Guide.

    3.1.6.2 Considerations for Using ADSTAR Distributed Storage Manager (ADSM)

    The current ADSM client on the Windows operating system and OS/2 is non-reentrant, and so multiple sessions cannot be created with the backup, restore, or load utilities from a single machine.

    In a single node configuration, if a user attempts to issue a backup command such as:

       db2 backup db sample use adsm open 3 sessions
    

    DB2 will detect that multiple sessions are not supported by ADSM, and will return SQL2032N. The equivalent scenario also applies to load copies using ADSM.

    However, in an MLN configuration on Windows NT, DB2 may not be able to detect the use of multiple sessions on a single machine if each logical node attempts to create only one session. If multiple logical nodes are being backed up, restored, or loaded in parallel using ADSM, DB2 will allow the operation to proceed if each node attempts to use a single session, even though the logical nodes actually reside on the same physical hardware. This can lead to failed backup attempts, and hung load processes, and should not be attempted.

    3.1.7 Recovering a Database (Planning to Use the ROLLFORWARD Command)

    You cannot roll forward a partitioned database from a Version 2 client.

    3.1.8 Using DB2 with an XA-Compliant Transaction Manager (Setting Up a Database Manager as a Resource Manager/XA Function Supported/Using the DB2 Universal Database XA Switch)

    The last line in the "OS/2 Platform" section should be changed to:

       With either method, you must link your application with db2api.lib.
    

    The last line in the "Windows NT Platform" section should be changed to:

       With any of these methods, ensure that you link with db2api.lib.
    

    3.1.9 Operational Performance (Managing Multiple Database Buffer Pools)

    When working on your database design, you may have determined that tables with 8KB page sizes were best. As a result, you should create a buffer pool with an 8KB page size (along with one or more table spaces with the same page size).

    If you have chosen to place your tables in an 8KB table space, it is recommended that your temporary table spaces have an 8KB page size as well, and they should be assigned to the same 8KB page size buffer pool. The default buffer pool (IBMDEFAULTBP) or any other 4KB buffer pool to which any 4KB temporary table spaces are assigned should be kept small, since the database manager will favor the 8KB temporary table spaces, and therefore the 8KB buffer pool.

    3.1.10 Configuring DB2 (Tuning Configuration Parameters/Optimizing Hash Join Performance)

    To realize the performance benefits of hash join, it may be necessary to change the value of the SORTHEAP database configuration parameter, and the SHEAPTHRES database manager configuration parameter.

    Hash join plans use more sort heap space than other join plans. When SHEAPTHRES is set to be very close to SORTHEAP (less than a factor of 2 or 3 per concurrent query), hash join runs with much less memory than the optimizer anticipated. When executing with limited memory, hash join can be very slow. The problem occurs in queries with multiple sorts and hash joins, in which the first sorts or hash joins acquire most of the available memory.

    The solution is to configure SHEAPTHRES to be large enough (relative to SORTHEAP).

    For more information about hash join, including how to determine whether a hash join strategy has been selected, see the description of db2expln in the SQL Reference, and the What's New book (Appendix A - System Monitor Guide and Reference Updates). See also the description of the new hash join registry variable (DB2_HASH_JOIN) below.

    3.1.11 ASLHEAPSZ and Failed Queries Against Large Tables

    DB2 can fail while fetching query results from large tables (that is, tables with greater than a 4005-character record length and more than 500 columns). This can be overcome by increasing the value of the ASLHEAPSZ database manager configuration parameter from the default value of 15.

    3.1.12 INTRA_PARALLEL Setting on an SMP Machine (Windows NT)

    On Windows NT, on an SMP machine, the INTRA_PARALLEL database manager configuration parameter will be set to YES when an instance is created with DB2 Version 5.2. With Version 5.0, it would have been set to NO.

    3.1.13 DB2 Registry Values and Environment Variables

    The DB2_GRP_LOOKUP registry value has a default of "null" and a value of "local":

       Parameter       Operating      Values                    Description
                       System
       -------------------------------------------------------------------------------------
       DB2_GRP_LOOKUP  Windows NT     DEFAULT=null              Specifies which Windows NT
                                      Values: local             security mechanism will be
                                                                used to enumerate the groups
                                                                that a user belongs to.
    

    There is a new hash join registry variable:

       Parameter       Operating      Values                    Description
                       System
       ------------------------------------------------------------------------------------
       DB2_HASH_JOIN   All            DEFAULT=NO                Specifies hash join as
                                      Values: YES or NO         a possible join method when
                                                                compiling an access plan.
    

    3.1.14 Additional Rah (Run All Hosts) Information (Solaris and AIX only)

    The following is to be added to the rah information in Appendix Q.

    To enhance performance, rah has been extended to use tree_logic on large systems. That is, rah will check how many nodes the list contains, and if that number exceeds a threshold value, it constructs a subset of the list and sends a recursive invocation of itself to those nodes. At those nodes, the recursively invoked rah follows the same logic until the list is small enough to follow the standard logic (now the "leaf-of-tree" logic) of sending the command to all nodes on the list. The threshold can be specified by environment variable RAHTREETHRESH, or defaults to 15.

    In the case of a multiple-logical-node-per-physical-node system, db2_all will favor sending the recursive invocation to distinct physical nodes, which will then rsh to other logical nodes on the same physical node, thus also reducing inter-physical-node traffic. (This point applies only to db2_all, not rah, since rah always sends only to distinct physical nodes.)

    This version of rah has nearly identical syntax and semantics as the old version (supplied in the product as rah.sh_old), except for some minor restrictions on what options can be used:


    3.2 API Reference

    3.2.1 sqlecrea - Create Database

    To specify the IDENTITY collating sequence when creating a database, specify SQL_CS_NONE (which implements a binary collating sequence) in the database description block (SQLEDBDESC) structure.

    3.2.2 sqlubkp - Backup Database

    In the description of the pMediaTargetList parameter (value SQLU_ADSM_MEDIA), the sentence "No additional input is required." should be replaced with:

       If an SQLU_MEDIA_ENTRY structure is not being used to specify
       a path for the backup image, initialize the MEDIA pointer in
       the SQLU_MEDIA_LIST_TARGETS structure to NULL.
    

    3.2.3 sqlugtpi - Get Table Partitioning Information

    The following section is missing from the API description:

       Required Connection
          Database
    

    3.2.4 sqluhget - Retrieve DDL Information From the History File (New API)

    There is no callerac parameter available in the sqluhgne API with which to retrieve DDL information recorded in the history file. To retrieve this information, a new API has been created:

       SQL_API_RC SQL_API_FN
         sqluhget(
           unsigned short Handle,            // IN: Handle returned from sqluhops
           unsigned short CallerAction,      // IN: For special handling of command field
           unsigned long Reserved_1,         // Reserved for future use
           struct sqluhinfo * pHistoryInfo,  // IN/OUT: Pointer to entry data
           struct sqluhadm * pAdminInfo,     // IN/OUT: Pointer to enhanced adminstrative data
           void * pReserved,                 // Reserved for future use
           struct sqlca * pSqlca);           // SQLCA
    

    The parameters of this API have the same meanings as the corresponding parameters of the sqluhgne API, with the exception of CallerAction, which is new. The reserved fields of this API, Reserved_1 and pReserved, must be initialized to 0 and NULL, respectively. The possible values of CallerAction are:

       SQLUH_GET_NEXT_ENTRY
          Retrieves the next matching entry.
          No DDL information is returned to the caller, but the length
          field of the sqluhadm.command structure will be set to the length
          of any DDL field that exists for that entry.
       SQLUH_GET_DDL
          If this action is passed to the API immediately after
          fetching an entry, the DDL data associated with that entry is returned.
          It is the responsibility of the caller to indicate - through
          the sqluhadm.command.length field - the number of bytes
          of memory which have been allocated for DDL data to be
          returned through the sqluhadm.command.data field.
       SQLUH_GET_NEXT_ENTRY_DDL
          Retrieves the next matching entry.
          It also returns any DDL information which has been recorded for the entry.
          The caller must indicate - through the sqluhadm.command.length field -
          the number of bytes of memory which have been allocated for
          the sqluhadm.command.data field.
    

    3.2.5 sqluhgne - Get Next Recovery History File Entry

    The second parameter of this API, which was "int callerac", is now "struct sqluhadm *pAdminInfo". The API definition is:

       SQL_API_RC SQL_API_FN
         sqluhgne(
           unsigned short Handle,
           struct sqluhadm * pAdminInfo,
           struct sqluhinfo * pHistoryInfo,
           struct sqlca * pSqlca);
    

    3.2.6 sqluhops - Open Recovery History File Scan

    The description of the SQLUH_LIST_ADM_ALTER_TABLESPACE caller action should be changed to:

       Select only the ALTER TABLESPACE records that pass the other
       filters.  The DDL field associated with an entry will not be
       returned.  To retrive the DDL information for an entry,
       sqluhgne must be called with a caller action of SQLUH_GET_DDL
       immediately after the entry is fetched.	
    

    3.2.7 sqluload - Load

    This API affects only the partition to which an application is directly connected; the load utility operates on a single database partition only.

    The Usage Notes section incorrectly states that "summary tables" that are dependent on the tables being loaded are placed in check pending state. It should state that "summary tables defined with REFRESH IMMEDIATE", that are dependent on the tables being loaded, are placed in check pending state.

    3.2.8 SQLE-CLIENT-INFO (Connection Settings)

    The valid entries for the SQLE-CLIENT-INFO TYPE element should be changed to:

       SQLE_CLIENT_INFO_USERID
       SQLE_CLIENT_INFO_WRKSTNNAME
       SQLE_CLIENT_INFO_APPLNAME
       SQLE_CLIENT_INFO_ACCTSTR
    

    3.2.9 SQLFUPD

    Table 46, "Updateable Database Manager Configuration Parameters" has an additional entry for a new parameter, catalog_noauth:

       Parameter Name   Token                     Token Value   Data Type
       --------------   -----                     -----------   ---------
       catalog_noauth   SQLF_KTN_CATALOG_NOAUTH   314           Uint16
    

    3.2.10 SQLUHINFO (SQLUHADM)

    The definition of the SQLUHADM structure should be changed to:

       SQL_STRUCTURE sqluhadm
       {
         char           end_time[SQLUH_TIMESTAMP_SZ+1]; // OUT: Completion time stamp of the event
         char           id[SQLUH_ID_SZ+1];              // OUT: Unique identifier of a dropped table
         struct sqlca   event_sqlca;                    // OUT: SQLCA associated with the entry
         struct sqlchar command;                        // IN/OUT: DDL command information
    };
    

    Notes:

    1. Currently, command data is recorded only for ALTER TABLESPACE events.

    2. It is the responsibility of the caller to initialize the sqluhadm.command.length field to the number of bytes of memory which have been allocated for this field.

    3. The macro SQLUHADMSIZE(n), defined in sqlutil, is provided to help determine how much memory is required for an sqluhadm structure with space for n characters of command data.

    3.2.11 sqluvput - Writing Data to Device

    Change "struct Init_output *," in the "C API Syntax" section to "struct Data *,".


    3.3 Building Applications for Windows and OS/2 Environments

    3.3.1 Building Windows NT and Windows 95 Embedded SQL Applications (IBM VisualAge for COBOL)

    There is a problem with the "cob2 -dll" command of VisualAge COBOL for Windows NT Version 2.2. The original command in "x:\sqllib\samples\cobol\bldvacbs.bat" for creating a DLL is:

       cob2 -dll %1.obj db2api.lib
    

    This version of VisualAge COBOL returns the following error:

       fatal error : Unable to open "E:\sqllib\samples\cobol\db2api.lib".
    

    This will be corrected in the first FixPak of VisualAge COBOL for Windows NT. Until that FixPak is available, however, the problem can be solved by replacing the above command with:

       ilib  /nol /gi:%1 %1.obj
       ilink  /free /nol /dll  db2api.lib %1.exp %1.obj iwzrwin3.obj
    

    3.3.2 Building Java Applications and Applets (Setting the Environment for Using Microsoft SDK for Java on the Windows Operating System)

    There is a new environment variable for specifying which Java Development Kit to use on the Windows operating system for DB2 SQLJ. The environment variable is called DB2JVIEW, and it applies to all DB2 SQLJ commands (db2profc, db2profp, profdb and profp), except sqlj. If DB2JVIEW=1, Microsoft SDK for Java will be used; that is, if you call "profp", it will run as "jview sqlj.runtime.profile.util.ProfilePrinter". If DB2JVIEW=0, or not set, Sun JDK will be used; that is, if you call "profp", it will run as "java sqlj.rutnime.profile.util.ProfilePrinter". The command "sqlj" will ignore this variable, and always use the Sun JDK to run. To compile the Java source code generated by "sqlj", use the Java compiler (javac) that comes with Sun JDK.


    3.4 Building Applications for UNIX** Environments

    3.4.1 Building SCO UnixWare 7 Embedded SQL Applications

    In the "Micro Focus COBOL" section, the link option -lthread in the bldmfcc script file is no longer needed as the thread library has been incorporated into the DB2 library, represented by the -ldb2 option.

    3.4.2 Building Java Applications and Applets (Setting the Environment: HP-UX, SCO UnixWare 7)

    To build and run Java programs on HP-UX now requires the HP-UX Developer's Kit for Java Release 1.1.3 (or higher).

    DB2 does not support Java stored procedures and Java user-defined functions (UDFs) accessing DB2 databases on HP-UX and SCO UnixWare servers. Because of this restriction, the following Java sample programs cannot be run against DB2 databases on HP-UX and SCO UnixWare:

       DB2Stp.java
       DB2Udf.java
       CatUdf.sqlj
       DropUdf.sqlj
       Stp.sqlj
       Udfsrv.java
    

    There have been several changes to the Java sample programs documented in this chapter. The stored procedure and UDF programs have been split into separate client and server programs. This allows users on client machines to remotely access stored procedures and UDFs on server machines. The files affected are as follows:

    DB2Stp
    is now a server program. The client program that calls it is DB2SpCli.

    DB2Udf
    is now a server program. The client program that calls it is DB2UdCli.

    Stp
    is now a server program. The client program that calls it is StpCli.

    Udf
    is now a client program. The server program that it calls is Udfsrv.

    The script file embprep has been created to precompile and bind the SQLJ programs. It is called by the makefile and executes the db2profc command on the Java embedded SQL sample programs. It allows optional arguments for database, user ID and password, thereby facilitating remote binding to databases on DB2 servers from client machines.


    3.5 CLI Guide and Reference

    3.5.1 SQLPREPARE()

    The description of SQLPrepare() does not indicate that deferred prepare is now ON by default.

    This means that the processing of the SQL statements passed to the database using SQLPrepare() does not take place when the SQLPrepare() function is called. Instead, it is processed when SQLExecute() is called.

    Minimal error checking is performed by DB2 CLI when SQLPrepare() is called (that is, valid function arguments, and so on). The true SQLSTATEs are not returned from the prepare until SQLExecute() is called. Your application should therefore expect SQLSTATEs from SQLPrepare() after the call to SQLExecute(), followed by SQLSTATEs from the SQLExecute() call itself.

    For more information see "Deferred Prepare now on by Default" in "Appendix B. Migrating Applications", in the section "Changes from Version 2.1.1 to 5.0.0". This describes how to turn deferred prepare off for Version 2 programs, as well as a further description of the deferred prepare process.

    3.5.2 SQLDISCONNECT()

    The description states that cursors are closed by a call to SQLDisconnect(). This is not the case, however, with stored procedures.

    An application should not rely on SQLDisconnect() to close cursors, even if it is not a stored procedure. In both cases, the cursor should be closed using SQLCloseCursor(), then the statement handle freed with a call to SQLFreeHandle() with a HandleType of SQL_HANDLE_STMT.

    3.5.3 Using Stored Procedures - Programming Stored Procedures To Return Result Sets

    The book indicates that the stored procedures must be run on a remote server. This is no longer the case. Stored procedures running on a local server can return result sets.

    The book indicates that the stored procedure should call SQLFreeStmt() with either SQL_DROP or SQL_CLOSE; however, only SQL_CLOSE should be used.

    3.5.4 Stored Procedure Catalog Tables

    All stored procedures should be registered in the new SYSCAT.PROCEDURES and SYSCAT.PROCPARMS catalog tables using the CREATE PROCEDURE statement. For more information about this SQL statement, see the SQL Reference.

    If the stored procedures are not registered using the CREATE PROCEDURE statement, CLI or ODBC applications will not know that they exist. For more information, see the section "Replacement of the Pseudo Catalog Table for Stored Procedures" in the Migration Appendix.


    3.6 Command Reference

    3.6.1 db2cmd - Open DB2 Command Window

    This command is available on Windows NT, Windows 95, and Windows 98.

    The following switches are now supported:

       /c   Invoke command.exe with the /c option (that is, execute the command,
            and then terminate.  For example, "db2cmd /c dir" causes the "dir" command
            to be invoked in a command window, and then the command window closes.
     
       /w   Wait until the cmd.exe process ends.
            For example, "db2cmd /c /w dir" invokes the "dir" command, and db2cmd.exe
            does not end until the command window closes.
     
       /i   Run the command window, sharing the same console and inheriting file handles.
            For example, "db2cmd /c /w /i db2 get dbm cfg > myoutput"
            invokes cmd.exe to run the db2 command and to wait for its completion.
            A new console is not assigned, and stdout is piped to file "myoutput".
     
       /t   Instead of using "DB2 CLP" as the title of the command window,
            inherit the title from the invoking window. This is useful
            if you want to set up an icon with a different title that
            invokes "db2cmd /t".
    

    Note:All switches must appear before any commands to be executed. For example: db2cmd /t db2

    If DB21061E ("Command line environment not initialized.") is returned when bringing up the CLP-enabled DB2 window, or running CLP commands on Windows 95 or Windows 98, the operating system may be running out of environment space. Check the config.sys file for the SHELL environment setup parameter, and increase its value accordingly. For example:

       SHELL=C:\COMMAND.COM C:\ /P /E:32768
    

    3.6.2 db2eva - Event Analyzer

    The "Command Parameters" section is missing the following description:

       -evm evmon-name
          Specifies the name of the event monitor whose traces are to be analyzed.
    

    3.6.3 db2evmon - Event Monitor Productivity Tool

    The "-db" and "-evm" keywords are case sensitive.

    3.6.4 db2look - DB2 Statistics Extraction Tool

    Option "-a" generates statistics for all users on the database. If used with option "-e", it generates the DDL for all user tables in the database, but statistics are not generated.

    Notes:

    1. Some DDL characteristics are not extracted by db2look.

    2. If neither -u nor -a is specified, the environment variable USER is used. On UNIX based systems, this variable does not have to be explicitly set; on Windows NT, however, there is no default value for the USER environment variable: on this platform, a user variable in the SYSTEM variables must be set, or a "set USER=<username>" must be issued for the session.

    3.6.5 db2set - DB2 Profile Registry Command

    The "Command Parameters" section has been changed to:

       variable=value
          Sets a specified variable to a specified value.
          To delete a variable, do not specify a value for the specified variable.
          Changes to settings take effect after the instance has been restarted.
       -g
          Accesses the global profile variables.
       -i instance
          Specifies the instance profile to use instead of the current, or default.
       node-number
          Specifies a number listed in the db2nodes.cfg file.
       -all
          Displays all occurrences of the local environment variables as defined in:
            o The environment, denoted by [e]
            o The node level registry, denoted by [n]
            o The instance level registry, denoted by [i]
            o The global level registry, denoted by [g].
       -null
          Sets the value of the variable at the specified registry level to null.
          This avoids having to look up the value in the next registry level,
          as defined by the search order.
       -r instance
          Resets the profile registry for the given instance.
       -n DAS node
          Specifies the remote DB2 administration server node name.
       -u user
          Specifies the user ID to use for the administration server attachment.
       -p password
          Specifies the password to use for the administration server attachment.
       -l
          Lists all instance profiles.
       -lr
          Lists all supported registry variables.
       -v
          Specifies verbose mode.
       -h/-?
          Displays help information. When this option is specified,
          all other options are ignored, and only the help information is displayed.
    

    3.6.6 db2upd52 - Update Catalog to Support Version 5.2

    Although this utility is installed at the server, it can be run at a client; to do so, copy the executable from the server to the client.

    In an MPP environment, the utility must be run from the catalog node of the specified database.

    3.6.7 BACKUP DATABASE

    To use tape devices, DB2 users on SCO UnixWare 7 need to specify BUFFER to be 16. The default value of BUFFER is 1024 pages. If BUFFER is set to zero, the database manager configuration parameter BACKBUFSZ must be set to 16.

    3.6.8 EXPORT

    Table 6 ("Valid Delimiters"), and all references to it, should be removed. The information contained in the note at the bottom of the table, and the restrictions that follow the note, are correct, however.

    Note:In a DBCS environment, the pipe (|) character delimiter is not supported.

    Replace the section "DB2 File Manager Considerations" in the Usage Notes with the following:

    To ensure that a consistent copy of the table and the corresponding files referenced by the DATALINK columns are copied for export, do the following:

    1. To ensure that no update transactions are in progress when the export utility is run, issue the command QUIESCE TABLESPACES FOR TABLE tablename SHARE.

    2. Issue the EXPORT command.

    3. Run the dlfm_export utility with root authority at each file server. Input to the dlfm_export utility is the control file, server_name, which is generated by the export utility. The dlfm_export utility must be run with root authority in order to successfully archive files to which the DLFM administrator may not have access.

    4. To make the table available for updates, issue the command QUIESCE TABLESPACES FOR TABLE tablename RESET.

    EXPORT is executed as an SQL application. The rows and columns satisfying the SELECT statement conditions are extracted from the database. For the DATALINK columns, the SELECT statement should not specify any scalar function. The export utility uses APIs to extract parts of the DATALINK value, such as link type, file server name, file path name, and comments.

    Successful execution of EXPORT results in generation of the following files:

    Use the dlfm_export utility to export files from a file server as follows:

        Usage: dlfm_export <control file name> [<tar file name>]
        Description:
          <control file name>  This is the file name that was generated by
                               running the export utility on the DB2 client.
          <tar file name>      This is the name of the archive file that will
                               be generated (the default is export.tar
                               in the current working directory).
    

    A corresponding utility called dlfm_import is provided to retrieve and to restore files from the archive that dlfm_export generates. This utility must be used whether the archived files are being restored on the same or on a different file server. Use the dlfm_import utility to retrieve files from the archive as follows:

        Usage: dlfm_import [<tar file name>]
        Description:
          <tar file name>      This is the name of the archive file that will
                               be used to recover the files (the default is export.tar
                               in the current working directory).
    
    
    

    Notes:

    1. Both dlfm_export and dlfm_import utilities must be run with root authority. In the case of dlfm_export, there may be files to be archived to which the DLFM administrator does not have access. In the case of dlfm_import, root authority is required because the user may want to restore the archived files on a different file server, one that may not have the same directory structure and user IDs as the file server on which the dlfm_export utility was run.

    2. The File Manager does not have to be running in order for the dlfm_export and the dlfm_import utilities to run.

    3. When running the dlfm_import utility on a file server other than the one on which dlfm_export was run, the files will be restored on the correct paths. The files will be owned by root, in case some of the user IDs do not exist on the new machine. Before inserting the corresponding DATALINK values into the database, it is the administrator's responsibility to ensure that all files have the correct permissions and belong to the correct user IDs.

    Exporting Between Instances

    The table below shows how to export DB2 data and the files that are referenced by the instance called SystemA to the instance called SystemB. SystemA uses file servers DLFM1 and DLFM2. SystemB uses file servers DLFMX and DLFMY. The files on DLFM1 will be exported to DLFMX, and the files on DLFM2 will be exported to DLFMY.

    +------------------------------------------------------------------------------+
    | InstanceA with File Servers DLFM1 and DLFM2  | Step                          |
    +------------------------------------------------------------------------------+
    | DB2 Data | File1 for DLFM1 | File2 for DLFM2 |                               |
    | on File  |                 |                 |                               |
    +----------+-----------------+-----------------+-------------------------------+
    |          | Run the         | Run the         | 1. Run dlfm_export (as root)  |
    |          | dlfm_export     | dlfm_export     | on both file servers.         |
    |          | command         | command         | This will produce an archive  |
    |          |                 |                 | on both file servers.         |
    +----------+-----------------+-----------------+-------------------------------+
     
    +------------------------------------------------------------------------------+
    | InstanceB with File Servers DLFMX and DLFMY  | Step                          |
    +------------------------------------------------------------------------------+
    |          | On DLFMX,       | On DLFMY,       | 2. Run dlfm_import (as root)  |
    |          | restore from an | restore from an | on both file servers.         |
    |          | archive         | archive         |                               |
    +----------+-----------------+-----------------+-------------------------------+
    |          |                 |                 | 3. Run the IMPORT command on  |
    |          |                 |                 | InstanceB, with the parameter |
    |          |                 |                 | DL_URL_REPLACE_PREFIX to      |
    |          |                 |                 | specify the appropriate file  |
    |          |                 |                 | server for each exported file.|
    +----------+-----------------+-----------------+-------------------------------+
     
    +------------------------------------------------------------------------------+
    | After the import utility is run on InstanceB, InstanceA data and all         |
    | files referenced by DATALINK columns are imported.                           |
    +------------------------------------------------------------------------------+
    

    3.6.9 GET DATABASE MANAGER CONFIGURATION

    A new parameter, catalog_noauth, specifies whether users are able to catalog and uncatalog databases and nodes, or DCS and ODBC directories, without SYSADM authority. The default value (0) for this parameter indicates that SYSADM authority is required. When this parameter is set to 1 (yes), SYSADM authority is not required.

    3.6.10 IMPORT

    In an MPP environment, if a database was bound using the INSERT BUF option, buffered insert will be disabled during any import operation to that database if the INSERT_UPDATE is specified.

    NOCHECKLENGTHS is supported for both the ASC and the IXF file formats. This option does not have to be used with the FORCEIN modifier. If NOCHECKLENGTHS is specified, an attempt is made to import each row, even if the source data has a column definition that exceeds the size of the target table column. Such rows may be successfully imported if code page conversion causes the source data to shrink; for example, 4-byte EUC data in the source could shrink to 2-byte DBCS data in the target, and require half the space. This option is particularly useful if it is known that the source data will fit in all cases despite mismatched column definitions.

    The current default priority for delimiters is: record delimiter, character delimiter, column delimiter. To protect existing customer applications that depend on the older priority, a new file type modifier, DELPRIORITYCHAR, has been created for the import utility. This modifier reverts the delimiter priorities to: character delimiter, record delimiter, column delimiter. The syntax is: db2 import ... modified by delprioritychar ...

    3.6.11 LIST DATABASE DIRECTORY

    There can be a maximum of eight opened database directory scans per process. To overcome this restriction for a batch file that issues more than eight LIST DATABASE DIRECTORY commands within a single DB2 session, convert the batch file into a shell script. The "db2" prefix generates a new DB2 session for each command.

    3.6.12 LOAD

    This command affects only the partition to which a direct connection exists; the load utility operates on a single database partition only.

    The COPY option is not supported for tables with DATALINK columns.

    The REPLACE option is not supported for tables with DATALINK columns.

    The NONRECOVERABLE clause should not be used when DATALINK columns with the FILE LINK CONTROL attribute are present in - or being added to - the table.

    There is a limit on the combination of DATALINK columns and the number of DLFMs used. There can be at most 256 unique combinations of DLFMs and DATALINK columns in a table. For example, the table can have a maximum of 128 DATALINK columns if the number of DLFMs configured is two.

    Load copy to tapes is not supported for DB2 servers running on SCO UnixWare 7.

    The Usage Notes section incorrectly states that "summary tables" that are dependent on the tables being loaded are placed in check pending state. It should state that "summary tables defined with REFRESH IMMEDIATE", that are dependent on the tables being loaded, are placed in check pending state.

    NOCHECKLENGTHS is supported for both the ASC and the IXF file formats. This option does not have to be used with the FORCEIN modifier. If NOCHECKLENGTHS is specified, an attempt is made to load each row, even if the source data has a column definition that exceeds the size of the target table column. Such rows may be successfully loaded if code page conversion causes the source data to shrink; for example, 4-byte EUC data in the source could shrink to 2-byte DBCS data in the target, and require half the space. This option is particularly useful if it is known that the source data will fit in all cases despite mismatched column definitions.

    The current default priority for delimiters is: record delimiter, character delimiter, column delimiter. To protect existing customer applications that depend on the older priority, a new file type modifier, DELPRIORITYCHAR, has been created for the load utility. This modifier reverts the delimiter priorities to: character delimiter, record delimiter, column delimiter. The syntax is: db2 load ... modified by delprioritychar ... The new option is not supported in an MPP environment, nor is it supported by the AutoLoader. Load SMP exploitation is disabled when this option is specified (CPU_PARALLELISM is forced to a value of 1). The new option is mutually exclusive with the "DUMPFILE" feature, and is supported only for the DEL file format.

    3.6.13 RECONCILE

    There is an error in the description of "DLREPORT filename". There is no default value for this parameter.

    The file name must be a fully qualified file name. For example:

       /home/user/report.out
    

    3.6.14 RESTORE DATABASE

    If the WITHOUT DATALINK option is not specified, and the DB2 File Manager containing the DATALINK data is unavailable, the restore operation will fail.

    If this option is specified, and the DB2 File Manager containing the DATALINK data is unavailable, all table spaces which contain tables with DATALINK values on the unavailable server are placed in RESTORE PENDING state.

    To use tape devices, DB2 users on SCO UnixWare 7 need to specify BUFFER to be 16. The default value of BUFFER is 1024 pages. If BUFFER is set to zero, the database manager configuration parameter BACKBUFSZ must be set to 16.


    3.7 Embedded SQL Programming Guide

    3.7.1 Writing User-Defined Functions (Interface between DB2 and a UDF/The Arguments Passed from DB2 to a UDF)

    There are two changes to the numbered list under the "dbinfo" argument:

    3.7.2 Programming in C and C++ (Programming Considerations/Host Variables)

    3.7.2.1 Declaring Host Variables

    BIGINTs can now be declared in one of three ways:

    3.7.2.2 Handling Graphic Host Variables (Windows Operating System)

    When specifying the WCHARTYPE CONVERT option on a Windows platform, you should note that wchar_t on Windows platforms is Unicode. Therefore, if your C/C++ compiler's wchar_t is not Unicode, the wcstombs() function call may fail with SQLCODE -1421 (SQLSTATE=22504). If this happens, you can specify the WCHARTYPE NOCONVERT option, and explicitly call the wcstombs() and mbstowcs() functions from within your program.

    3.7.3 Programming in Java (Creating Java UDFs and Stored Procedures/Classes for Java Stored Procedures and UDFs)

    In the section "COM.ibm.db2.app.UDF", there is a list of functions that return specific DBINFO fields. To this list has been added:

       public String getDBapplid() throws Exception
    

    3.7.4 A JDK Problem That Affects JDBC Programs Running under a DBCS Code Page on AIX

    When running JDBC programs with JDK 1.1.4 bundled with AIX 4.3.1 under a DBCS code page, the DBCS data can not be displayed properly. This is a known problem in this version of JDK, and a fix for it (IX78932) is available.

    3.7.5 JDBC Sample Applications Restriction on SCO UnixWare 7

    Because a native method cannot make use of the thread library (libthread.so from UnixWare 7; see the UnixWare release notes), DB2 JDBC sample applications (DB2Appl, DB2Udf, and DB2Stp) do not work from a Version 5.2 client on UnixWare 7 connecting to a Version 5 UDB server, or a Version 5 client connecting to a FixPak 3 UDB server.

    3.7.6 DATALINK Data Type

    Embedded SQL using the DATALINK data type is not supported.

    3.7.7 Changes to the Embedded SQL Programming Guide (ESPG) Documented in the FixPaks

    3.7.7.1 Multithreaded UNIX Applications Working with Code Page and Country Code

    On AIX, Solaris, HP-UX, SCO UnixWare 7, and Silicon Graphics IRIX, changes have been made to the functions that are used for run time querying of the code page and country code to be used for a database connection. They are now thread safe but can create some lock contention (and resulting performance degradation) in a multithreaded application which uses a large number of concurrent database connections.

    A new environment variable has been created (DB2_FORCE_NLS_CACHE) to eliminate the chance of lock contention in multithreaded applications. When DB2_FORCE_NLS_CACHE is set to TRUE the code page and country code information is saved the first time a thread accesses it. From that point on the cached information will be used for any other thread that requests this information. By saving this information, lock contention is eliminated and in certain situations a performance benefit will be realized.

    DB2_FORCE_NLS_CACHE should not be set to true if the application changes locale settings between connections. If this is done then the original locale information will be returned even after the locale settings have been changed. In general, multithreaded applications will not change locale settings. This ensures that the application remains thread safe.

    3.7.7.2 Scratchpad and Final Call Type Arguments for EXTERNAL TABLE Functions

    Changes have been introduced (a) to give the user explicit control over scratchpad duration, and (b) to avoid inconsistencies in the duration of scratchpads, for table functions written in:

    This difference has led to the possibility of getting inconsistent results, for example when performing a join.

    The following changes have been introduced for User Defined Functions (UDFs) which are table functions:

    1. FINAL CALL is now optional for the CREATE FUNCTION statement for table functions, as it is for scalar functions. NO FINAL CALL (the default) may thus be specified for table functions.

    2. When writing a table function which has a scratchpad, you can elect to have the scratchpad be initialized for each OPEN call to the function, by specifying NO FINAL CALL, in which case the table function is expected to release resources on each CLOSE call.

      Or, you can elect to have the scratchpad content be preserved across OPEN calls, by specifying FINAL CALL. If you do this, you need not release resources during the CLOSE call processing, because a FINAL call will be made to the table function at end-of-statement. This FINAL CALL is new with this change, as is the balancing FIRST call which takes place before the first OPEN call. These two new call types occur only on table functions which specify FINAL CALL.

    3. For Java table functions, a change to the execution model needs to be understood. The following table explains what happens at each significant point in the table function processing of a given statement (the bottom part of each box hints what the code might be written to do for a typical table function which pulls some information in from the Web). Covered are both the NO FINAL CALL and the FINAL CALL cases, assuming SCRATCHPAD in both cases, which account for the new semantics described above.
                    |                              |
        Point     | |    NO FINAL CALL             |    FINAL CALL
        in        | |    LANGUAGE JAVA             |    LANGUAGE JAVA
        scan      | |    SCRATCHPAD                |    SCRATCHPAD
        time      V |                              |
        ------------+------------------------------+------------------------------
        Before the  | No calls.                    | Class constructor is called
        first OPEN  |                              |  (means new scratchpad).
        for the     |                              | UDF Method is called with
        table func. |                              |  "FIRST" call.
                    |                              |- - - - - - - - - - - - - - -
                    |                              | Constructor initializes
                    |                              |  class and scratchpad
                    |                              |  variables.
                    |                              | Method connects to the Web
                    |                              |  Server.
                    |                              |
        ------------+------------------------------+------------------------------
        At each     | Class constructor is called  | UDF Method is called with
        OPEN of the |  (means new scratchpad).     |  "OPEN" call.
        table func. | UDF Method is called with    |
                    |  "OPEN" call.                |
                    |- - - - - - - - - - - - - - - |- - - - - - - - - - - - - - -
                    | Constructor initializes      | Method opens the scan for
                    |  class and scratchpad        |  whatever Web data it wants.
                    |  variables.                  |  (Might be able to avoid
                    | Method connects to the Web   |  reopen after a CLOSE repo-
                    |  Server, and opens the scan  |  sition, depending on what
                    |  for Web data.               |  is saved in scratchpad!)
                    |                              |
        ------------+------------------------------+------------------------------
        At each     | UDF method is called with    | UDF Method is called with
        FETCH for   |  "FETCH" call.               |  "FETCH" call.
        new row of  |- - - - - - - - - - - - - - - |- - - - - - - - - - - - - - -
        table func  | Method fetches and returns   | Method fetches and returns
        data.       |  next row of data, or EOT.   |  next row of data, or EOT.
                    |                              |
        ------------+------------------------------+------------------------------
        At each     | UDF method is called with    | UDF Method is called with
        CLOSE of the|  "CLOSE" call.               |  "CLOSE" call.
        table func. | "close" method is called if  |
                    |  it exists for class.        |
                    |- - - - - - - - - - - - - - - |- - - - - - - - - - - - - - -
                    | Method closes its Web scan   | Method might reposition to
                    |  and disconnects from the    |  the top of the scan, or
                    |  Web Server.                 |  close the scan.  It can
                    | "close" does not need to do  |  save any state in the
                    |  anything.                   |  scratchpad, which will
                    |                              |  persist.
                    |                              |
        ------------+------------------------------+------------------------------
        After the   | No calls.                    | UDF Method is called with
        last CLOSE  |                              |  "FINAL" call.
        of the table|                              | "close" method is called if
        func.       |                              |  it exists for class.
                    |                              |- - - - - - - - - - - - - - -
                    |                              | Method disconnects from the
                    |                              |  Web Server.
                    |                              | "close" does not need to do
                    |                              |  anything.
                    |                              |
        ------------+------------------------------+------------------------------
      

      Some notes on this table:

      1. By "UDF Method" we mean the Java class method which implements the UDF; the method identified in the EXTERNAL NAME clause of the CREATE FUNCTION statement.

      2. For table functions with NO SCRATCHPAD specified, the calls to the UDF method are as indicated in this table, but because the user is not asking for any continuity via a scratchpad, DB2 will cause a new object to be instantiated before each call, by calling the class constructor. It is not clear that table functions with NO SCRATCHPAD (and thus no continuity) can do very useful things, but they are supported.

      3. These execution models imply the existence of a new class method which provides the call type. This method is provided, as are numerous other methods, with DB2 in the COM.ibm.db2.app.UDF class, and will be defined as:
           public int getCallType () throws Exception
        

      4. These models are TOTALLY COMPATIBLE with what happens with the other UDF languages: C and C++ and OLE.

    Defines for the new call types are added to sqludf.h, the UDF include file.

    UDB customers who have existing table functions are advised to examine the above options and make appropriate changes:

    1. If you depend on the new scratchpad semantics implied by FINAL CALL then you may have to change your UDF to add the new call types, because with FINAL CALL specified, the new calls will be made to the UDF. Also, any acquired resources should be freed when the FINAL call is handled by the table function.

    2. If you wish to use the semantics implied by NO FINAL CALL, you are advised to change and rerun your CREATE FUNCTION statement with NO FINAL CALL instead of FINAL CALL, so that your UDF will not get the new calls. (Depending on how the UDF is written to examine the call-type argument, it may or may not give bad results if it receives unexpected calls.)

    3. If you have a Java table function, then you will have to change your function to conform to the new execution models in the above table. For either execution model (depending on whether you choose FINAL CALL or NO FINAL CALL), you will note that additional calls are made to the UDF method. This gives additional power to the UDF writer, but means that he or she must distinguish the calls. Use of the new getCallType method in the parent class included by DB2 provides this capability.

    Detailed information changes will appear in the "SQL Reference" and the "Embedded SQL Programming Guide" (ESPG) when they are next updated. Meanwhile, a "Technote" describing these changes in more detail will be made available in the DB2 Technical Library on the World Wide Web. Use the search argument "FINAL CALL".

    The following sections describe the detailed changes to the "SQL Reference" and the "Embedded SQL Programming Reference".

    Changes to the Embedded SQL Programming Guide

    In Chapter 6 of the "Embedded SQL Programming Guide", under the heading "User-Defined Functions (UDF)", in the Example "Table Function Returning Document IDs", "FINAL CALL" should now read "NO FINAL CALL", and in the following paragraph note that FINAL CALL need not be specified for each table function.

    In Chapter 7 of the "Embedded SQL Programming Guide", under the heading "Interface between DB2 and a UDF", in the section "The Arguments Passed from DB2 to a UDF", in the description for the scratchpad argument, the text beginning "The actual..." should be replaced by:

    For table functions, the scratchpad is initialized as above only for the very first call to the UDF if FINAL CALL is specified on the CREATE FUNCTION. This "very first call" has type FIRST. After this call, the scratchpad content is totally under control of the table function.

    If NO FINAL CALL was specified or defaulted, then the scratchpad is initialized as above for each OPEN call, and the scratchpad content is completely under control of the table function between OPEN calls. (This can be very important for a table function used in a join or subquery. If it is necessary to maintain the content of the scratchpad across OPEN calls, then FINAL CALL must be specified in your CREATE FUNCTION statement. With FINAL CALL specified, in addition to the normal OPEN, FETCH and CLOSE calls, the table function will also receive FIRST and FINAL calls, for the purpose of scratchpad maintenance and resource release.)

    Also, in the description of the call-type argument, the second sentence should be replaced by the following sentence:

    For external scalar functions this argument is only present if FINAL CALL is specified in the CREATE FUNCTION statement, but for external table functions it is ALWAYS present.

    After that first paragraph, add the following new paragraph:

    Note that even though all the current possible values are listed below, your UDF should contain a switch or case statement which explicitly tests for all the expected values, rather than containing "if A do AA, else if B do BB, else it must be C so do CC" type logic. This is because it is possible that additional call types may be added in the future, and if you don't explicitly test for condition C you will have trouble when new possibilities are added.

    In the same section, where the values for the call-type argument are explained for Table Functions, the text should be amended as follows:

    Under the heading "Summary of Argument Use", for the argument scratchpad and call-type, add the text ", and optionally FIRST and FINAL" in both cases.

    In Chapter 7 of the "Embedded SQL Programming Guide", under the heading "Table Function Considerations", under the first bullet, there are now five call types instead of three: add FIRST and FINAL to the list.

    Also, add a new bullet in this section as well, which should read as follows:

    The error processing model for table function calls is as follows:

    1. If FIRST call fails, no further calls are made.

    2. If FIRST call succeeds, FINAL call is made.

    3. If OPEN call fails, no FETCH or CLOSE call is made.

    4. If OPEN call succeeds, then FETCH and CLOSE calls are made.

    In the "Weather Table Function" example in Chapter 7, the UDF definition should specify NO FINAL CALL, and note that FINAL CALL is no longer mandatory for a table function (that is, ignore the statement that says it is mandatory).

    In Chapter 15 of the "Embedded SQL Programming Guide", entitled "Programming in Java", under the heading "Creating Java UDFs and Stored Procedures", the second sentence of the second paragraph should be changed to read as follows:

    Once you create and register these UDFs and stored procedures, and place the Java classes in the correct file location, described in "Where to Put Java Classes" on page 514, you can then (for UDFS) reference them in your SQL, or (for stored procedures) call them from you application written in any supported language.

    And the sentence following that one should be removed.

    In Chapter 15 of the "Embedded SQL Programming Guide", under the heading "Creating and Using Java User-Defined Functions", the fourth sentence of the first paragraph should be changed to read:

    You can then refer to it in the SQL of your application.

    In the subheading "Changing How a Java UDF Runs" under that same heading, the first three paragraphs should be replaced with the following five:

    Typically, DB2 calls a UDF many times, once for each row of an input or result set in a query. If SCRATCHPAD is specified in the CREATE FUNCTION statement of the UDF, DB2 recognizes that some "continuity" is needed between successive invocations of the UDF, and therefore the implementing Java class is not instantiated for each call, but generally speaking once per UDF reference per statement. Generally it is instantiated before the first call and used thereafter, but may for table functions be instantiated more often-- see the NO FINAL CALL execution model in the subsection which follows this one. If, however, NO SCRATCHPAD is specified for a UDF, either a scalar or table function, then a clean instance is instantiated for each call the the UDF, by means of calling the class constructor. A scratchpad may be useful for saving information across calls to a UDF. Whereas for C, C++ and OLE UDFs the scratchpad is maintained by DB2, in Java the UDF can simply use instance variables. For table functions using a scratchpad, you can control when you get a new instance by use of the FINAL CALL / NO FINAL CALL option on the CREATE FUNCTION statement, as indicated by the execution models in the subsection which follows this one. For scalar functions, you use the same instance for the entire statement. Another choice you have is to use the DB2 provided Java methods getScratchpad() and setScratchpad(), in which case you will be using the DB2-managed scratchpad. The ability to achieve continuity between calls to a UDF my means of a scratchpad, is controlled by the SCRATCHPAD / NO SCRATCHPAD option of CREATE FUNCTION, regardless of whether the DB2 scratchpad or instance variables are used. Please note that every reference to a Java UDF in a query is treated independently, even if the same UDF is referenced multiple times. This is the same as what happens for OLE, C and C++ UDFs as well. At the end of a query, if you specify the FINAL CALL option for a scalar function then the object's close() method is called. For table functions the close() method will always be invoked as indicated in the subsection which follows this one. If you do not define a close() method for your UDF class, then a stub function takes over and the event is ignored.

    And in the next paragraph, which begins "If you specify the ALLOW PARALLEL ...", the last sentence should be removed.

    Following the subsection "Changing How a Java UDF Runs", add a new subsection at the same level, entitled "Table Function Execution Model for Java", which contains the following:

    For table functions written in Java, it is important to understand what happens at each point in DB2's processing of a given statement which is significant to the table function. The table which follows details this information. The bottom part of each box hints what the code might be written to do for a typical table function which pulls some information in from the Web). Covered are both the NO FINAL CALL and the FINAL CALL cases, assuming SCRATCHPAD in both cases.

                  |                              |
      Point     | |    NO FINAL CALL             |    FINAL CALL
      in        | |    LANGUAGE JAVA             |    LANGUAGE JAVA
      scan      | |    SCRATCHPAD                |    SCRATCHPAD
      time      V |                              |
      ------------+------------------------------+------------------------------
      Before the  | No calls.                    | Class constructor is called
      first OPEN  |                              |  (means new scratchpad).
      for the     |                              | UDF Method is called with
      table func. |                              |  "FIRST" call.
                  |                              |- - - - - - - - - - - - - - -
                  |                              | Constructor initializes
                  |                              |  class and scratchpad
                  |                              |  variables.
                  |                              | Method connects to the Web
                  |                              |  Server.
                  |                              |
      ------------+------------------------------+------------------------------
      At each     | Class constructor is called  | UDF Method is called with
      OPEN of the |  (means new scratchpad).     |  "OPEN" call.
      table func. | UDF Method is called with    |
                  |  "OPEN" call.                |
                  |- - - - - - - - - - - - - - - |- - - - - - - - - - - - - - -
                  | Constructor initializes      | Method opens the scan for
                  |  class and scratchpad        |  whatever Web data it wants.
                  |  variables.                  |  (Might be able to avoid
                  | Method connects to the Web   |  reopen after a CLOSE repo-
                  |  Server, and opens the scan  |  sition, depending on what
                  |  for Web data.               |  is saved in scratchpad!)
                  |                              |
      ------------+------------------------------+------------------------------
      At each     | UDF method is called with    | UDF Method is called with
      FETCH for   |  "FETCH" call.               |  "FETCH" call.
      new row of  |- - - - - - - - - - - - - - - |- - - - - - - - - - - - - - -
      table func  | Method fetches and returns   | Method fetches and returns
      data.       |  next row of data, or EOT.   |  next row of data, or EOT.
                  |                              |
      ------------+------------------------------+------------------------------
      At each     | UDF method is called with    | UDF Method is called with
      CLOSE of the|  "CLOSE" call.               |  "CLOSE" call.
      table func. | "close" method is called if  |
                  |  it exists for class.        |
                  |- - - - - - - - - - - - - - - |- - - - - - - - - - - - - - -
                  | Method closes its Web scan   | Method might reposition to
                  |  and disconnects from the    |  the top of the scan, or
                  |  Web Server.                 |  close the scan.  It can
                  | "close" does not need to do  |  save any state in the
                  |  anything.                   |  scratchpad, which will
                  |                              |  persist.
                  |                              |
      ------------+------------------------------+------------------------------
      After the   | No calls.                    | UDF Method is called with
      last CLOSE  |                              |  "FINAL" call.
      of the table|                              | "close" method is called if
      func.       |                              |  it exists for class.
                  |                              |- - - - - - - - - - - - - - -
                  |                              | Method disconnects from the
                  |                              |  Web Server.
                  |                              | "close" does not need to do
                  |                              |  anything.
                  |                              |
      ------------+------------------------------+------------------------------
    

    Some notes on this table:

    1. By "UDF Method" we mean the Java class method which implements the UDF- the method identified in the EXTERNAL NAME clause of the CREATE FUNCTION statement.

    2. For table functions with NO SCRATCHPAD specified, the calls to the UDF method are as indicated in this table, but because the user is not asking for any continuity via a scratchpad, DB2 will cause a new object to be instantiated before each call, by calling the class constructor. It is not clear that table functions with NO SCRATCHPAD (and thus no continuity) can do very useful things, but they are supported.

    3. These execution models imply the existence of a new class method which which enables the UDF to identify the call type. This method is provided with DB2 in the COM.ibm.db2.app.UDF class, and will be defined as:
           public int getCallType () throws Exception
      

    4. These models are TOTALLY COMPATIBLE with what happens with the other UDF languages: C and C++ and OLE.

    In Chapter 15 of the "Embedded SQL Programming Guide", under the heading "Classes for Java Stored Procedures and UDFs", and further under the subheading "COM.ibm.db2.app.UDF", the paragraph describing the "public void close()" method should be changed to read as follows:

    This method is called by the database for scalar functions at the end of a statement evaluation, if the UDF was created with the FINAL CALL option, and is analogous to the final call for a C function. For table functions, it is called after the CLOSE call to the UDF method (if NO FINAL CALL is coded or defaulted), or after the FINAL call (if FINAL CALL is coded). If a Java UDF class does not implement this function, a no-op stub function will handle and effectively ignore this event.

    Immediately following the description for "public void close()", add material for the new method "public int getCallType() throws Exception", which reads as follows:

    This function is used by table function UDF methods to find out the call type for a particular call. It returns a value as follows (symbolic defines are provided for these values in the Com.ibm.db2.app.UDF class definition):

    3.7.7.3 Other Revisions to the Book

    The following changes related to the Embedded SQL Programming Guide have been documented in the Release Notes for FixPaks prior to this release.

    Revisions to Chapter 1

    In chapter 1 of the ESPG, in the first paragraph under the heading "DB2 Bind File Dump Tool-db2bfd", there is a reference to "Version 3"; this should be changed to Version 5.

    Revisions to Chapter 4

    In chapter 4, the section "Join Strategies in a Partitioned Database" has several subsections showing examples of the different join strategies. In the pieces of artwork, all occurrences of "LINEITEMS" should be changed to "LINEITEM". Also, the subsection "Broadcast Inner-Table Joins", has incorrect text in the example shown. The text of the example should be:

       The LINEITEM table is sent to all database partitions that have the 
       ORDERS table. Table queue q3 is broadcast to all database partitions
       of the outer table.
    

    Revisions to Chapter 7

    The following changes pertain to chapter 7:

    Revisions to Chapter 9

    In chapter 9, in the section "Accessing DRDA Servers", the second paragraph in point 1 should read:

       For IBM products, consult the IBM SQL Reference, Version 5.2 (S10J-8165), before
       you start coding.
    

    Revisions to Chapter 15

    The following changes pertain to chapter 15:

    The following information should be added after the second paragraph in the section "Java UDFs and Stored Procedures":

       When creating a stored procedure in the Java
       language, you must use the CREATE PROCEDURE
       statement to register the procedure to the system
       catalog table SYSCAT.PROCEDURES.  For more
       information, refer to the section on the CREATE
       PROCEDURE statement in the SQL Reference.
    

    The following is a limitation of the Java UDF/stored procedure support: On a mixed code page database server, Java user-defined functions and stored procedures cannot use CLOB type arguments, because random access on character boundaries on large mixed code page strings has not yet been implemented. Full support for all LOB types is intended for SBCS databases. For mixed databases, support is intended for the BLOB and the DBCLOB types. As a workaround, applications running on a mixed database system should convert CLOB arguments to DBCLOB, LONG VARGRAPH, or LONG VARCHAR types. For UDFs, this can be done with the CAST operator.

    In appendix B, which describes the sample programs, references (in table 24) to the loblocud, db2uext2, and autoloader samples should be removed. For additional information, also refer to Revisions to Sample Programs and Other File Changes.

    In the index, java_heap_sz is incorrectly referred to as java_heap_size.

    Revisions to Sample Programs

    Revisions to sample programs were made for various languages on the following platforms: AIX, HP-UX, OS/2, Solaris, Windows NT, and Windows 95. The revisions are to correct some code errors and to make better use of API calls within the programs. Some programs have been made generic for all platforms: before they were only available on specific platforms; for example, 'makeapi.sqc'. Also, the interface has been improved for several programs to better guide the user on program input, and to give more informative output. Many redundant files have had their file contents deleted, replaced by the comment "This file is not needed". Where a new file replaces the redundant file's functionality, a reference to this is also provided.

    The following is a list of the updated files. Each entry contains the name of the file, its language, and the platforms for which it has been changed. Where the same file has been revised in more than one language, one file name is given with multiple extensions, as in "dbconf.c/.cbl/.f/.for". "COBOL" refers to both IBM and Micro Focus COBOL, unless otherwise indicated. "All platforms" refers to the following platforms only: AIX, HP-UX, OS/2, Solaris, Windows NT, and Windows 95. In some situations, a file may not be available on a specific platform; if you are not sure, refer to the README file in the appropriate samples directory. The file entry also contains a comment describing the nature of the change. The changes are as follows:

    adhoc.sqc
    C for all platforms

    Fixed memory leak and improved user interface.

    blobfile.cmd
    REXX on AIX, OS/2, and Windows NT

    The correct file version is now available for OS/2.

    dbconf.c/.cbl/.f/.for
    C, COBOL, FORTRAN for all platforms.

    Fixed 'version' parameter error in API call. Improved the user interface. Recoded Micro Focus COBOL version to make it generic for all platforms.

    d_dbconf.cbl
    Micro Focus COBOL for all platforms.

    Recoded to make generic for all platforms.

    d_dbmcon.cbl
    Micro Focus COBOL for all platforms.

    Recoded to make generic for all platforms.

    da_manip.h/.sqc
    C for all platforms

    Redundant files: contents deleted.

    dbcat.f/.for
    FORTRAN for all platforms

    Fixed 'version' parameter error in API call.

    dbmconf.cbl/.cmd
    Micro Focus COBOL for all platforms and REXX on AIX, Windows NT, and OS/2

    Recoded Micro Focus COBOL version to make it generic for all platforms. The correct REXX version is now available for OS/2.

    dbinst.for
    FORTRAN for OS/2

    Improved user interface.

    dbsnap.cbl
    IBM COBOL for all platforms

    Fixed 'version' parameter error in API call.

    dbstat.sqb
    Micro Focus COBOL for all platforms

    Fixed 'version' parameter error in API call.

    db_udcs.for
    FORTRAN for OS/2

    This program is now available for OS/2 FORTRAN.

    ebcdicdb.for
    FORTRAN for OS/2

    This program is now available for OS/2 FORTRAN.

    fillcli.sqc
    C for all platforms

    This is a client program; the server program is fillsrv.sqc. These programs have been extensively rewritten, combining the functionality of the supporting programs da_manip, system, and tabinfo (which are now redundant). The use of APIs, demonstration of SQLDA structures, and user interface have all been improved.

    fillsrv.sqc
    C for all platforms

    This is a server program; the client program is fillcli.sqc (see that entry for more information).

    inpsrv.def
    Micro Focus on OS/2

    Redundant file: contents deleted, as compiler does not need definition file for stored procedures.

    inpcli.old
    C for all platforms

    Redundant file: contents deleted.

    inpsrv.old
    C for all platforms

    Redundant file: contents deleted.

    largevol.sqc
    C for all platforms

    This program is AIX-specific: file contents were deleted on the HP-UX, OS/2, Solaris, Windows NT, and Windows 95 platforms.

    lobeval.cmd
    REXX on AIX, Windows NT and OS/2

    The correct version is now available for OS/2.

    makeapi.sqc
    C for all platforms

    This replaces the specific program files for AIX and OS/2 with a generic program file that is now available for all platforms.

    monreset.f/.for
    FORTRAN program for all platforms

    Fixed 'version' parameter error in API call.

    monsz.cbl
    IBM COBOL for all platforms

    Fixed 'version' parameter error in API call.

    outsrv.def
    Micro Focus COBOL on OS/2.

    Redundant file: contents deleted, as compiler does not need definition file for stored procedures.

    inpcli.old
    C for all platforms

    Redundant file: contents deleted.

    inpsrv.old
    C for all platforms

    Redundant file: contents deleted.

    qload.sqb/.sqf/.sqc
    COBOL, FORTRAN, and C for all platforms

    Improved interface provides more information and eliminates extraneous 'load file' error.

    rechist.c/.sqc
    C for all platforms

    The non-embedded SQL program rechist.c has been replaced by the embedded SQL program rechist.sqc. The new file corrects a database connect error that occurred with rechist.c.

    sws.cbl
    IBM COBOL for all platforms

    Fixed 'version' parameter error in API call.

    system.c/.h
    C for all platforms

    Redundant files: contents deleted.

    tabinfo.c/.h
    C for all platforms

    Redundant files: contents deleted.

    tabspace.sqb/.sqf
    COBOL and FORTRAN for all platforms

    Improves use of APIs to now demonstrate multiple table spaces.

    tblsrv.c
    C for all platforms

    Corrected error in API call to shared library.

    Other File Changes

    The makefiles, where needed, have been updated to reflect the changes described in the previous section. For example, the C makefiles no longer create and link in the object files da_manip.obj, system.obj and tabinfo.obj for the stored procedure fillsrv.

    The OS/2 command files for IBM COBOL and FORTRAN, and their respective makefiles, now use a stack size of 64000: the stack size link option for COBOL is now "/ST:64000", and for FORTRAN it is now "stack=64000". It was found that some of the stored procedure programs needed a larger stack size to run correctly.

    The following command and batch file changes have been made:

    bldf32.cmd
    FORTRAN for OS/2

    Redundant file: contents deleted.

    embprep.bat
    COBOL for Windows NT and Windows 95

    The correct version of this file is now available.


    3.8 Installing and Configuring DB2 Clients

    3.8.1 Configuring Client to DB2 Server Communications Using the CCA

    A remote system may not be detected if the client is on a different token ring than the server. Both the remote system and the system that initiates the discovery request must be on the same token ring in order for search discovery to work.

    The TCP/IP host name returned to a client by SEARCH discovery is the same host name that is returned by the DB2 server system when a TCP/IP host name command is issued. On the client, the IP address that this host name maps to is determined by either the TCP/IP domain name server (DNS) configured on the client machine or, if a DNS is not configured, a mapping entry in the client hosts file. If multiple adapter cards are configured on the DB2 server system, ensure that TCP/IP is configured on the server to return the correct host name when a host name command is issued, and that the DNS or local client hosts file on the client maps the host name to the desired IP address.


    3.9 Messages Reference

    3.9.1 Error in Description of DBI1768W

    Under the "Action" section, references to "sqllib/profile" should be changed to "sqllib/db2profile".

    3.9.2 Changed/Additional Reason Codes for SQL0270N

    The following reason code for message SQL0270N has been changed:

    Under "Cause":
     
       23  REPLICATED can only be specified for a summary table.
     
    Under "Action":
     
       23  Either remove the REPLICATED specification or ensure that 
           the CREATE TABLE is specified in a summary table definition.
    

    The following two reason codes have been added to message SQL0270N:

    Under "Cause":
     
       30  Typed tables and typed views cannot be defined in
           a CREATE SCHEMA statement.
     
       31  A partitioning key cannot be defined with more than 500 columns.
     
    Under "Action":
     
       30  Issue the CREATE statement for the typed view or typed table 
           outside of the CREATE SCHEMA statement.
     
       31  Reduce the number of columns in the partitioning key.
    

    3.9.3 New Description for SQL0351N

    Message: LOB or DATALINK data in position "<position-number>" of the select-list cannot be sent using DRDA protocol.

    Cause: LOB or DATALINK data, or distinct types based on LOB or DATALINK data, cannot be flowed using the DRDA protocol. "<position-number>" is the position of the element with a LOB or DATALINK data type in the select-list.

    The statement cannot be processed.

    Action: Ensure that LOB or DATALINK data is not being retrieved when using DRDA, by excluding them from the select-list. For LOB data, try selecting smaller pieces of the value by using CHAR(SUBSTR(CLOB)). For DATALINK data, try using a function such as DURLCOMPLETE.

       sqlcode:  -351
       sqlstate:  56084
    
    
    

    3.9.4 New Description for SQL0352N

    Message: LOB or DATALINK data in position "<position-number>" of the input-list cannot be sent using DRDA protocol.

    Cause: LOB or DATALINK data cannot be flowed using the DRDA protocol. "<position-number>" is the position of the element with a DATALINK data type in the input-list.

    The statement cannot be processed.

    Action: Ensure that LOB or DATALINK data is not being sent when using DRDA, by excluding it from the input-list. An alternative is to try building a value indirectly using the DLVALUE function.

       sqlcode:  -352
       sqlstate:  56084
    
    
    

    3.9.5 New Description for SQL0357N

    Message: The DB2 File Manager "<server-name>" is not currently available. Reason code = "<reason-code>".

    Cause: A reference to a DATALINK value required access to the DB2 File Manager "<server-name>". The DB2 File Manager is not currently available as indicated by the reason code.

       01 The DB2 File Manager in a DATALINK value is not available.
     
       02 The database server, instance, or database from which the operation was
          attempted is not registered with the DB2 File Manager in a DATALINK value.
     
       03 Restart recovery is pending or in progress on the DB2 File Manager.
     
       04 The DB2 File Manager in a DATALINK value is registered with the database
          but is an unknown server.
     
       05  An error occurred while communicating to the DB2 File Manager in a DATALINK
           value.
    

    The statement cannot be processed.

    Action: The action depends on the reason code as follows.

       01 The DB2 File Manager or a communication link may be down. Wait
          a while and try again, or check with a system administrator for the DB2
          File Manager. If the problem persists, disconnect the application from the
          database, and retry after connecting again.
     
       02 Register the database server, instance, or database with the DB2 File Manager.
     
       03 Wait for the restart recovery to complete on the DB2 File Manager.
          If the problem persists, check if the registration mentioned in the text
          for reason code 02 above has been done. This might be one of the 
          reasons for the restart recovery not completing successfully.
     
       04 Check that the DB2 File Manager configured to the database is available on
          the network.
     
       05 Check that the DB2 File Manager and the communication link are up.
          If the problem persists, disconnect the application from the database,
          and retry after connecting again.
     
       sqlcode:  -357
       sqlstate:  57050
    

    3.9.6 New Description for SQL0432N

    The description for SQL0432N has been changed to include the same error for reference types:

    Message: A parameter marker cannot have the user-defined type name or reference target type name "<udt-name>".

    Cause: A parameter marker in the statement has been determined to have the user-defined type "<udt-name>", or a reference type with the target type "<udt-name>", based on the context in which it is used. A parameter marker cannot have a user-defined type or reference type as its data type, unless it is part of an assignment (VALUES clause of INSERT, or SET clause of UPDATE), or it is being explicitly cast to a user-defined distinct data type, or reference data type, using the CAST specification. The statement cannot be processed.

    Action: Use an explicit cast to the user-defined distinct data type, or reference data type for the parameter marker. An alternative is to cast the columns that are user-defined distinct data types to their corresponding source data type, or columns that are reference data types to their corresponding representation type.

       sqlcode:  -432
       sqlstate:  42841
    

    The text for SQLSTATE 42841 has been changed to:

       42841  A parameter marker cannot be a user-defined type or a reference type.
    

    3.9.7 New Description for SQL0680N

    Modified Cause: The maximum number of columns permitted for each table is based on the page size of the table space. The limits for tables are:

    The number of columns may have exceeded the maximum allowed in a temporary table with any of the temporary table spaces available to process the statement.

    New Action: If the error occurs processing a query, create a temporary table space of the largest page size supported if one does not already exist. If such a table space already exists, eliminate one or more columns from the temporary table.

    3.9.8 Additional Reason Code for SQL0903N

    Reason code 3 for message SQL0903N has been changed to:

       3. One of the DB2 File Managers participating in the unit of work was unable to
          prepare to commit.
    

    3.9.9 Additional Reason Code for SQL0911N

    There is a new reason code for message SQL0911N:

       72. Transaction has been rolled back because of an error
           concerning a DB2 File Manager involved in the transaction.
    

    3.9.10 New Description for SQL1339N

    The following information has been added to the "Cause" section:

       The error tokens will not be returned for CLI/ODBC applications.
       CLI/ODBC applications can use SQLGetDiagRec, SQLGetDiagField,
       or SQLError APIs to get more information about each error.
    

    3.9.11 SQL5048N or SQL0901N When Using Change Password Support

    If message SQL5048N or SQL0901N is encountered when using DB2 Version 5.2 Change Password support, the most likely cause of the error is that the release level of the database client is not supported by the release level of the database server.

    These messages may be returned from a CONNECT or ATTACH request for which a new password was specified and AUTHENTICATION=CLIENT is being used. If so, verify that the local database catalog entry for the named database alias does not specify AUTHENTICATION=SERVER.

    If the above errors are returned from a CONNECT OR ATTACH request with a new password for a DB2 Common Server Version 2 or DDCS Version 2 multi-user gateway, the local database catalog entry for the database alias must specify AUTHENTICATION=CLIENT.

    3.9.12 Additional Reason Code for SQL20053N

    The following reason code has been added to message SQL20053N:

    Under "Cause":
     
       6.  The table or view in the FROM clause of every subview in a
           typed view hierarchy must use OUTER if any subview uses OUTER.
     
    Under "Action":
     
       6.  If this is the first subview to use OUTER, change the FROM clause
           so that OUTER is not used.  If the superview uses OUTER,
           include OUTER in the FROM clause of the subview.
    

    3.9.13 New Message Text for SQL20056N

    Following is the updated message text for SQL20056N:

       Processing on DB2 File Manager "<server-name>" encountered an
       error. Reason code = "<reason-code>". Additional diagnostic 
       information "<diag-token>".
    
    Note:Currently "<diag-token>" will always be set to "UNKNOWN".

    3.9.14 Additional Reason Code for SQL30083N

    The following reason code for change password support, when it fails because of an invalid user name or password, has been added to message SQL30083N:

    Under "Cause":
     
       24.  Username and/or password invalid.
            This is returned when a change password fails due
            to username or original password errors.
    

    3.10 Quick Beginnings

    3.10.1 Installing DB2 on NEC PC98 Machines Running Windows 95

    When you install DB2 with documentation on an NEC PC98 running Windows 95, the installation stops at 96%. To complete the installation:

    1. End the IMQCRINS.EXE process. To end this process, press <CRTL><ALT><DELETE> to open the Task Manager. Select the IMQCRINS process and click on the End push button.

    2. When the installation has completed, reboot the system.

    3.10.2 Uninstalling DB2 on NEC PC98 Machines Running Windows 95

    If you have installed DB2 with documentation on an NEC PC98 running Windows 95, the uninstall operation stops before it has completed. To complete the uninstall operation:

    1. End the UNINSTNQ.EXE process. To end this process, press <CRTL><ALT><DELETE> to open the Task Manager. Select the UNINSTNQ process, and click on the End push button.

    2. Delete the imnnq_95 directory from the drive where DB2 was installed.

    3.10.3 Planning for Installation (Software Requirements/Server Product Requirements)

    Since HP is discontinuing support for NETWARE products, IPX/SPX is not supported on HP-UX Version 11.0.

    3.10.4 Planning for Installation (Client Product Requirements/Software Requirements for OS/2 Clients)

    PTF (Program Temporary Fix) 3 for ADSTAR Distributed Storage Manager (ADSM) Version 3 is required for an OS/2 client to work with DB2.

    3.10.5 Planning for Installation (DB2 for AS/400 SNA Connections to DB2 Universal Database for AIX, OS/2, and Windows NT)

    Two phase commit using SNA is not supported when connecting from DB2 for AS/400 to DB2 Universal Database Version 5.2 for AIX. It is supported when connecting from DB2 for AS/400 to DB2 Universal Database Version 5.2 for OS/2 and Windows NT.

    3.10.6 Planning for Installation (Software Prerequisites/DB2 for OS/390 Recommended Fixes)

    When accessing a DB2 Universal Database server from a DB2 for OS/390 host the following DB2 for OS/390 PTFs are required:

    3.10.7 Getting Started with DB2 Universal Database (Changing Passwords)

    The ability to change a password at a DB2 server from a DB2 client is limited to the following DB2 servers:

    3.10.8 Getting Started with DB2 Universal Database (Counting Concurrent Users on AIX)

    Chapter 15 of the Quick Beginnings for UNIX** book refers to the Nodelock Administration Tool (NAT), which is part of the License Use Management Administration Runtime Kit (LUM ARK). To count concurrent users on AIX, the LUM ARK must be installed on your system with the NAT. On some versions of LUM ARK, the NAT is in an optional file set. Please refer to your LUM documentation for more information. You can visit the IBM License Use Management Web site at:

       http://www.software.ibm.com/is/lum
    

    to download the latest LUM ARK and publications. For your convenience, a copy of the LUM ARK is included on the DB2 CD in the /cdrom/LUM directory.

    3.10.9 Working with Instances (Adding a Database Partition Server to an Instance, Using DB2 Extended Enterprise Edition for Windows NT/Domain User ID Requirement for Using Raw Device)

    The Quick Beginnings for DB2 Extended Enterprise Edition for Windows NT book states that a domain user name is required to create a database partition server, and is used to log on when DB2 is started as a Windows NT service. Note, however, that if raw devices are used, the domain user name must also have local administrative authority, or the user will not have access to the raw devices.

    3.10.10 Migrating from Previous Versions and Releases

    As a result of optimizer enhancements, the plan for any query could change, if rebound. Although every precaution is taken to ensure that the changed plan is at least as good as the plan chosen by the previous version, there is no guarantee of that, since certain changes could cause a different plan to be chosen, and it is not possible to test the virtually unlimited number of scenarios that a user could create.

    It is recommended that an EXPLAIN be run on all critical queries before migrating versions, in case those queries get rebound to a new plan. If this is done, both the plan and the configuration parameters upon which it is based (under the old release) will be known. This, in turn, will help the user identify the source of any differences under the new version, and restore the conditions for the old plan, if desired.

    3.10.11 Running Your Own Applications (Running Java Programs)

    DB2 does not support Java stored procedures and Java user-defined functions (UDFs) accessing DB2 databases on HP-UX and SCO UnixWare servers.

    3.10.12 Contents of the DB2 Products (Abbreviated Names for Locales)

    The abbreviated name of the Brazilian Portuguese locales for DB2 for Solaris and DB2 for SCO UnixWare 7 has been changed from "pt" to "pt_BR".


    3.11 Quick Beginnings for File Manager

    3.11.1 DB2 File Manager Cannot Be Installed on an DB2 Enterprise - Extended Edition System

    DB2 File Manager can only be used with DB2 for AIX Enterprise Edition. The File Manager cannot be used with databases on operating systems other than AIX, and cannot be used with DB2 Enterprise - Extended Edition (EEE) for AIX. DATALINK values cannot point to a DB2 EEE system; moreover, the DATALINK data type cannot be used on EEE systems to reference files on a DB2 File Manager.

    3.11.2 DLFM Administration User ID

    The DLFM administration user ID must be "dlfm" for this release.

    3.11.3 Using NFS to Access a Remote DLFS File System

    An SQL SELECT on a DATALINK column which was defined with the "READ PERMISSION DATABASE" option will return the URL or file name with an access token embedded within the name. This access token has an expiration time, as defined by the DL_EXPINT database configuration parameter. When using an NFS client to access such files, you may find that the access token does not expire appropriately. This can be due to caching done by the NFS client. It has been observed that the use of long file names (greater than 12 characters) may mitigate this problem.

    Whenever you remotely mount a DLFS file system via NFS, you may also want to include the mount option "noac". For example:

       mount -o noac birdcage:/dlink /dlink
    

    3.11.4 Restrictions Pertaining to Datalinks Clients

    Datalinks clients cannot be:

    3.11.5 Changed Setup Option for DLFM

    The command for DLFM setup has been changed to accept a dlfm_db configuration file. If the configuration file contains the setup options, the configuration options in the file are used instead of the defaults. The file is optional. If not specified, the defaults are used. The command syntax is now as follows:

       dlfm setup [<dlfm_db_config_file>]
    

    Following is a sample configuration file named dlfm_db.cfg:

    # Sample dlfm_db.cfg file for DLFM setup
    # Please note: the equal sign is needed between the option name and the value.
    # Any of the updateable DB2 database configuration parameters can be included in this file.
    # There are also three special DLFM-specific options which the user can specify:
    # DLFM_DB_DIR : directory where the dlfm_db database is to be created
    # DLFM_DB_CATTBL_DIR : directory where the catalog table space is to be located
    # DLFM_DB_TMPTBL_DIR : directory where the temporary table space is to be located
    # If there are no values for these options, or the options are not present,
    # default values are used.
    ####################
    DLFM_DB_DIR=
    DLFM_DB_CATTBL_DIR=
    DLFM_DB_TEMPTBL_DIR=
    LOCKTIMEOUT=60		# Default and recommended value for dlfm_db is 60
    LOGFILSIZ=2000		# Default and recommended value for dlfm_db is 2000
    LOGPRIMARY=6		# Default and recommended value for dlfm_db is 6
    MAXAPPLS=128		# Default and recommended value for dlfm_db is 128
    MAXLOCKS=100		# Default and recommended value for dlfm_db is 100
    

    3.11.6 Recovering from a Disk Crash on the File Manager Server

    This section describes how to perform recovery after a disk crash on the File Manager Server, and the backup strategies that the administrator must undertake to support such disaster recovery scenarios.
    Note:In the case of a machine crash on a DB2 File Manager, DB2 applications interacting with the DB2 File Manager can get hung. Use the FORCE APPLICATION command to force such applications off the system. In the case of a machine crash on a DB2 server, the affected DB2 File Managers should also be shut down, using the "dlfm shutdown" command. They can then be brought up again.

    If the disk containing user data crashes, all user files, along with the directory hierarchy of the file system, are destroyed. To recover from such a scenario, the administrator must make periodic backups of the file system containing the user data and directory hierarchy, so that it can be restored. The restored file system must preserve directory and file ownerships, and time stamps. After restoring the file system, the directory structure must be brought up to the point-in-time of the crash by applying the directory changes that occurred after the file system backup was taken. After this step, the RECONCILE command must be run on all tables containing files on the damaged disk. A utility, "db2_reconcile_aid" (located in sqllib\misc), is provided to simplify this task, and is described below.

    Notes:

    1. Files that are in linked state, and have the RECOVERY NO option set, are treated as follows:

    2. Files that are in a linked state, and have the RECOVERY YES option set will be treated as follows:

    3. Files that are in the unlinked state on the file server are not restored or checked for correctness.

    Backing up and Restoring the File System

    The following instructions are specific to AIX Version 4.1.5, and may not apply to other operating systems. Users must be logged in as root to perform backup or restore operations.

    Backup

    The backup should be made in Version 3 inode format:

    1. Unmount the file system to be backed up.
         System Storage Management --> File Systems --> Unmount a File System
      
    2. Backup the file system.
         System Storage Management --> File Systems --> Backup a File System
      

      An incremental backup strategy could be used to reduce recovery time. Level 0 refers to a full backup, and levels 1 through 9 refer to incremental backups. A level n backup backs up only those files that have changed since a level (n-1) backup. After a level n backup, the next backup to be taken will be a level (n+1) backup.

      A backup can also be invoked from the command line:

         % backup -<level> -uf <backup device> <filesystem>
       
         Examples:
            For a full backup use:
               % backup -0 -u -f/dev/rmt0 /dlfs1
            For the next incremental backup use:
               % backup -1 -u -f/dev/rmt1 /dlfs1
            The incremental backup after this will be:
               % backup -2 -u -f/dev/rmt2 /dlfs1
      
    3. Mount the file system that was just backed up.
         System Storage Management --> File Systems --> Mount a File System
      

    Restore

    A restore should be performed using one of the backups taken previously:

    1. Mount the device where the file system is to be restored.
         System Storage Management --> File Systems --> Mount a File System
      
    2. Restore the file system. The restore command recognizes the format of the backup.
         System Storage Management --> File Systems --> Restore a File System
      

    A restore can also be invoked from the command line. From the directory where the restore is to be done (that is, the mount point for the file system device), issue the following command:

       % restore -r -f <backup device>
    

    If an incremental backup strategy is being used, restore the newest level 0 backup, then restore the level 1 backup taken after the level 0 backup. Restore the level n backup taken after the level (n-1) backup. Ensure that the file "restoresymtable" in the root of the file system remains intact between restorations of incremental backups.

    Attention: Do not use the "-M" option during restoration. The "-M" option changes the time stamp of the files to the time that the file system was restored.

    If the backup or restore operation is being done through ADSM, a full backup by inode needs to be made after a restore operation to overwrite any previous backups.

    Dedicated media should be used when making backups.

    Restoring Only the Directories

    The user can interactively restore files using the "-i" option on the restore command:

       % restore -i -f <backup device>
    

    This provides the user with a list of directories or files in the backup, and takes the user into an interactive shell. Specific directories can be restored using the "-h" option.

    Bringing the File System Directory Hierarchy to the Current Point in Time

    The directory changes are logged in the file (err_log)/fsysadm.log, where (err_log) is the error log directory as specified in the /etc/sylog.conf file. This file is appended to, and will not be truncated. There is one entry for each event. Setting the attributes of a file is also logged. The format of the entry is:

       Time = <timestamp> EUID = <integer>  UID = <integer> GID = <integer> Mode = <octal>
       Action = <CREATE/REMOVE/SETATTR> Object type = <DIR/FILE> Path = <fully qualified name>
     
       where:
     
         Time is the time of the activity in local time.
         EUID is the effective user ID of the user performing the action.
         UID and GID are the user ID and group ID attributes of the file/directory
           that was created, or whose attributes were modified.
         Mode is the octal representation of the mode of the file/directory.
     
         Action can be CREATE (the file/directory was created),
           REMOVE (the file/directory was removed), or SETATTR (the mode
           of the file/directory was modified by the user).
         Object type can be DIR (directory), or FILE (file).
         Path is the fully qualified path of the file/directory.
    

    Running RECONCILE After Restoring A File System

    The db2_reconcile_aid utility provides a mechanism for checking and running RECONCILE on tables that are potentially inconsistent with the DATALINK file data on the file server after a disk failure on the file server. The syntax is as follows:

       db2_reconcile_aid -check -db <db_name> [-server_name <fileserver_name>]
          [-reportdir <report_directory>]
     
       where:
          -check:            List the tables that may need reconciliation.
                             No reconcile operation will be performed.
          db_name:           Name of the database for which the reconcile operation
                             needs to be performed.
          fileserver_name:   Name of the DLFM server for which the reconcile operation
                             is to be performed.  If no name is provided, all
                             the file servers will be reconciled.
          report_directory:  Directory containing a report for each of the reconcile
                             operations. For each table on which reconcile was performed,
                             files of the following format will be created:
                             <tbcshcema>.<tbname>.<ext>,
                             where <tbschema> is the schema of the table,
                             <tbname> is the table name, and <ext> is .ulk or .exp.
                             The .ulk file contains a list of files
                             that were unlinked on the file server, and the .exp file
                             contains a list of files that were in exception
                             on the file server. For more information, see the description
                             of the RECONCILE command in the Command Reference.
    
    
    

    3.11.7 DB2 File Manager Recovery Scenarios

    As with any system, it is possible for a failure to occur that requires a certain level of recovery. DB2's File Manager introduces a new level of complexity to several of the recovery scenarios. This section lists several possible failure scenarios and the steps required to recover from them.

    Definitions

       DLFS file system       - Registered prefix  (/dlink)
       DLFM backup directory  - Directory where files are backed up (/home/dlfm/dlfm_backup)
       DLFM home directory    - Home directory of DLFM user ID (/home/dlfm)
       DLFM DB2 database      - DB2 database that contains all meta-data (DLFM_DB)
       DB2 database           - Registered database that contains DATALINK data type (CROWN)
    

    Recommended Things to Do Prior to a Crash

    Place the DLFM database (DLFM_DB), the DLFS file systems, the DLFM backup directory, and the DLFM home directory on different file systems. Ensure they do not share disks.

    Back up the DLFS file system and the DLFM backup directory on a storage manager, such as IBM's ADSM. This will afford added protection from disk failure, in the event one occurs.

    Have one database associated with one or more DB2 File Managers. Avoid having two databases associated with one DB2 File Manager; otherwise, certain recovery scenarios will become more complex than is necessary.

    Perform full database backups of the DB2 databases (as well as the DLFM_DB database on the DB2 File Manager) at regular intervals.

    What Can Fail?

    Following are four possible failure components which require recovery:

    DB2 File Manager recovery scenarios will be discussed for each of these components.

    The following recovery scenarios may require operations to be performed on both the DB2 node and the DB2 File Manager node. Each step will be preceded by either "DB2:" or "DLFM:" to indicate the node on which the operation must be completed.

    The DB2 database will be referred to as "crown" throughout all examples, and the DB2 table containing the DATALINK column will be referred to as "datalinktable".

    Scenario #1a:

    Failure:

    DB2 database is lost or dropped; DB2 backup and log files are available.

    Recovery Steps:

       NODE                  OPERATION
     
       DB2:                  db2 "restore database crown"
       DB2:                  db2 "rollforward database crown to end of logs"
                                 (End of logs is always recommended over point-in-time.)
       DB2:                  db2 "reconcile table datalinktable"
    

    Scenario #1b:

    Failure:

    DB2 database was explicitly dropped; DB2 backup and log files are available.

    Recovery Steps: Ensure that the drop database operation is complete, and that all files associated with that database have been unlinked.

       NODE                  OPERATION
     
       DLFM:                 db2 "connect to dlfm_db"
       DLFM:                 db2 "select dbid, dbname, dbinst, hostname from dfm_dbid"
       DLFM:                 db2 "update dfm_dbid set action=5
                               where dbid=x'35B3D7BE0006BF7B'"
                                 (Set dbid equal to value found in previous step.)
       DB2:                  db2 "restore database crown"
       DB2:                  db2 "rollforward database crown to end of logs"
                                 (End of logs is always recommended over point-in-time.)
       DB2:                  db2 "reconcile table datalinktable"
                                 (Mandatory)
    

    Scenario #2:

    Failure:

    DLFM_DB is lost; backup, and all log files for the DLFM_DB database are available.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 db2 "restore database dlfm_db"
       DLFM:                 db2 "rollforward database dlfm_db to end of logs"
    

    Scenario #3:

    Failure:

    DLFM_DB is lost; backup of the DLFM_DB database is available, but not all log files are available.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 db2 "restore database dlfm_db"
       DB2:                  db2 "reconcile table datalinktable"
    

    Scenario #4:

    Failure:

    DLFS file system is lost.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 Restore the DLFS file system from your storage manager.
       DB2:                  db2_recon_aid crown
    

    Scenario #5:

    Failure:

    DLFM backup directory is lost.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 Restore the DLFM backup directory from your storage manager.
    

    Scenario #6:

    Failure:

    DLFS file system is lost; DLFM backup directory is lost.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 Restore the DLFM backup directory from your storage manager.
       DLFM:                 Restore the DLFS file system from your storage manager.
       DB2:                  db2_recon_aid crown
    

    Scenario #7:

    Failure:

    DLFM_DB is lost; backup, and all log files for the DLFM_DB database are available. DLFS file system is lost; DLFM backup directory is lost.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 db2 "restore database dlfm_db"
       DLFM:                 db2 "rollforward database dlfm_db to end of logs"
       DLFM:                 Restore the DLFM backup directory from your storage manager.
       DLFM:                 Restore the DLFS file system from your storage manager.
                                 (You need the directory structure.)
       DB2:                  db2_recon_aid crown
    

    Scenario #8:

    Failure:

    DLFM_DB is lost; backup of the DLFM_DB database is available, but not all log files are available. DLFS file system is lost; DLFM backup directory is lost.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 db2 "restore database dlfm_db"
       DLFM:                 Restore the DLFM backup directory from your storage manager.
       DLFM:                 Restore the DLFS file system from your storage manager.
                                 (You need the directory structure.)
       DB2:                  db2_recon_aid crown
    

    Scenario #9:

    Failure:

    DB2 database is lost; DLFM_DB is lost; backup, and all log files for the DLFM_DB database are available. DLFS file system is lost; DLFM backup directory is lost.

    Recovery Steps:

       NODE                  OPERATION
     
       DLFM:                 db2 "restore database dlfm_db"
       DLFM:                 db2 "rollforward database dlfm_db to end of logs"
       DLFM:                 Restore the DLFM backup directory from your storage manager.
       DLFM:                 Restore the DLFS file system from your storage manager.
       DB2:                  db2 "restore database crown"
       DB2:                  db2 "rollforward database crown to end of logs"
                                 (End of logs is always recommended over point-in-time.)
       DB2:                  db2 "reconcile table datalinktable"
    
    Note:Rollforward to a point-in-time (PIT) may not put tables that have all DATALINK columns defined as "recovery = no" into DataLink_Reconcile_Pending (DRP) state. For all such tables, insert a row with the DATALINK value after the rollforward to a PIT, issue a SET CONSTRAINTS statement to put the table in DRP, and then run the reconcile utility.

    3.11.8 Datalinks Configuration File Cannot be Created or Modified through the Command Line Processor (CLP)

    References to the command:

       db2 add file manager <hostname> <portnum>
    

    should be replaced by references to a new utility called db2dlcfg. The syntax of this utility is as follows:

       db2dlcfg -d <database name> -a <action> [-s <server host name>] [-p <port number>] -h
     
       where:
         database name     Represents the name of the database (mandatory).
         action            Represents the action that is to be performed (mandatory):
                             LIST - List all DB2 File Managers defined for this database.
                             ADD  - Add a single DB2 File Manager for access by this database.
         server host name  Represents the DLFM File Manager's fully qualified host name.
         port number       Represents the DLFM File Manager's port number.
         -h                Displays help information. When this option is specified,
                           all other options are ignored and only the help is displayed.
    

    For example:

       db2dlcfg -d SAMPLE -a LIST
       db2dlcfg -d SAMPLE -a ADD -s myhost.mydomain.mycompany.com -p 10001
    

    If moving from a previous version of DB2 File Manager, do the following:

    1. Issue db2stop.

    2. Remove all copies of the datalink.cfg file (keeping a backup is recommended).

    3. Recreate the datalink.cfg file by adding file servers, using the db2dlcfg utility. Add the file servers in exactly the same order.

    For example:

       cat datalink.cfg
       1     myfs1.mydomain.mycompany.com 10001
       2     myfs2.mydomain.mycompany.com 10001
       4     myfs2.mydomain.mycompany.com 10001
       (Note that the third one is missing.)
     
       mv datalink.cfg datalink.old
     
       db2dlcfg -d SAMPLE -a ADD -s myfs1.mydomain.mycompany.com -p 10001
       db2dlcfg -d SAMPLE -a ADD -s myfs2.mydomain.mycompany.com -p 10001
       db2dlcfg -d SAMPLE -a ADD -s nullfs.mydomain.mycompany.com -p 10001
       db2dlcfg -d SAMPLE -a ADD -s myfs4.mydomain.mycompany.com -p 10001
       (Note that the third one is null.)
    

    3.12 Changes to the Quick Beginnings Manuals Documented in the FixPaks

    The additional information in this section relates to the following DB2 Version 5.0 Quick Beginnings manuals:

    3.12.1 DB2 Products

    Reference is made in the DB2 manuals to the DB2 Application Developer's Kit. This product is now available in two editions, known as the IBM DB2 Personal Developer's Edition Version 5, and the IBM DB2 Universal Developer's Edition Version 5 products. Both editions are available on OS/2, Windows NT, Windows 95, and Windows 98 only.

    3.12.2 Planning for Installation

    The updates in this section relate to software prerequisites and fixes.

    3.12.2.1 OS/2 Software Requirements

    In the "Server Product Requirements" section, the following operating system information should be changed for the DB2UDB Enterprise and Workgroup Edition:

       From:                  To:
       --------------------         ---------------------------------------------
       OS/2 Warp Server SMP         OS/2 Warp Server Advanced V4 with SMP Feature
    

    A similar change must be made in the "Client Product Requirements" section for the DB2 Client Application Enabler for OS/2, the SDK and Net.Data:

       From:                  To:
       --------------------         ---------------------------------------------
       OS/2 Warp Server SMP         OS/2 Warp Server Advanced V4 with SMP Feature
    

    Possible Client-to-Server Connectivity

    Using IPX/SPX to communicate between Windows 95, Windows 98, or OS/2 clients and servers is not recommended. This connection is unreliable. Working with Novell, we have determined the cause to be at the IPX/SPX protocol stack level. The problem lies with the level of SPX I supported by Windows 95 and Windows 98, and the level of SPX I supported by OS/2. When Windows 95 or Windows 98 negotiates a connection, it specifies an SPX I level connection, but on Windows 95 or Windows 98, this includes SPX II level full-media size support. However, when OS/2 negotiates an SPX I connection, full-media size is not supported.

    Novell is currently developing full-media size support for OS/2 SPX I connections, for a consistent representation of SPX I connections. This will prevent connection terminations from occurring when an unexpected packet size is sent. If you would like the status of this development, you can call Novell and ask for the status of SPD147611.

    3.12.2.2 NetFinity Support Program Must Be Stopped - Windows NT

    The"Netfinity Support Program" service will affect the installation of DB2 UDB EEE for Windows NT when upgrading DB2 UDB.

    In order to upgrade DB2 UDB EE to DB2 UDB EEE, the "Netfinity Support Program" service should be stopped before the installation of DB2 UDB EEE is begun.

    3.12.2.3 Communications Server for Windows NT - Fixes Required

    When using DB2 Connect Enterprise Edition for Windows NT and IBM Communications Server for Windows NT (CS/NT), in order to enable the canceling of host queries (SQL CANCEL), you will require DB2 UDB Version 5.2 (or DB2 UDB Extended Enterprise Edition for Windows NT), and the APAR fixes JR11529 and JR11170 for CS/NT.

    3.12.2.4 AUTHENTICATION for DB2 UDB DRDA Application Server

    AUTHENTICATION DCS can now be used with DB2 UDB DRDA-AS to permit APPC connections from DRDA clients using security SAME (no password required), while at the same time enforcing SERVER authentication (which requires a password) for all other client requests.

    3.12.2.5 Client Application Enabler Upgrade Recommended for Partitioned Database Users

    When using a DB2 UDB V5.0 Client Application Enabler, problems can arise when using the Control Center to attach to an Extended Enterprise Edition (EEE) partitioned database instance.

    The Control Center originally provided with DB2 Connect and UDB Version 5 did not include the administrative functions required to administer partitioned database systems.

    As a result, it is necessary to upgrade DB2 clients in order to perform UDB EEE administrative functions. Possible indications that this is necessary include the following:

    In general, if you want to use the Control Center to administer a DB2 UDB EEE server, then you should upgrade the Client Application Enabler. The fix for this problem was first supplied in the first FixPak for DB2 UDB V5.0:

       AIX         U452196
       Solaris     U452197
       HP-UX       U452198
       OS/2        WR09003
       Windows NT  WR09004
       Windows 3.1 WR09006
    

    These fixes are obtainable from: http://www.software.ibm.com/data/db2/db2tech. The correct client level can also be obtained from the client pack that is included with DB2 UDB and DB2 Connect Enterprise Edition Version 5.2.

    DB2 UDB FixPaks are cumulative, so these fixes are also included FixPaks 2, 3, 4, 5, and 6, as well as in the Client Application Enabler included with DB2 UDB EEE for Windows NT, and for Solaris, Version 5.

    3.12.2.6 Client Application Enabler Upgrade Recommended for Windows ODBC Users

    When using ODBC applications from Windows NT and Windows 95 clients, we recommend that you upgrade the DB2 Client Application Enabler to fix pack level WR09014 or later.

    This fix is obtainable from: http://www.software.ibm.com/data/db2/db2tech. The correct client level can also be obtained from the client pack that is included with DB2 UDB and DB2 Connect Enterprise Edition Version 5.2.

    3.12.2.7 Recommended Fix Level for ADSM on AIX

    In an AIX partitioned database environment, after an online table space backup has been taken using ADSM, DB2 may fail if the database is restored.

    The symptom is that the online restore fails, and the DB2 instance is brought down (traps) with the diagnostic message SIG11sqloEDUCodeTrap. The solution to this problem is to install the ADSM Client fix pack 2.1.0.6 or higher.

    3.12.2.8 CS/NT is Required for Two-phase Commit Support on Windows NT

    Two-phase commit using SNA is now supported on Windows NT when using the DB2 Syncpoint Manager (SPM) function together with IBM Communications Server V5.01 for Windows NT (CS/NT).

    The SNA-based version of the SPM is part of the following products:

    The SPM permits DB2 UDB client applications to access host data through DB2 Connect EE with SNA two-phase commit data protection provided by the SPM. Similarly, host database applications can access data on DB2 UDB servers.

    Registering CS/NT as a Windows NT Service

    After installing IBM Communications Server for Windows NT (CS/NT) you should register it as a Windows NT Service. This will automatically start CS/NT when the machine is booted.

    To register CS/NT as an Windows NT Service execute the following command. Either:

       csstart  -a 
    

    To autostart CS/NT with the default configuration file, or:

       csstart -a c:\ibmcs\private\your.acg
    

    Where c:\ibmcs\private\your.acg is the name of the non-default CS/NT configuration file you wish to be used.

    The next time your machine is rebooted CS/NT will be started automatically with the requested configuration file.

    3.12.2.9 DCE Support on Windows NT and Windows 95

    DB2 Universal Database and DB2 Connect Version 5.2 provide support for:

    Two new DLLs have been provided:

    By default, db2dce.grd has been copied to db2dce.dll.
    Note:DB2 will only load db2dce.dll. You must copy dcedce.ibm to db2dce.dll if you want to use IBM DCE CDS.

    In addition to the existing support using APPC, IPX/SPX, NETBIOS, and TCP/IP, support for DCE using the Named Pipes (NPIPE) networking protocol is now provided. A control statement similar to the following example may now also be specified for a DCE object having the DB_Communication_Protocol attribute, with value:

       NPIPE;Computer_name;Instance_name
    

    For more information, see Appendix G of the Administration Guide.

    3.12.2.10 Windows NT Level Required for Raw Device Support

    For logging to raw devices with DB2 on Windows NT, Microsoft Service Pack 3 for Windows NT 4.0 is required.

    3.12.2.11 Assumption of SYSADM Authority (UNIX)

    In the Quick Beginnings manuals for UNIX, when discussing security issues, it is assumed that the user has not configured the SYSADM_GROUP parameter in the database manager configuration file. If the SYSADM_GROUP parameter is not configured, then the SYSADM group defaults to the primary group of the instance owner.

    The Quick Beginnings manuals always refer to the primary group of the instance owner as having SYSADM authority. However, if you have configured the SYSADM_GROUP parameter, you should take the references in the manuals to refer to the SYSADM group that you have defined in the database manager configuration file.

    3.12.3 Other Installation and Configuration Tasks

    The updates in this section relate to installation and configuration tasks.

    3.12.3.1 Configuring CS/NT for Syncpoint Manager (SPM)

    IBM Communications Server for Windows NT Version 5.01 is required if using the SPM over SNA. The SPM is also supported over TCP/IP in DB2 Version 5.2. Chapter 22 of "DB2 Connect Enterprise Edition Quick Beginnings" book describes SPM setup.

    The following additional instructions assume that you have already configured CS/NT for DB2 Connect. Refer to Chapter 14 of the DB2 Connect Enterprise Edition Quick Beginnings book.

    1. The LU to be used by the SPM can be defined in CS/NT using CS SNA Node Configuration/Configure Local LU 6.2.

    2. The LU must be syncpoint-enabled. This can be accomplished as follows:

      1. Start the CS/NT Configuration Verification program.

      2. Locate the required configuration file.

      3. Edit this file.

      4. Search for the LU definition to be used by the SPM. You will find a defintion such as the following:
           LOCAL_LU=(LU_NAME=SPMNAME                                
                     LU_ALIAS=SPMNAME                                                           
                     LU_SESSION_LIMIT=0                                                         
                     NAU_ADDRESS=0                                                              
                     ROUTE_TO_CLIENT=0                                                          
                     SYNCPOINT_SUPPORT=0)
        

      5. Change SYNCPOINT_SUPPORT=0 to SYNCPOINT_SUPPORT=1.

      6. Save the file.

    3. Verify the new configuration.

    4. Stop DB2.

    5. Ensure that the DB2COMM registry value includes "APPC". Refer to Chapters 24 and 39 of DB2 Connect EE "Quick Beginnings".

    6. Stop and restart the CS/NT node.

      To verify that syncpoint support has been enabled for this LU check the "Local LU6.2" information on the CS/NT SNA Node Operations. The LU should have "Yes" listed in the "Syncpoint Support" column.

    7. Update the database manager configuration to set DIAGLEVEL to 4:
         update dbm cfg using diaglevel 4
      

      You need to set this in order to be able to view possible SPM-related diagnostic messages.

    8. Start DB2.

    9. Examine db2diag.log. (When the environment variables DB2PATH and DB2INSTANCE are set to their respective defaults, this is found in the directory SQLLIB\DB2). There, if the the SPM has started successfully, you will see a message to that effect.

      Note also that when the SPM is started for the first time a directory \sqllib\spmlog is created. If this directory does not exist, or if the diagnostics indicate that the SPM has failed to start, then you must recheck your DB2 and CS/NT configurations.

    The Quick Beginnings manual for DB2 Connect Enterprise Edition will be updated to include this additional information.

    Additional Information when using the SNA SPM

    1. It is very important that CS/NT be started before DB2. DB2 will wait for CS/NT to start before completing its own startup procedures. Therefore, if CS/NT is NOT started before DB2, DB2 will appear to hang upon starting. DB2 is actually waiting for CS/NT to start. It is strongly recommended to register CS/NT as a Windows NT Service. See 3.12.2.8 , CS/NT is Required for Two-phase Commit Support on Windows NT. CS/NT will then be started automatically.

    2. While setting up your environment according to Chapter 22 of the "DB2 Connect Enterprise Edition Quick Beginnings", Microsoft Transaction Server is a Transaction Processing (TP) Monitor. Therefore there is no need for a Transaction Manager Database when using Microsoft Transaction Server.

    The Quick Beginnings manual for DB2 Connect Enterprise Edition will be updated to include this new information.

    3.12.3.2 Problem Affecting NIS Users on AIX Version 4.1.5

    On AIX Version 4.1.5 or higher, when a user is running Network Information System (NIS) for password authentication, the message DB21015E may be received when the command line processor times out.

    The command line processor back-end program cannot recognize the user-ID of the DB2 instance from the NIS master server in this case. To correct this problem:

    1. Remove the user-ID from the NIS master server.

    2. Create the user-ID in the /etc/passwd file locally on each machine, ensuring that the user-ID is placed before the NIS magic cookie in the file. The magic cookie looks like this:
         :!::::::
      

    3.12.3.3 db2cpic.dll - Extended SNA Security Codes on Windows NT and Windows 95

    Extended SNA Security Codes were not implemented by some SNA subsystem providers. This may affect customers using one or more of the following:

    A new DLL, called db2cpic2.dll has been provided in order to support Extended SNA Security Codes in these environments. The new DLL was originally packaged with FixPak 1 for DB2 Universal Database Version 5. It is identical to the original DLL db2cpic.dll, except that it includes a call to extract secondary information (cmesi()).

    Table 2. Which version of db2cpic.dll to use?
    If you have this SNA subsystem On Windows NT use On Windows 95 use
    IBM Communications Server for Windows NT db2cpic2.dll (new) db2cpic.dll (old)
    IBM Personal Communications for Windows (see note below) db2cpic2.dll db2cpic.dll
    Microsoft SNA Server db2cpic.dll db2cpic.dll
    Wall Data RUMBA (also Integrated SNA Support provided with DB2 Connect Personal Edition) db2cpic2.dll db2cpic2.dll

    If DB2 fails to load db2cpic2.dll, you can do the following in the directory where it has been installed:

       copy db2cpic2.dll db2cpic2.bak
       copy db2cpic.dll db2cpic2.dll
    

    This will make db2cpic2.dll the same as db2cpic.dll.

    Note:If you wish to use Extended Security Support with DB2 UDB Version 5.0 on Windows 95, we recommend using IBM Personal Communications (PComm) for Windows 95 Version 4.2 (not Version 4.1). Copy db2cpic.dll to db2cpic.bak and copy db2cpic2.dll to db2cpic.dll. This will make db2cpic.dll the same as db2cpic2.dll.

    3.12.3.4 DB2NTMEMSIZE Profile Variable for Windows NT

    In "Controlling Your DB2 Environment" in the Quick Beginnings manual for DB2 UDB Extended Enterprise Edition for Windows NT, it is incorrectly stated that "DB2NTMEMSIZE is used to override the upper limit of the DB2 shared memory segment".

    Windows NT requires that all shared memory segments be reserved at DLL initialization time in order to guarantee matching addresses across processes, and a new profile variable DB2NTMEMSIZE has been introduced to permit the user to override the DB2 defaults on Windows NT if necessary. In most situations the default values should suffice.

    The following is the list of memory segments and their default sizes:

      Memory Segment        Default Size     Override Option
      ----------------------------------------------------------------------------
      Database Kernel       16777216 (16MB)  DBMS:[number of bytes]
      MPP FCM Buffers       33554432 (32MB)  FCM:[number of bytes]
      Database Admin GUI    33554432 (32MB)  DBAT:[number of bytes]
      Fenced DARIs          16777216 (16MB)  APLD:[number of bytes]
    

    More than one segment may be overridden by separating the override options with ':'.

    For example, to limit DBMS to (approximately) 256K, and FCM to (approximately) 64MB, use:

      db2set DB2NTMEMSIZE=DBMS:256000:FCM:64000000 
    

    3.12.4 Snapshot Monitoring in the Control Center

    On OS/2, when you resize the Performance Graph View of the Snapshot Monitor to a smaller size, the Control Center may shut down without any error message.

    You cannot perform an action that either alters, changes, or deletes a database object (such as an instance or database) while you are performing snapshot monitoring on either that object, or on any it its child objects. (In addition, if you are monitoring a partitioned database system, you cannot refresh a view of partitioned database objects.) For example, you cannot monitor database A if you want to remove its instance. If, however, you are monitoring the instance only, you can alter database A.

    To stop all monitoring for an instance (including any of its child objects), select "Stop all monitoring" from the pop-up menu for the instance. You should always stop monitoring from the instance, as this ensures that all locks that are held by the performance monitor are released.

    3.12.5 Accessing DB2 Data from the Web

    Information on using Java with DB2 (JDBC for instance) is located on the internet at:

       http://www.software.ibm.com/data/db2/java/
    

    3.12.6 Setting Network-Related Parameters on the RS/6000 SP

    The following information should be added to the tip that is at the end of Step 1, "Prepare for Installation," in Chapter 6, "Installing DB2 Universal Database Extended Enterprise Edition," of the "IBM DB2 Universal Database Extended Enterprise Edition for AIX Quick Beginnings" book. The tip describes how to ensure that network-related parameters are set on all SP nodes.

    After the note that specifies "You can use the no -a command to view the current setting for network parameters," add the following paragraph:

    The above values are minimum values for the parameters. If you are already setting any of the network-related parameters to a larger value, do not set the parameter to the lower value listed above.

    After the sentence that begins "To view the configuration for css0," add the following paragraph:

    You should only use the following method to set the network-related parameters if you are not using the /tftpboot/tuning/cst file to tune the system.

    3.12.7 Setting up the CCA and the Control Center in a Partitioned Database Environment (DB2 Universal Database Extended Enterprise Edition for AIX)

    The following information should be added to Step 8, "Setting up the Client Configuration Assistant and the Control Center" in Chapter 6, "Installing DB2 Universal Database Extended Enterprise Edition," of the "IBM DB2 Universal Database Extended Enterprise Edition for AIX Quick Beginnings" manual.

    For performance reasons, it is not recommended that you set discover=SEARCH on the administration server that resides on a key catalog node or Control Center node.

    There are additional ways to distribute client requests amongst different coordinator nodes. You can use the Client Configuration Assistant IMPORT/EXPORT or manual catalog functions to distribute the workload. Another alternative is to use the LoadLeveler product to distribute client requests transparently.

    You cannot use the Server Communications Setup function in the Control Center to perform remote setup of nodes (database partition servers) in the partitioned database environment, if there is no administration server running on the node.

    Discovery is supported using the TCP/IP protocol.

    IPX/SPX file server addressing is not supported in the partitioned database environment.

    3.12.8 Migrating from Previous Versions (UNIX)

    In the "Verify that Databases Can Be Migrated" section, it is stated that DB2 must be stopped to prepare the instance for migration. This is incorrect. In order to successfully run the "db2ckmig" tool, the database manager must be running. In the same section, change the following:

       DB2DIR/instance/db2ckmig -e -a 0 -1 INSTHOME/migration.log
    

    to:

       DB2DIR/bin/db2ckmig -e -a 0 -l INSTHOME/migration.log
    

    In the "Migrate the DB2 Instance" section, the "db2imigr" command syntax is shown with "-u fencedID" as an optional parameter. The -u option is not required only when the DB2 Client Application Enabler product is installed; however, for all other DB2 products, the -u option is required.

    3.12.9 DB2 SNMP Subagent

    Simple Network Management Protocol (SNMP) products include IBM NetView for AIX and IBM NetView for OS/2. DB2 provides support for SNMP management products via the DB2 SNMP Subagent, included as a component of the DB2 Server. SNMP management products such as NetView allow centralized management of both hardware and software components of a system. The DB2 SNMP Subagent allows DB2 servers to be managed just like any other SNMP-managed resource.

    The software requirements for using the SNMP Subagent are as follows:

    3.12.10 Configuring Client to DB2 Server Communication Using the CCA

    In order to connect properly using the IBM Communications Server SNA API Client for Windows NT or Windows 95, you must start the APING application prior to starting any GUI application that will connect via APPC. Such GUI applications include the Client Configuration Assistant, Control Center, and any ODBC GUI applications.

    3.12.11 Administering and Using OS/2 User Profile Management

    There is a change to a note in Table 7 within the section "User Profile Management Passwords" that refers to translated values for user IDs and passwords. The note to Table 7, "Default User IDs and Passwords" states the following:

       If your country does not appear in the list, assume USERID and PASSWORD
       are used. If this fails, see the README file.
    

    This note is no longer valid and should be disregarded.

    3.12.12 ADSM Client Setup for EEE on Solaris - Use db2profile

    When setting up ADSM Client for DB2 UDB Extended Enterprise Edition for Solaris, the DSMI_DIR, DSMI_CONFIG, and DSMI_LOG ADSM environment variables should be set up in db2profile. If these variables are merely exported using .profile or .kshrc, they will not be available to each node in the partitioned database environment. The ADSM client on Solaris must be at Version 2.1.0.8 or higher.

    3.12.13 Connections from DB2 for OS/390 Version 5 to DB2 Universal Database Version 5

    The following information should be added to the chapter that describes how to use the DB2 workstation as a server for host applications, in the section that lists the PTFs required for DRDA application servers:

       Please apply the fix for DB2 for OS/390 APAR PQ07537 if you will be connecting
       from DB2 for OS/390 Version 5 to DB2 Universal Database Version 5.
    

    3.12.14 Configuring NetBIOS on Windows NT Servers

    NetBIOS on Windows NT does not properly receive data that is larger than the receive buffer. However, you can use the DB2 registry value db2nbrecvbuffsize to overcome this problem.

    You need to set the receive buffer on the server to be larger than the largest amount of data that will be sent by a client. The default RQRIOBLK size is 32767 bytes, but the default server "receive buffer size" is 4096 bytes. Before you start DB2, issue the following command:

       db2set db2nbrecvbuffsize=32768 -g
    

    This command sets the Server's receive buffer size globally.

    3.12.15 Shared Memory Addresses - Windows NT or Windows 95

    For Windows NT and Windows 95, in the "Managing Instances" section of the Quick Beginnings manual, the following revised information applies.

    The default database manager shared memory address is x'20000000' for Windows NT, and x'90000000' for Windows 95. If a shared memory address collision occurs, this value can be modified to force the database manager instance to allocate its shared memory at a different address. Use the DB2DBMSADDR registry profile variable to assign an address value in the range of x'20000000' to x'B0000000' on Windows NT, and x'80000000' to x'B00000000' on Windows 95 using increments of x'4000000'. For example, on Windows 95, try the values: x'840000000', x'88000000', x'8C000000', and so on...

    The value of DB2DBMSADDR is in hexadecimal format without the preceding 0x and may be set using the db2set profile registry command.

    For example, to set DB2DBMSADDR to x'84000000', use the following command:

       db2set DB2DBMSADDR=84000000
    

    3.12.16 Running the DB2 JDBC Applet Server as a Windows NT Service

    Under the heading "Running Java Applications" - "Java Applets", the Quick Beginnings and Administration Getting Started manuals say:

       To run your applets, do the following:
     
       1. Start the DB2 JDBC applet server on your Web server by entering: 
     
         db2jstrt portno
     
         where portno is the number of the unused TCP/IP port that you
             specified in the DB2Applt.java file.
    

    This information is out of date, as follows:

    The DB2 JDBC Applet Server can now be started as a Windows NT service, and it must be registered as a service first, before it is be available in the services section of the control panel.

    In order to register the service, run the following command while logged on as an administrator:

       db2regjdbc  i
    

    To register the service to run with a specific userid, run:

       db2regjdbc i [userid] [password]
    

    To remove the service, run:

       db2regjdbc u
    

    Once the service is registered, it can be started and stopped from the services section of the control panel:

    1. Open Control Panel
    2. Click on Services
    3. Highlight "DB2 JDBC Applet Server".
    4. Enter the port number in the command field (the number of the unused TCP/IP port that you specified in the DB2Applt.java file). Click on start.

    The service can also be set to start and stop automatically.

    3.12.17 Obtaining Information

    3.12.17.1 Online Help

    The topic "SQL Help", which explains the syntax of SQL statements, is not available on UNIX based operating systems.

    3.12.17.2 DB2 Books

    The list of language identifiers in the first note at the bottom of the table containing information about the DB2 Books should include the following entries:

       Language                 Identifier
       ________                 __________
       Greek                    A
       Japanese                 J
       Korean                   K
       Simplified Chinese       C
       Traditional Chinese      T
    

    3.12.17.3 Printing the PostScript Books

    If you prefer to have printed copies of the manuals, you can decompress and print PostScript versions.
    Note:Specify the full path name for the file you intend to print.

    On OS/2 and Windows platforms:

    1. Copy the compressed PostScript files to a hard drive on your system. The files have a file extension of .exe and are located in the x:\doc\language\books\ps directory, where x: is the letter representing the CD-ROM drive and language is the two-character country code that represents your language (for example, EN for English).

    2. Decompress the file that corresponds to the book that you want. The result from this step is a printable PostScript file with a file extension of .psz.

    3. Ensure that your default printer is a PostScript printer capable of printing Level 1 (or equivalent) files.

    4. Enter the following command from a command line:
         print filename.psz
      

    On UNIX-based platforms:

    1. Mount the CD-ROM. Refer to your Quick Beginnings manual for the procedures to mount the CD-ROM.

    2. Change to /cdrom/doc/%L/ps directory on the CD-ROM, where /cdrom is the mount point of the CD-ROM and %L is the name of the desired locale. The manuals will be installed in the previously-mentioned directory with file names ending with .ps.Z.

    3. Decompress and print the manual you require using the following command:

      where filename is the name of the full path name and extension of the compressed PostScript file and PSprinter_queue is the name of the PostScript printer queue.

      For example, to print the English version of Quick Beginnings for UNIX on AIX, you can use the following command:

         zcat /cdrom/doc/en/ps/db2ixe50.ps.Z | qprt -P ps1
      

    3.12.17.4 Viewing Online Books

    The manuals included with this product are in Hypertext Markup Language (HTML) softcopy format. Softcopy format enables you to search or browse the information, and provides hypertext links to related information. It also makes it easier to share the library across your site.

    You can use any HTML Version 3.2-compliant browser to view the online books.

    To view online books:

    3.12.17.5 Setting up a Document Server

    By default the DB2 information is installed on your local system. This means that each person who needs access to the DB2 information must install the same files. To have the DB2 information stored in a single location, use the following instructions:

    1. Copy all files and sub-directories from \sqllib\doc\html on your local system to a web server. Each book has its own sub-directory containing all the necessary HTML and GIF files that make up the book. Ensure that the directory structure remains the same.

    2. Configure the web server to look for the files in the new location. For information, see Setting up DB2 Online Documentation on a Web Server at:
         http://www.software.ibm.com/data/pubs/papers/db2html.html
      

    3. If you are using the Java version of the Information Center, you can specify a base URL for all HTML files. You should use the URL for the list of books.

    4. Once you are able to view the book files, you should bookmark commonly viewed topics such as:

    For information about setting up a search, see the What's New book.

    3.12.17.6 Searching Online Books

    To search for information in the HTML books, you can do the following:

    3.12.18 Microsoft Internet Explorer 4.0 HTTP 1.1 Settings

    Currently, the default settings on Internet Explorer cause a conflict with the DB2 search server. As a workaround, disable the HTTP 1.1 settings check box from Internet Explorer's advanced options (on each client that will access the documentation). Note that due to a limitation in Internet Explorer this requires a reboot of your system to take effect.

    1. From the View menu, select Internet Options.

    2. Select the Advanced tab. You'll see a list of sections containing check boxes.

    3. Under the section "HTTP 1.1 settings" clear both the "Use HTTP 1.1 through proxy connections" and "Use HTTP 1.1" check boxes.

    4. Select OK.

    5. Shut down Windows and reboot your computer for the new settings to take effect.

    3.12.19 Considerations When Remotely Administering Clusters Using the Control Center

    After you install DB2 UDB EEE for Windows NT on multiple nodes, the install process will only configure the "instance owning node" to be the coordinator node for communications from client machines. In order to remotely administer the cluster using the Control Center you will need to enable communications on each of the nodes. One way to do this is as follows:

    1. Reserve a TCP/IP port on each of the machines. For example, let us assume that port 4000 is available on each of the machines.

    2. Update the instance configuration file to use that port number for all nodes. At the instance owning node type:
         DB2 update dbm cfg using svcename 4000
      

    3. Configure each node to accept TCP/IP. At the instance owning node type:
         rah "db2set db2comm=TCPIP"
      

    Each node will accept inbound TCP/IP connections when it is restarted.


    3.13 Replication Guide and Reference

    3.13.1 New Platforms Supported

    IBM Replication is a set of easy-to-use, automated copy tools that replicate data from sources to targets. Data can be copied:

    3.13.2 New Messages

    Two messages for the Apply program are missing from Chapter 21, "IBM Replication Messages":

       ASN1054S
       The Apply program could not find the registration information for source
       owner "<src_ownr>", source table "<src_tbl>", and source
       view qualifier "<src_view_qual>".
     
       Explanation
       The source table registration is incorrect or incomplete.
     
       User Response
       Drop the registration and redo it. Also make sure that the registration
       information is in both the register table and the pruning control table.
     
     
       ASN1055S
       The Apply program could not find the prune control information for source
       owner "<src_ownr>", source table "<src_tbl>", source
       view qualifier "<src_view_qual>", target owner "<tgt_ownr>",
       and target table "<tgt_tbl>".
     
       Explanation
       The source table registration is incorrect.
     
       User Response
       Drop the subscription and redo it.
    

    3.13.3 LONG VARCHAR Support by the Capture program for DB2 UDB Version 5.2

    The capture program for DB2 UDB Version 5.2 now has the capability to support LONG VARCHAR data types. New Long Field Manager long records, which contain the information needed to capture changes made to the LONG VARCHAR columns, are propagated.

    For DB2 UDB Version 5 users who need the new capture capability, there is the option to add an additional clause to the ALTER TABLE statement. There are no changes to the CREATE TABLE syntax.

    To take advantage of the new LONG VARCHAR support, you must specify the DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS clause on the ALTER TABLE statement. When this DDL statement is executed, the DATA CAPTURE CHANGES column in the SYSCAT.TABLES is set to "L". Whenever base tables with the INCLUDE LONGVAR option row are updated, Long Field Manager long records are written and read by the capture program. These records include both before and after images of columns.

    If you want to disable the new LONG VARCHAR support, you must specify the appropriate DATA CAPTURE CHANGES value in an ALTER TABLE statement. For example, you could specify "YES" or "NONE" without the additional clause.

    To register LONG VARCHAR columns, do the following from the Control Center:

    1. Find the "Available Columns box" in the "Define as Replication Source" window.

    2. Select the LONG VARCHAR columns.

    The following restriction applies: For a DELETE operation (IBMSNAP_OPERATION="D"), the LONG VARCHAR column values will be null.


    3.14 Road Map to DB2 Programming

    3.14.1 About the Application Developer's Kit

    VisualAge for Basic and Lotus Approach are no longer bundled in the product boxes.


    3.15 SQL Reference

    3.15.1 ALTER TABLE

    The ACTIVATE NOT LOGGED INITIALLY clause should not be used when DATALINK columns with the FILE LINK CONTROL attribute are being added to the table.

    3.15.2 CREATE FUNCTION

    Under both CREATE FUNCTION (External Scalar) and CREATE FUNCTION (External Table), there is a list of the information contained in the DBINFO structure which is passed to the UDF if the definer specifies DBINFO. The following bullet has been added to each of these lists:

       Application ID - unique application ID which is established
          for each connection to the database.
    

    3.15.3 CREATE TABLE

    The NOT LOGGED INITIALLY clause should not be used when DATALINK columns with the FILE LINK CONTROL attribute are present in the table.

    Replace the description of "fullselect" under "summary-table-definition":

       fullselect
     
         Defines the query on which the table is based. The summary-table-options
         specified define attributes of the summary table. The option chosen also
         defines the contents of the fullselect as follows.
     
         When DEFINITION ONLY is specified, any valid fullselect can be specified.
         The data type and nullability attribute are determined from the result
         columns of the select list. Every select list element must have a name.
     
         When REFRESH DEFERRED is specified, the fullselect cannot include:
     
         o References to a view, summary table, or typed table in any FROM clause.
         o Expressions that are of type LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB,
           BLOB, REFERENCE, or DATALINK (or a distinct type based on these types).
         o Functions that have external action.
         o Functions that depend on physical characteristics (NODENUMBER, PARTITION).
         o Table or view references to system objects (explain tables also 
           should not be specified).
    

    Under "summary-table-options", the REFRESH IMMEDIATE option is not supported.

    Replace the description of "REPLICATED":

       REPLICATED
         Specifies that the data stored in the table is physically replicated on
         each database partition of the nodegroup of the table space in which the
         table is defined. This means that a copy of all the data in the table
         exists on each of these database partitions. This option can only be
         specified for a summary table (SQLSTATE 42997).
    

    3.15.4 Appendix A. SQL Limits/Database Manager Limits

    The limit for the number of tables in a DMS table space has been increased from 6648 to 51971. This new limit will automatically apply to any table spaces with a page size other than 4KB, and to all newly created 4KB DMS table spaces.

    For existing 4KB DMS table spaces, the new /ets option of the db2dart utility is used to apply the new limit:

    1. Deactivate the database (that is, ensure that no connections to it exist).

    2. Invoke: db2dart <dbalias> /ets /tsi <tid>. This will check the specified table space for existing table, index, or LONG objects which have identifiers that are incompatible with the application of the new limit. If none are found, the new limit will be applied to that table space. Otherwise, a list of incompatible tables will be provided in the dart report. In this case, those tables must be dropped, and the command run successfully, for the new limit to become effective. The tables can be recreated and reloaded after the utility has been run successfully on all logical nodes. On EEE installations, run this command first on one logical node that is a member of the nodegroup in which the table space resides. If incompatible tables are identified, drop them, and reissue the command. Once you have run the command successfully on one logical node, you must run it again on every logical node in the nodegroup in which the table space resides (either the db2_all or the db2dart_all utility can be used). For information about db2dart options, invoke db2dart without any options (the utility can be found in sqllib\misc).

    Notes:

    1. If db2dart /ets is successfully run on a table space, restoring a table space backup image taken prior to running dbdart /ets will no longer be supported.

    2. If db2dart /ets is successfully run on any table space in a database, restoring a database backup image taken prior to running db2dart /ets, and rolling forward through the point-in-time when db2dart /ets was run, will not be supported.

    3. A database backup must be taken immediately after successfully running db2dart /ets (all table spaces on which the tool is successfully run will be placed in backup pending state).

    3.16 System Monitor Guide and Reference

    3.16.1 Event Monitors are Created with Local Scope

    The syntax diagram for the CREATE EVENT MONITOR statement shows that by default, event monitors are created with global scope. This is incorrect. Event monitors are created with local scope by default.


    3.17 What's New

    3.17.1 Performance (Query/Summary Tables)

    The note at the end of this section has been changed to:

       The REFRESH IMMEDIATE option is not available in Version 5.2.
       It will return SQLCODE SQL0628N if used. You can use the REFRESH
       TABLE statement to keep replicated tables synchronized with the associated
       base tables.
    

    3.17.2 Building Java Applications and Applets Updates

    To build and run embedded SQL for Java (SQLJ) programs now requires the Java Development Kit (JDK) Version 1.1.4 (or higher).

    There have been several changes to the Java sample programs documented in this appendix. The stored procedure and UDF programs have been split into separate client and server programs. This allows users on client machines to remotely access stored procedures and UDFs on server machines. The programs affected are as follows:

    DB2Stp
    is now a server program. The client program that calls it is DB2SpCli.

    DB2Udf
    is now a server program. The client program that calls it is DB2UdCli.

    Stp
    is now a server program. The client program that calls it is StpCli.

    Udf
    is now a client program. The server program that it calls is Udfsrv.

    The script file embprep on UNIX platforms, embprep.bat on Windows platforms, and embprep.cmd on OS/2, has been created to precompile and bind the SQLJ programs. It is called by the makefile and executes the db2profc command on the Java embedded SQL sample programs. It allows optional arguments for database, user ID and password, thereby facilitating remote binding to databases on DB2 servers from client machines.

    Following are additional limitations on SQLJ support for DB2 UDB Version 5.2:

    Some browsers do not yet have support for loading a serialized object from a resource file associated with the applet. You will get the following error message when trying to load the applet Applt in those browsers:

       java.lang.ClassNotFoundException: Applt_SJProfile0
    

    As a work-around, there is a utility which converts a serialized profile into a profile stored in Java class format. The utility is a Java class called sqlj.runtime.profile.util.SerProfileToClass. It takes a serialized profile resource file as input and produces a Java class containing the profile as output. Your profile can be converted using the following command:

       profconv Applt_SJProfile0.ser
     
         or
     
       java sqlj.runtime.profile.util.SerProfileToClass Applt_SJProfile0.ser
    

    The class Applt_SJProfile0.class is created as a result. Replace all profiles in .ser format used by the applet with profiles in .class format.

    For an SQLJ applet, you need both db2java.zip and runtime.zip files. If you choose not to package all your applet classes, classes in db2java.zip and runtime.zip into a single Jar file, put both db2java.zip and runtime.zip (separated by a comma) into the archive parameter in the "applet" tag. For those browsers that do not support multiple zip files in the archive tag, specify db2java.zip in the archive tag, and unzip runtime.zip with your applet classes in a working directory that is accessible to your web browser.

    3.17.3 Web Control Center and NetQuestion (Enabling the Web Control Center Remote Documentation Searches)

    The instructions for enabling remote documentation searches on UNIX operating systems are incorrect. Correct instructions can be found on the web at:

       http://www.software.ibm.com/data/pubs/papers/db2html.html
    

    The published example of the "nqmap" command for OS/2 and the Windows operating system should be changed to:

       nqmap -u DB2ADMEN "http://yourserver/doc/html/" DB2ADMEN
    

    The instructions for editing your Start HTML Search Server icon's properties on the OS/2 operating system should read:

      1. Right-click on the Start HTML Search Server icon in your DB2 for OS/2 folder.
         Select Settings and click on the Program tab.  In the Optional Parameters field,
         add CONFIG DB2WEBCC.CNF to the end of the string of parameters.  Click OK to close.
      2. Edit your db2init.cmd file.  This file is located in x:\sqllib\bin\, where x: is
         the drive on which you installed DB2.  Find the line in this file containing both
         "DB2SS.EXE" and "DB2NETQD.EXE".  At the end of this line add CONFIG "DB2WEBCC.CNF".
         (Note that you need double quotation marks around the file name).  Save and exit.
         Continue with the remainder of the instructions for enabling remote documentation
         searches.
    

    If you want to search all the DB2 online information, you must install both the DB2 documentation (referred to as the "Product Library" on UNIX systems) and the Web Control Center with its online help. If you install the Web Control Center and its help, but do not install the rest of the DB2 online documentation, then attempting to select the search categories for administration, programming, and DB2 Connect may produce an error code of 24, indicating that those search indexes are not installed. In the same way, if you install the DB2 online documentation but not the Web Control Center, attempting to search the Web Control Center online help may produce this same error code.

    3.17.4 Control Center Restrictions

    The following are restrictions of the Control Center:


    4.0 HTML Search Server for OS/2: Searching HTML Documentation

    IBM DB2 Universal Database (DB2 UDB) online documentation comes with an HTML search server to help you find information. These release notes describe the setup and use of the search system on OS/2.


    4.1 Installing the HTML Search System on OS/2

    4.1.1 Prerequisites for the Search System on OS/2

    You must have TCP/IP Version 3 or higher installed on your machine. OS/2 Warp V4 is recommended because it has the appropriate level of TCP/IP. OS/2 Warp V3 Internet Access Kit (IAK) will also work if you set it up for local loopback and if you install the latest FixPak.

    You need a browser such as Netscape 2.02 for OS/2. If a Netscape browser is not available for your language, use Web Explorer 1.1 or higher. Ensure you turn off proxy handling for localhost in the browser you use.

    If you are installing DB2 UDB on a system that has VisualAge for C++ for OS/2, you need to have CSD6 or above installed for the VisualAge for C++ product.

    4.1.2 Configuring TCP/IP on OS/2

    The search server will function with or without a network adapter installed as long as TCP/IP local loopback and localhost are enabled on your system.

    To enable local loopback:

    1. Open OS/2 TCP/IP folder.

    2. Open the TCP/IP Configuration notebook.

    3. View the Network page.

    4. In the "Interface to Configure" list box, highlight "loopback interface".

    5. If the "Enable interface" check box is not selected, select it now.

    6. Verify that the "IP address" is 127.0.0.1 and "Subnet Mask" is empty.

    To enable localhost on your system:

    1. To check whether or not localhost is enabled, enter "ping localhost" on an OS/2 command line.

    2. If you are on a network, make sure that loopback is enabled (see "Enable local loopback", above).

    3. If you are not on a network, enable localhost by performing these steps:

      1. Add the following line after other ifconfig lines in the MPTN\BIN\SETUP.CMD command file:
           ifconfig lo 127.0.0.1
        

        Note:If you have OS/2 Warp with Internet Access Kit, add the line to the \STARTUP.CMD instead of the MPTN\BIN\SETUP.CMD file. If the file doesn't exist, you will have to create it.

      2. In the TCP/IP configuration folder, perform the following steps:

        1. Go to the "Configure Name Resolution Services page".

        2. In the "Hostname configuration without a Nameserver" table, add an entry with "IP Address" set to 127.0.0.1 and "Hostname" set to localhost.
        Note:If you have a hostname for your machine on the "Configure LAN Name Resolution Services" page, you must add this name as an alias when you set the IP Address 127.0.0.1 to localhost.

      3. Select the "Look through HOSTS list before going to the nameserver" list box.
        Note:This step tells OS/2 that when it is looking for a host, such as localhost, it should use the host address found on your machine rather than checking the nameserver. If the host is not defined on your machine, OS/2 continues looking for the host by using the nameserver you configured.

      4. Close TCP/IP Configuration and reboot the system.

      5. You should be able to ping localhost without being connected to any network.

    4. Verify that your hostname is correct. On an OS/2 command line, enter "hostname". The hostname returned should match the one listed in the TCPIP Configuration notebook on the Hostnames page and it must be less than 32 characters. If the hostname deviates from these conditions, correct it on the Hostnames page. Then correct it in CONFIG.SYS (SET HOSTNAME=<correct_name>), if necessary. Reboot after you make the necessary changes.

    4.1.3 Verifying TCP/IP Configuration

    Click the "Start HTML Search Server" icon, which is located in the DB2 for OS/2 folder. If an error message appears, TCP/IP is not configured properly. Follow the instructions in 4.1.2 , Configuring TCP/IP on OS/2 to make sure that TCP/IP is correctly configured. Reboot OS/2 if you change any settings.

    4.1.4 Locating the Search System Directory

    The search system is stored in its own directory because it may be used by other products. For example, if you installed DB2 UDB along with the search system on drive G, and later you installed VisualAge for Java on drive H, only one search system is installed -- the one that came first.

    Some instructions in this document require you to specify the location of this directory. To locate this directory enter this command on an OS/2 command line:

       echo %IMNNLPSSRV%
    

    4.1.5 Changing the Port Number for the Search Server

    The search server is assigned to port 49213, a number beyond the public ports assigned for TCP/IP. If you have another product that uses this port, you can change the search server port with the following steps:

    1. Edit the HTTPD.CNF file in the search system directory and change the port number to one you know is available, preferably above 49000.

    2. Go to the DB2 UDB directory and in the %DB2PATH%/doc/html directory, use a text editor to edit the DB2SRCH.HTM file. Change the following line to the port you selected in the previous step:
         <form action="http://localhost:49213/cgi-bin/db2sr*xx.exe" method="POST">
       
         where:
            *       is D for DBCS and S for SBCS
            xx      is a two-character identifier for the language in which the
                    documentation is written
            49213   is the new port for localhost
      

    3. Stop and start the search server by double-clicking on the icons in the DB2 for OS/2 folder.

    4.1.6 Diagnosing Search Server Install Errors

    If you received error messages while installing the search server, enter the following command from an OS/2 command line and follow the instructions that it returns:

       SNIFFLE /P
    

    Make sure you reboot your system after you're done.


    4.2 Using the HTML Search System

    4.2.1 Starting and Stopping the Search Server

    After you install the search system, it will start automatically after you reboot.

    If the search server starts without any errors but you encounter the following error message in your browser, click the "Stop HTML Search Server" icon, then click the "Start HTML Search Server" icon.

       A network error occurred: unable to connect to server.
       The server may be down or unreachable.
       Try connecting again later.
    

    After you have finished searching, stop the search server to reclaim the memory it used. To stop it, double-click the "Stop HTML Search Server" icon in the DB2 for OS/2 folder.

    4.2.2 Searching while Disconnected from the Network

    If you are not on a network (for example, if you are using a laptop computer and are temporarily away from a LAN connection), you have to enable localhost to search the documentation. The instructions for doing this task are described in step 3 of 4.1.2 , Configuring TCP/IP on OS/2.

    4.2.3 File Not Found Errors

    The search system searches predefined indexes. All of these indexes are installed with the search system, regardless of the DB2 UDB products you install. Therefore, when you conduct a search, some of the results might return a "File not found" error because they pertain to a product that is not installed on your system.

    4.2.4 If Search Does Not Work (ERROR 500 when trying to search)

    If you installed the search server but you get an error when you try to search the documentation, check the following items:

    1. Check that the search system was properly installed. The environment variable IMNNLPSSRV should point to the search system directory (see 4.1.4 , Locating the Search System Directory).

    2. The search system directory should contain these files:

    3. The search system should be registered with product documentation. Invoke this command to list all of the documentation that is registered with the search system:
         NQMAP -A
      

      The documentation for DB2 UDB is called DB2ADMxx, DB2APDxx, or DB2CONxx, where xx is a two-character identifier of the language in which the documents are written. One or more of these names should appear in the list of names that NQMAP returns.

      If the files are not there, either TCP/IP is incorrectly installed or the indexes are corrupt. Use SNIFFLE /P to fix the former, and reinstall the documentation to fix the latter.

    4.2.5 Error Detected When Starting the Search Service

    If you encounter this error:

       HS0410: An error was detected when starting the search service. Stop the service
       and start it again.  Press Enter to continue...
     
       (Sometimes the error is EHS0411 but the text is the same.
       This message comes up on a full black screen.)
    

    your hostname might have changed since doing the install and you have to record it again. Go into the NetQuestion directory and enter:

       type netq.cfg
    

    to see what hostname NetQuestion is using. If you have changed the hostname, for example while configuring DHCP and DDNS, enter:

       netqinit <data-path>
     
       Example:  netqinit d:\netqos2\data
    

    4.3 Uninstalling the HTML Search System

    After you uninstall DB2 for OS/2, the search system is left on your hard drive. Run UNINSTNQ.CMD to remove it.

    4.3.1 Problems Uninstalling the Search System on OS/2

    If you ran UNINSTNQ.CMD and the search system does not uninstall, the cause may be:

    1. Follow the instructions in 4.1.2 , Configuring TCP/IP on OS/2 to ensure that TCP/IP is configured properly and search server is initialized with a properly configured TCP/IP setup. Make sure you reboot the system if you make any changes to the configuration.

    2. To determine which products are still registered with the search system, issue the following command:
         NQMAP -A
      

      If this command returns no indexes, skip to step 6.

      If the list contains indexes that do not belong to DB2 UDB (that is, their names begin with something other than "DB2"), you cannot remove the search server.

      If it contains any of the DB2 index file names (DB2ADMxx, DB2APDxx, DB2CONxx), DB2 UDB could not unregister the indexes therefore causing the search system uninstall to fail. This occurs if DB2 UDB was incorrectly uninstalled (for example, the SQLLIB folder was deleted). In this case, you have to manually unregister the indexes and remove the search system directory using the following steps:

      1. Issue this command to ensure that the search server is running:
           NETQ START SERVER           //for SBCS
           IMQSS.EXE -START DBCSHELP   //for DBCS
        

      2. Issue this command for each of the index files:
           NQMAP -D <index_name>
        

      3. Issue this command for each of the index files:
           NQDELET <index_name>        //for SBCS
           TMDELET <index_name>        //for DBCS
        

      4. Stop the search server:
           NETQ STOP SERVER            //for SBCS
           IMQSS.EXE -STOP DBCSHELP    //for DBCS
        

      5. Issue "NQMAP -A" and verify that there are no DB2 indexes (DB2xxxxx) remaining. If there are, please contact IBM service.

      6. Issue the following command to verify that no other indexes are active.
           NQCOUNTI <search system directory>  //for SBCS
           TMCOUNTI <search system directory>  //for DBCS
        

        Note:See 4.1.4 , Locating the Search System Directory if you do not know where it is installed.

        • If this command returns data that indicates one or more indexes are still active, the search system cannot be removed because other products are still registered. Do not perform the remaining steps.

        • If the search system returns "0 indices active", run UNINSTNQ.CMD. (Ignore this message: "SYS0016: The directory cannot be removed".) Verify that the search system directory has been removed. If it is still there, call IBM service.

      7. After the UNINSTNQ.CMD completes, perform the following steps:

        1. Restore CONFIG.SYS from a backup that was created during install.
          Note:Install creates numbered backups, of the form config.xyz, where xyz is the first available number from 000 to 100. The backups will have the time and date stamp of the time of the install. There were two backups created during install: one for the DB2 UDB install, one for the search system install.

          • To remove only search system settings, use the second backup.

          • To remove both DB2 UDB and search system settings, use the first backup.

        2. Remove the search system's directory and all its subtrees.

          1. Go to the %TMP%/NETQ directory.

          2. Delete any files that remain in the NETQ directory.

          3. Delete the NETQ directory.

          4. Reboot.

    5.0 HTML Search Server for Windows NT, Windows 95, and Windows 98: Searching HTML Documentation

    IBM DB2 Universal Database (DB2 UDB) online documentation comes with an HTML search system to help you find information. These release notes describe the setup and use of the search system on Windows NT, Windows 95, and Windows 98.

    The search system consists of a search engine and a search server. The search system is stored in its own directory because it may be used by other products.


    5.1 Restrictions on Use

    This search system does not support Windows 3.1.

    This search system is not enabled for Thin Clients. If you attempt to search the documentation, you will receive a network error.


    5.2 Installing the HTML Search System on Windows NT, Windows 95, and Windows 98

    5.2.1 Prerequisites for the Search System

    The following prerequisites are required:

    5.2.2 Stop Any Previously Installed Version of the Search System

    If the search system was previously installed by another product (for example, VisualAge for Java), the search server must be stopped. To stop the search server, click on "Stop HTML Search Server" in the DB2 menu item of the Start Menu.

    5.2.3 Locating the Search System Directory

    The search system is stored in its own directory because it may be used by other products. For example, if you installed DB2 UDB along with the search system on drive G, and later you installed VisualAge for Java on drive H, only one search system is installed -- the one that came first.

    Some instructions in this document require you to specify the location of this directory. To locate this directory use this command:

       echo %IMNINSTSRV%
    

    5.2.4 Changing to a Different Port Number for the Search Server

    The search server is assigned to port 49213, a number beyond the public ports assigned for TCP/IP. If you have another product that uses this port, you can change the search server port with the following steps:

    1. Edit the HTTPD.CNF file in the search system directory and change the port number to one you know is available, preferably above 49000.

    2. Determine where <db2path> is by issuing the following command:

         DB2SET DB2PATH
      

    3. Go to the DB2 UDB directory and in the <db2path>/doc/html directory, use a text editor to edit the DB2SRCH.HTM file. Change the following line to the port you selected in the previous step:
         <form action="http://localhost:49213/cgi-bin/db2sr*xx.exe" method="POST">
       
         where:
           *       is D for DBCS and S for SBCS
           xx      is a two-character identifier for the language in which the
                   documentation is written
           49213   is the new port for localhost
      

    4. Stop and start the search server. To stop the search server, click on "Stop HTML Search Server" in the DB2 menu item of the Start Menu. To start the search server, click on "Start HTML Search Server" in the DB2 menu item of the Start Menu.

    5.2.5 Installing DB2 Universal Database on a LAN-Connected Drive

    If you install DB2 UDB on a LAN-connected drive on Windows 95 and the drive does not get reconnected before AUTOEXEC.BAT is run on Windows 95, the search system will not be able to have its environment variables set. The search system sets environment variables through a batch file (IMNENV.BAT) that resides in the search system directory (for example, (F:\IMNNQ_95). To bypass this problem, copy IMNENV.BAT from the search system directory to another drive/directory that is connected before AUTOEXEC.BAT is executed. Then modify AUTOEXEC.BAT to call this batch file on startup. For example, if you copy IMNENV.BAT to C:\WINDOWS\IMNNQ, you can add the following line to AUTOEXEC.BAT:

       IF EXIST C:\WINDOWS\IMNNQ\IMNENV.BAT CALL IMNENV.BAT
    

    5.2.6 Diagnosing Search Server Install Errors

    If during DB2 UDB install you encounter a failed search server installation or initialization, the DB2 UDB install will proceed to completion. The following will assist in diagnosing what happened and what to do.

    Look in the <temp>\imnnq\install directory, where <temp> is your system's %TEMP% directory, to find the IMNNQ.ERR file. If it does not exist, reboot and try installing the product again. If IMNNQ.ERR does exist, here is the possible contents:

       1 - This indicates that the current PATH is too long and adding the search
           server into the PATH will cause the entire PATH to be erased.
           Note:  The limit on Windows NT 4.0 is 512; on Windows 95 it is 255.
           It is recommended that you perform the following steps:
           a) Rename the PATH variable in the AUTOEXEC.BAT file (PATHGOOD), save
              changes and reboot.
           b) Remove the IMNNQ.ERR file from <temp>\imnnq\install.
           c) Run the product install again to install the search system properly.
           d) Merge the PATHGOOD variable with the PATH variable that was created
              by the latest installation.
     
       2 - Miscellaneous error, please contact IBM service.
     
       3 - Out of disk space error.  Please ensure that there is at least 4.5MB
           of disk space for the search system plus enough space for AUTOEXEC.BAT
           to be changed for Windows 95.
    

    If IMNNQ.ERR contains a message saying XXX.EXE DOES NOT EXIST, the search system executables could not be found. Try rerunning the search system install/initialization program again. See 5.3.4 , If Search Does Not Work (ERROR 500 when trying to search).


    5.3 Using the HTML Search System

    5.3.1 Starting and Stopping the Server

    After you install the search system, it will start automatically after you reboot.

    If the search server starts without any errors but you encounter the following error message in your browser, click "Stop HTML Search Server", then click on "Start HTML Search Server" in the DB2 menu item of the Start Menu.

       A network error occurred: unable to connect to server.
       The server may be down or unreachable.
       Try connecting again later.
    

    After you have finished searching, stop the search server to reclaim the memory it used. To stop it, click on "Stop HTML Search Server" in the DB2 menu item of the Start Menu.

    5.3.2 Searching with Proxies enabled in Netscape or Internet Explorer

    If you use Netscape or Internet Explorer with proxies enabled manually, you can speed up search significantly by modifying your proxy information.

       In Netscape 3:
       --------------
         1. Select Options - Network Preferences.
         2. Click the Proxies tab.
         3. Click View at the Manual Proxy Configuration selection.
         4. In the "No proxies for" box, type:
              localhost:49213
            If you have other entries here, separate them with commas.
         5. Click OK to close the Manual Proxy Configuration window.
         6. Click OK to exit the Preferences Window.
     
       In Netscape 4 (Communicator):
       -----------------------------
         1. Select Edit - Preferences.
         2. Double-click Advanced in the Category tree.
         3. Click Proxies in the Advanced subtree.
         4. Click View at the Manual Proxy Configuration selection.
         5. In the "Exceptions... Do not use proxy servers for domains beginning
            with" box, type:
              localhost:49213
            If you have other entries here, separate them with commas.
         6. Click OK to close the Manual Proxy Configuration window.
         7. Click OK to exit the Preferences Window.
     
       In Internet Explorer 3:
       -----------------------
         1. Select View - Options.
         2. Select Connection.
         3. In the "Exceptions... Do not use proxy servers for domains beginning
            with" box, type:
              localhost:49213
            If you have other entries here, separate them with commas.
         4. Select the "Do not use proxy server for local (intranet) addresses" box.
         5. Click OK to exit the Options Window.
     
       In Internet Explorer 4:
       -----------------------
         1. Select View... Internet Options.
         2. Select the Connection tab.
         3. Select the "Bypass proxy server for local (Intranet) access" check box.
            NOTE: this check box is only available if you are using a proxy or socks connection
            and have selected the "Access the Internet Using a Proxy Server" check box
         4. Select the "Advanced" Button.
         5. Type:
              localhost:49213
            in the "Exceptions... Do not use proxy servers for addresses beginning with" box.
            If you have other entries here, separate the new entry with a semi-colon.
         6. Select OK, then OK to exit the Options Tab.
    

    5.3.3 Searching with a Laptop on Windows 95

    Nameservers:

    If you use a laptop that is normally connected to a LAN as a disconnected development platform, you may run into difficulty searching. To search successfully, you need to disable your nameserver, IP address in your TCP/IP configuration. In other words, you need two separate TCP/IP configurations--one for connected operations and another for disconnected ones.

    Best fix for multiple TCP/IP configurations in Windows 95:

    Windows 95 only allows you to have a single TCP/IP configuration. However, there are shareware utilities available on the internet that let you specify more than one setting, and then change them according to your connection status (connected or disconnected from a LAN). TCPSwitch is one of these programs.

    Socks servers and proxies:

    If you are using Netscape 3, and you dial-in to a secure site to access the internet with a proxy or socks server, you will need to delete these settings in Netscape before you can search. This is a bug with Netscape 3--Netscape Communicator's "direct connect" setting should fix this.

    5.3.4 If Search Does Not Work (ERROR 500 when trying to search)

    If the product installation worked, but searching does not work, try the following steps:

    1. Check that the search system was properly installed. The environment variables IMNINST and IMNINSTSRV should be set and IMNINSTSRV should point to the search system directory (see 5.2.3 , Locating the Search System Directory).

    2. The search system directory should contain these files:

    3. Ensure that the search system is registered with product documentation. Invoke this command to list all of the documentation that is registered with the search system:
         NQMAP -A              //for SBCS
         TMMAP -A              //for DBCS
      

      The documentation for DB2 UDB is called DB2ADMxx, DB2APDxx, or DB2CONxx, where xx is a two-character identifier of the language in which the documents are written. One or more of these names should appear in the list of names that NQMAP (or TMMAP) returns.

      With the list of indexes the NQMAP (or TMMAP) command provides, you can get additional details on each index with the following command:

         IMNIXSTA <index_name>  //for SBCS
         IMQIXSTA <index_name>  //for SBCS
      

      This command provides details such as the status of the index and the number of documents in the index.

      If any of the above conditions are not true, you can rerun the DB2 UDB product installation program. If the only condition that is not true is that the files DB2SRCH.EXE, DB2HEAD.HTM and DB2FOOT.HTM are missing, then you can just copy them over from the directory <db2path>\misc into search system's directory, (for example, E:\IMNNQ_NT). The product installation program will rerun the search server's installation and initialization.

    5.3.5 File Not Found Errors

    The search system searches predefined indexes. All of these indexes are installed with the search system, regardless of the DB2 UDB products you install. Therefore, when you conduct a search, some of the results might return a "File not found" error because they pertain to either a product that is not installed on your system, or, a document that you chose not to install during installation.

    5.3.6 Error Detected when Starting the Search Service

    If you encounter this error:

       EHS0410: An error was detected when starting the search service. Stop the service
       and start it again.  Press Enter to continue...
     
       (Sometimes the error is EHS0411 but the text is the same.
       This message comes up on a full black screen.)
    

    your hostname might have changed since doing the install, and you have to record it again. Go into the NetQuestion directory and enter:

       type netq.cfg
    

    to see what hostname NetQuestion is using. If you have changed the hostname, for example while configuring DHCP and DDNS, enter:

       netqinit <data-path>
     
       Example:  netqinit c:\imnnq_nt\data
    

    5.4 Uninstalling the HTML Search System

    Note:Before uninstalling the DB2 UDB product, the search system must be stopped. To stop the search system, click on "Stop HTML Search Server" in the DB2 menu item of the Start Menu.

    The search system is uninstalled with the DB2 UDB product by clicking on the "Uninstall" item in the DB2 menu item of the Start Menu.

    5.4.1 If the Search System is not Uninstalled from Windows NT, Windows 95, or Windows 98

    If the search system does not get uninstalled, the cause may be:

    To determine which products are still registered with the search system, issue the following command:

       NQMAP -A            //for SBCS
       TMMAP -A            //for DBCS
    

    If this command returns no indexes, skip to step 6.

    If the list contains indexes that do not belong to DB2 UDB (that is, their names begin with something other than "DB2"), you cannot remove the search server.

    If it contains any of the DB2 index file names (DB2ADMxx, DB2APDxx, DB2CONxx), DB2 UDB could not unregister the indexes therefore causing the search system uninstall to fail. This occurs if DB2 UDB was incorrectly uninstalled (for example, the SQLLIB folder was deleted). In this case, you have to manually unregister the indexes and remove the search system directory using the following steps:

    1. Issue this command to ensure that the search server is running:
         IMNSS START SERVER          //for SBCS
         IMQSS.EXE -START DBCSHELP   //for DBCS
      

    2. Issue this command for each of the index files:
         NQMAP -D <index_name>       //for SBCS
         TMMAP -D <index_name>       //for DBCS
      

    3. Issue this command for each of the index files:
         NQDELET <index_name>        //for SBCS
         TMDELET <index_name>        //for DBCS
      

    4. Stop the search server:
         IMNSS STOP SERVER           //for SBCS
         IMQSS.EXE -STOP DBCSHELP    //for DBCS
      

    5. Issue "NQMAP -A" (or "TMMAP -A") and verify that there are no DB2 indexes (DB2xxxxx) remaining. If there are, please contact IBM service.

    6. Issue the following command to verify that no other indexes are active.
         NQCOUNTI <search system directory>  //for SBCS
         TMCOUNTI <search system directory>  //for DBCS
      
    Note:See 5.2.3 , Locating the Search System Directory if you do not know where it is installed.

    5.4.2 Rebooting After Uninstalling the Product

    After a DB2 UDB uninstall, it is very important to reboot before doing another install. The reason is that some search system DLLs can be held by the operating system and are not removed until the next reboot. If a a search system install happens before the reboot, the newly installed search system DLLs will be deleted on the next reboot, rendering the search system unusable.


    6.0 Miscellaneous


    6.1 DB2 Family Newsletter

    For the latest information about the DB2 family of products, you may subscribe to the "DB2 Family Newsletter" (English only). Simply send your request in a FAX to 1-905-316-4733, and include the following information:

       Name
       Company name
       Full mailing address
       Telephone number
       DB2 products you currently use