...

Porting to DB2 Universal Database Version 8.1 from Sybase

by user

on
Category: Documents
47

views

Report

Comments

Transcript

Porting to DB2 Universal Database Version 8.1 from Sybase
Porting to DB2® Universal Database™ Version 8.1
from Sybase® Adaptive Server Enterprise™
By Amyris V. Rada
DB2 Information Management Software
IBM Toronto Lab
[email protected]
Reprinted courtesy of DB2 Developer Domain, at ibm.com/software/data/developer)
Trademarks
The following terms are trademarks or registered trademarks of the IBM Corporation in the United States and/or
other countries:
AIX
AS/400
DataJoiner
DataPropagator
DataRefresher
DB2
DB2 Connect
DB2 Universal Database
DB2 OLAP Server
Distributed Relational Database Architecture
DRDA
IBM
IMS
iSeries
Informix
MQSeries
MVS/ESA
Net.Data
NUMA-Q
OS/400
OS/390
OS/2
RS/6000
System/390
VM/ESA
VSE/ESA
z/OS
zSeries
Notes is a registered trademark of Lotus Development Corporation and/or IBM Corporation.
The following terms are trademarks or registered trademarks of the companies listed:
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other
countries or both.
Microsoft, Windows, Windows NT and Windows 2000 are trademarks or registered trademarks of Microsoft
Corporation in the United States, other countries or both.
Solaris is a trademark of Sun Microsystems, Inc.
Sybase, Adaptive Server, SQL Server, Transact-SQL, Open Client, and Open Server are trademarks of
Sybase, Inc. or its subsidiaries.
UNIX is a registered trademark of the Open Group in the United States and other countries.
Other trademarks and trade names mentioned herein are the property of their respective owners.
© 2003 International Business Machines Corporation. All rights reserved.
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Why Port to DB2 UDB? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integrated Support for Native Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integrated System Management Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiplatform tools for DB2 Universal Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Self-managing and Resource Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integrated Web Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Web Services Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Integrated Support for Development Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Basic Warehousing Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
High Availability Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IBM Program for Assistance to Developers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Universal Database Product Family . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Personal Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Workgroup Server Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Enterprise Server Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Everyplace Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Run-Time Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Administration Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Application Development Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
6
6
7
7
7
8
8
8
8
9
10
10
11
11
11
11
11
11
12
Data Types Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Administration Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Administration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Enterprise-wide data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Database Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Database Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dump/Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Online Utility Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Stored Procedures and Administrative Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Database Consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
17
18
18
18
19
20
21
22
22
23
Implementation Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Isolation Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Statement Isolation Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Locking Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Temporary Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IDENTITY Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Java-SQL Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scrollable Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ANSI Join Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
User Defined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XML in the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
25
25
25
26
26
26
27
28
28
28
29
29
30
30
30
31
32
35
36
Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Programming Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Programming Interfaces Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Call Level Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DB2 Java Enablement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Embedded SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Open Client and Open Server Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Java Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
37
37
38
40
40
41
Terminology Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
DB2 CLI vs. ODBC Function Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Conversion Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IBM Migration Toolkit (MTK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AllFusion ERwin Data Modeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Junction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Embarcadero Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SQL Conversion Workbench (SQL-CW) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
45
46
46
46
47
Resources and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Introduction
Database management software is now the core of enterprise computing. Companies need access to a wide
range of information such as XML documents, streaming video, and other rich media types. New ways of
working bring new requirements, including digital rights management. The e-business evolution makes
continuous availability a necessity and is driving the convergence of transaction, business intelligence, and
content management applications as companies integrate their business operations. DB2 Universal Database
Version 8 can help your organization meet these challenges.
DB2 Universal Database for UNIX® and Windows® (DB2 UDB) can help improve the performance of database
applications. Many solution developers have already chosen DB2 UDB as their primary development database
environment, and have ported and continue to enable applications to support it in order to take advantage of its
unique features.
DB2 UDB is a true cross-platform database management system (DBMS), running on a wide variety of systems
including Windows 98, Windows NT®, Windows 2000, Solaris, HP-UX, AIX®, and Linux.
DB2 UDB responds quickly to peaks in transaction demand on your web site, expands to hold growing amounts
of information that can be distributed in a number of different databases, and grows with your information
infrastructure from one processor, to multiple processors, to massively parallel clusters. The integration of
partitioning and clustering technology into the new DB2 ® Universal Database Enterprise Server Edition means
that it is flexible enough to meet future growth.
A real database leader in several technologies, DB2 UDB provides the following capabilities:
w
Integrated support for complex data such as text documents, images, video and audio clips
w
Integrated Web access through native support for Java™, Java Database Connectivity (JDBC),
embedded SQL for Java (SQLJ) and Net.Data
w
Integrated system management tools
w
Data replication services.
This article introduces DB2 UDB products and their capabilities, discusses porting databases and applications,
and describes the most important aspects of porting applications from Sybase Adaptive Server Enterprise to DB2
UDB V8. It describes the differences between the two products in database options, data definition language
(DDL), data modeling, SQL considerations, data conversion, and application conversion.
All subsequent references to DB2 imply DB2 UDB for UNIX, Linux and Windows platforms, unless otherwise
specified. All the information contained in this document is based on publicly available information as of January
19, 2003, and is subject to change. IBM disclaims all warranties as to the accuracy, completeness, or adequacy
of such information. IBM shall have no liability for errors, omissions or inadequacies in the information contained
herein or for interpretations thereof.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
5
Why Port to DB2 UDB?
DB2 is a database leader in several technologies, and offers true multi-platform support and scalability. The
same database is able to handle mixed types of workloads on a single server. The DB2 design handles varying
workloads from high-volume online transaction processing (OLTP) to complex multi-user queries while
maintaining an excellent performance.
In addition to scalability and performance, DB2 offers the following advantages:
w
w
w
w
w
w
w
w
w
w
Integrated support for native environments
Integrated system management tools and multiplatform tools
Self-managing and resource tuning capability
Data replication service
Integrated Web access
Web services applications
Integrated support for development environments
Data warehousing functionality
High Availability support
IBM Program for Assistance to Developers
Each of these is described in detail below.
Integrated Support for Native Environments
DB2 conforms to many standards including the operating systems that it supports. It maps closely onto internal
resources for performance and scalability. All these considerations make it more reliable and integrate it to the
operating system.
Integrated System Management Tools
DB2 Version 8 introduced a number of new tools: the Health Monitor, the Health Center, the Replication Center,
and the Storage Management tool. In addition, DB2 V8 includes major improvements to existing tools including
the Configuration Assistant, the Control Center, and the Development Center. Here are some of the capabilities
provided by these tools:
w
The Health Monitor and the Health Center help to monitor the health of DB2 systems. They receive
alerts about potential system health issues and address those health issues before they become real
problems that can affect the system’s performance.
w
The Storage Management tool now available through the Control Center displays a snapshot of the
storage for a particular database, database partition group, or table space.
w
The Configuration Assistant has options to configure both local and remote servers, including DB2
Connect™ servers, or to create configuration templates.
w
The Control Center is a graphical interface that can be used to perform server administrative tasks such
as configuring, backing up and recovering data, managing directories, scheduling jobs, and managing
media, as well as accessing and manipulating databases. The Control Center is a Java application that
can be installed and can be used to administer databases on Windows 32-bit operating systems, Linux,
UNIX and OS/390®.
The Control Center includes access to other tools such as the Replication Center, the Satellite Administration
Center, the Data Warehouse Center (with the Data Warehousing option), the Command Center, the Task Center,
the Information Catalog Center, the Health Center, the Journal, the License Center, the Developer Center, and
the Information Center.
Multiplatform tools for DB2 Universal Database
IBM application tools are designed to enhance DB2 performance and management across AIX, HP-UX, Solaris
Operating Environment, Linux and Microsoft Windows operating systems.
w
DB2 Table Editor for Multiplatforms offers direct DB2 database access to anyone for creating, reviewing,
or updating data. It requires a Java-enabled browser .
w
DB2 Web Query Tool for Multiplatforms provides easy access to enterprise data using complex
functionality.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
6
w
DB2 Recovery Expert for Multiplatforms provides targeted and automated recovery of database assets,
even as systems remain on-line. Built-in self-managing and resource tuning (SMART) features provide
intelligent analysis of altered, corrupted, incorrect, or missing database assets – including tables,
indexes, or data – and automate the process of rebuilding those assets to a correct point in time, all
without disruption to normal database or business operations.
w
DB2 Performance Expert for Multiplatforms provides a comprehensive view that consolidates, reports
and analyzes DB2 performance-related information and recommends changes to improve performance.
DB2 Performance Expert can selectively employ and integrate the view from all trace, snapshot, event,
and DB2 Version 8 Health Monitor output. Plus, it provides on-line snapshot reports and a buffer pool
analyzer and reporting facility. It can selectively store performance data in its own performance data
warehouse which you can study at a later time, both at detailed and rolled-up levels of the data. And with
its starter set of SMART features, DB2 Performance Expert also provides recommendations for system
tuning to gain optimum throughput. It supports DB2 UDB Version 8.
w
DB2 High Performance Unload for Multiplatforms gives customers a fast and efficient tool for unloading
and extracting data for movement across enterprise systems, or for reorganization in-place. The product
delivers high levels of parallelism when either unloading or extracting in partitioned database
environments, both for DB2 Enterprise Server Edition Version 8, and DB2 Enterprise - Extended Edition
Version 7.
Self-managing and Resource Tuning
DB2 Version 8 also adds self-managing and resource tuning (SMART) database technology that lets database
administrators choose to configure, tune and manage their databases with enhanced automation. SMART
database management means administrators spend less time managing routine tasks and more time focusing on
tasks that help enterprises gain and maintain a sustainable competitive advantage.
Data Replication
DB2 includes a replication solution that ensures timely, reliable, and consistent data across an enterprise. DB2
Version 8 replication includes four components:
w
Replication Center
w
Capture program and triggers
w
Apply program
w
Replication Alert Monitor
The Replication Center creates the control tables that are required for replication and stores the initial
information about registered sources, subscription sets, and alert conditions in the control tables. The Capture
program, the Apply program, and the Capture triggers update the control tables to indicate the progress of
replication and to coordinate the processing of changes. The Replication Alert Monitor reads the control tables
that have been updated by the Capture program, Apply program, and the Capture triggers to understand the
problems and progress at a server.
The replication components run independently of each other, and they rely on information that they each store in
the replication control tables to communicate with each other.
Additional products complete the data replication solution by supporting sources and targets that include the DB2
family, IMS™, VSAM, Oracle, Sybase, Microsoft, Lotus Notes®, and others.
w
DB2 DataPropagator™ for OS/390, a feature of Version 6 of DB2 Universal Database Server for OS/390
w
DataPropagator Relational Version 5 Release 1 for AS/400
w
IBM DataPropagator NonRelational.
w
IBM DataJoiner®.
w
Lotus NotesPump.
Integrated Web Access
DB2 provides Web access to enterprise data on DB2 databases through native support for Java/JDBC,
Embedded SQL for Java (SQLJ), and Net.Data®.
JDBC can be used to create applications or applets that access data in DB2 databases. These applets can be run
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
7
inside HTML Web pages on any system with a Java-enabled browser, independent of the client’s platform. The
processing of JDBC applets is shared between the client and the server.
DB2 SQLJ support facilitates the creation, building, and running of SQLJ programs against DB2 UDB databases.
DB2 Net.Data enables application developers to create Internet applications that access data from DB2
databases, are stored on a Web server, and can be viewed from any Web browser. While viewing these
documents, users can either select automated queries or define new ones that retrieve the specified information
directly from a DB2 UDB database.
Web Services Applications
DB2 can be accessed as a Web service provider, and it is usually teamed with IBM® WebSphere® family
products to provide a complete Web services framework.
An easy way to develop data-intensive Web services applications is through DB2’s document access definition
extension (DADx) programming model. DADx files are simply XML documents that contain stored procedure
references, DB2 XML Extender references, or traditional SQL. Best of all, DADx files can be created quickly
without any Java programming. For details see the DB2 UDB Application Development Guide.
For a demonstration of DB2 as a Web service provider, see the IBM Video Central for e-business tutorial at
www.ibm.com/software/data/developer/samples/video/.
Integrated Support for Development Environments
DB2 provides an Application Development Client (ADC) that contains a collection of tools specifically designed
for database application developers. The ADC includes libraries, header files, documented Application
Programming Interfaces (APIs), and sample programs to build database applications.
In DB2 Version 8, the Development Center replaces the Stored Procedure Builder (SPB). A single development
environment that supports the entire DB2 family ranging from the workstation to z/OS™, it provides more
functions and features than the Stored Procedure Builder:
w
An easy-to-use interface for developing routines such as stored procedures and user-defined functions
(UDFs)
w
A set of wizards makes it easy to perform development tasks
w
DB2 development add-ins for Microsoft Visual C++, Microsoft Visual Basic and Microsoft Visual InterDev
in order to provide easy access to the Development Center features
Basic Warehousing Functionality
DB2 UDB offers the Data Warehouse Center, a component that automates data warehouse processing. The
Data Warehouse Center can be used to register and access data sources, define data extraction and
transformation steps, populate data warehouses, automate and monitor warehouse management processes, and
manage and interchange metadata.
The DB2 Warehouse Manager product completes the warehousing capability provided by the Data Warehouse
Center.
High Availability Support
In order to enhance the availability of data, DB2 UDB offers several features such as suspended I/O, split mirror
image, dual logging, parallel recovery, backup from split image, and incremental and delta backups. Suspended
I/O and the db2inidb utility provide the ability to split a mirrored copy of data and make that mirrored copy
available for processing or available to another server. A new database configuration parameter, mirrorlogpath,
allows dual logging. During database recovery, multiple agents take advantage of the extra CPUs available on
SMP machines for better performance. Using backups from a read-only database split mirror and using
incremental/delta options provide faster, enhanced backup and recovery.
Additional high availability features are available in DB2 Version 8:
w
Online table load - Users have full read and write access to all the tables in the table space, except for
the table being loaded. If the load is appending data to the table, the existing data will be available for
read access.
w
Online table reorganization - Applications have access to the table during the reorganization. This
process can be paused and resumed later by anyone with the appropriate authority.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
8
w
Online index reorganization - Users can read and update a table and its existing indexes during an
index reorganization using the new REORG INDEXES command.
w
Configurable online configuration parameters - Over 50 configuration parameters can now be set
online, and these changes take effect immediately.
w
Online buffer pool creation, deletion, and resizing - Users can change buffer pool allocations and
alter database and database manager configuration parameters that affect memory use while DB2 is
running.
w
DMS container operations - Users are allowed to drop a container from a table space, reduce the size
of existing containers, and add new containers to a table space such that a rebalance does not occur.
Fail over support can also be provided through platform-specific software. DB2 provides support for High
Availability Cluster Multiprocessing Enhanced Scalability (HACMP/ES) on AIX, Microsoft Cluster Server on
Windows operating systems, Sun Cluster or VERITAS Cluster Server on the Solaris Operating Environment, and
Multi-Computer/ServiceGuard on Hewlett-Packard. This support consists of configuration instructions and details
for implementation when working with DB2 servers.
IBM Program for Assistance to Developers
PartnerWorld for Developers is an IBM program that provides business, technical, and marketing services to
partners in order to help them in developing and marketing applications. The strategic focuses of this program
are network computing and e-business.
There are three levels of membership: Member, Advanced, and Premier, with specialized program offerings for
each level of membership. More details about membership levels are on the Membership Track Guide that can
be found at www.developer.ibm.com/welcome/guide2003/membership.html.
Benefits offered by this program include the following:
w
Marketing and sales support
Marketing education, Business Partner opportunities, co-marketing promotion, and other opportunities
w
Education and certification
Online education, technical education discounts, technical workshops, business seminars and developer
workshops, professional certification opportunities, interactive e-learning, and calendar of education
events
w
Technical support
Access to cross-platform technical enablement services at the worldwide Solution Partnership Centers,
and industry-leading technical support for developers
w
Incentives
Software discounts, hardware discounts and leases, and discounts on business services such as express
mail, pagers, insurance and car rentals
w
Financing
Flexible financing to help you and your customers acquire hardware, software, and services with
affordable monthly payments
w
Relationship management and membership communications
Electronic access to timely, consistent information and tools based on interests you define, plus
additional relationship management services including telecoverage and/or face-to-face support, based
on your level of membership.
PartnerWorld for Developers Web site, www.developer.ibm.com, is a dynamic, 24-hour, 7-day-a-week service
that provides information about all PartnerWorld program services.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
9
DB2 Universal Database Product Family
The DB2 product family scales through a variety of platforms: AS/400® systems, RS/6000® hardware, IBM
zSeries™ systems, Intel systems, and non-IBM machines such as Hewlett-Packard and Sun Microsystems.
DB2 UDB Version 8 database software servers run on the following software environments: AIX, HP–UX 11i,
Linux, Solaris Operating Environment, Windows NT Version 4, Windows 2000, Windows XP, and Windows .NET
Editions are available for both 32-bit and 64-bit operating environment modes.
There are three types of DB2 clients: Run-Time Client, Administration Client and Application Development
Client. DB2 clients can connect to DB2 servers two releases later or one release earlier than the client’s release
level, as well as to servers at the same release level. This means that a DB2 Version 6 client can connect to DB2
servers at versions 5, 6, 7, and 8.
DB2 Version 8 Clients are available for the following platforms: AIX, HP-UX, Linux, Solaris, Windows NT Version
4, Windows 98, Windows 2000, Windows ME, Windows XP (32-bit and 64-bit editions), and Windows .NET
(32-bit and 64-bit editions). Support on other platforms may be available through earlier versions of DB2 Clients.
In addition to clients, Web access is provided with popular browsers and Java applications using DB2's native
Java/JDBC support and Net.Data.
Figure 1. DB2 UDB Version 8.1 Product Family
The DB2 Server and Clients products and components include:
w
DB2 Personal Edition
w
DB2 Workgroup Server Edition
w
DB2 Enterprise Server Edition
w
DB2 Everyplace™ Edition
w
DB2 Run-Time Client
w
DB2 Administration Client
w
DB2 Application Development Client
DB2 Personal Edition
DB2 Personal Edition is a single-user version of DB2. It can be used to create and manage local databases, or
as a client to DB2 Workgroup Server Edition or Enterprise Server Edition database servers.
DB2 Personal Edition can also act as a satellite, remotely administered from a DB2 Enterprise Server Edition
database server. For more information about satellite functionality, refer to the product satellite administration
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
10
documentation.
DB2 Personal Edition runs on Windows ME, Windows NT Version 4, Windows 2000 (32–bit), Windows XP
(32–bit or 64–bit), and Windows .NET (32–bit or 64–bit).
DB2 Workgroup Server Edition
This product is a multi-user version of DB2. It is designed for use in a Local Area Network (LAN) environment
and provides support for both local and remote DB2 clients. DB2 Workgroup Server Edition also includes data
warehouse capabilities and can be administered remotely from a satellite control database.
DB2 Workgroup Server Edition runs on AIX, HP–UX 11i, Linux, Solaris Operating Environment, Windows NT
Version 4, Windows 2000, Windows XP, and Windows .NET only on 32–bit mode.
DB2 Enterprise Server Edition
This product is a multi-user version of DB2 that allows you create and manage non-partitioned or partitioned
database environments. Partitioned database systems can manage high volumes of data and provide benefits
such as increased performance, high availability, and fail over support.
DB2 Enterprise Server Edition (ESE) provides support for both local and remote DB2 clients. It also includes
DB2 Connect functionality for accessing data stored on midrange and mainframe database systems such as DB2
for iSeries™ or DB2 for z/OS and OS/390.
Satellite administration capabilities allows DB2 ESE to remotely administer DB2 Personal Edition and DB2
Workgroup Server Edition database servers that are configured as satellites.
Another feature worth mentioning is the inclusion of a data warehouse server and related components.
DB2 Enterprise Server Edition runs on AIX, HP–UX 11i, Linux, Solaris Operating Environment, Windows NT
Version 4, Windows 2000, and Windows .NET. It is available on 32–bit and 64–bit mode for all operating
environments except on specific versions of Solaris.
DB2 Everyplace
DB2 Everyplace is a relational database and enterprise synchronization system for mobile and embedded
devices. DB2 Everyplace enables enterprise application functionality and enterprise data to be extended to
mobile devices such as personal digital assistants (PDAs), handheld personal computers (HPCs), and smart
phones. DB2 Everyplace runs on AIX, Linux, Palm OS, QNX Neutrino, Solaris, Symbian, EPOC, Windows NT,
Windows 95, Windows 98, Windows 2000, and Windows CE. It also supports the Java platform.
For data synchronization, DB2 Everyplace Sync Server works with the DB2 database to synchronize mobile data
and applications to and from backend data sources. The platforms supported are AIX, Linux, Windows NT,
Windows 2000, and Windows XP. DB2 Everyplace Sync Server supports DB2 for iSeries, DB2 UDB for OS/390,
Informix®, DB2 UDB for UNIX and Windows, Oracle, Microsoft SQL Server, and Sybase data sources.
DB2 Run-Time Client
The Run-Time Client is a lightweight client that provides the functionality required for an application to access
DB2 UDB and DB2 Connect servers. Functionality includes communication protocol support and support for
application interfaces such as JDBC, SQLJ, Open Database Connectivity (ODBC), CLI, and OLE DB. Most of the
previous Run-Time Client GUI facilities have been removed from Run-Time Client Version 8, therefore disk
requirements have been reduced considerably.
DB2 Run-Time Clients are available for the following platforms: AIX, HP-UX, Linux, the Solaris Operating
Environment, and Windows operating systems.
DB2 Administration Client
From workstations on a variety of platforms, the Administration Client provides the ability to access and
administer DB2 databases. The DB2 Administration Client has all the features of the DB2 Run-Time Client and
also includes all the DB2 administration tools and support for thin clients.
DB2 Administration Clients are available for the following platforms: AIX, HP-UX, Linux, the Solaris Operating
Environment, and Windows operating systems.
DB2 Application Development Client
The DB2 Application Development Client (ADC) is a collection of graphical and non-graphical tools and
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
11
components for developing character-based, multimedia, and object-oriented applications. Special features
include the Development Center and sample applications for all supported programming languages. The ADC
also includes the tools and components provided as part of the DB2 Administration Client product. See the
Application Building Guide: Building and Running Applications for details on how to set up a programming
environment.
DB2 Application Development clients are available for the following platforms: AIX, HP-UX, Linux, the Solaris
Operating Environment, and Windows operating systems.
The ADCs for the supported platforms include the following:
w
Precompilers for C/C++, COBOL, and Fortran, providing the language is supported for that platform.
w
Embedded SQL application support, including programming libraries, include files and code samples.
w
DB2 Call Level Interface (DB2 CLI) application support, including programming libraries, include
files, and code samples to develop applications which are easily ported to ODBC and compiled with an
ODBC SDK. An ODBC SDK is available from Microsoft for Windows operating systems, and from
various other vendors for many of the other supported platforms. For Windows operating systems, DB2
clients contain an ODBC driver that supports applications developed with the Microsoft ODBC Software
Developer’s Kit. For all other platforms, DB2 clients contain an optionally installed ODBC driver that
supports applications that can be developed with an ODBC SDK for that platform, if one exists. Only
DB2 Clients for Windows operating systems contain an ODBC driver manager.
w
DB2 Java Enablement, which includes DB2 Java Database Connectivity (DB2 JDBC) support to
develop Java applications and applets, and DB2 embedded SQL for Java (DB2 SQLJ) support to
develop Java embedded SQL applications and applets.
w
Java Development Kit (JDK). JDK 1.3.1 and Java Runtime Environment (JRE) 1.3.1 from IBM for AIX,
IBM Developer Kit and Runtime Environment 1.3.1 for Linux and for Windows, HP-UX Software
Developer’s Kit and Runtime Environment 1.3.1 for HP-UX, and the Java Development Kit 1.3.1 for
Solaris from Sun Microsystems. Except for Solaris, the respective JDK for each operating system will be
installed if any components are selected for install that require Java to run. If none are selected, the JDK
can still be selected to be installed. On Solaris, JDK 1.3.1, which is shipped with DB2, must be installed
by the user.
w
ActiveX Data Objects (ADO) and Object Linking and Embedding (OLE) Automation Routines
(UDFs and Stored Procedures) on Windows operating systems, including code samples implemented
in Microsoft Visual Basic and Microsoft Visual C++. Also, code samples with Remote Data Objects
(RDO) implemented in Microsoft Visual Basic.
w
Object Linking and Embedding Database (OLE DB) table functions on Windows operating systems.
w
DB2 Development Center, a graphical application that supports the rapid development of routines
(stored procedures and user-defined functions), and structured types. It can be launched as a
stand-alone application or from a DB2 Universal Database center, such as the Control Center, the
Command Center, or the Task Center. The Development Center is implemented with Java, and all
database connections are managed by using a JDBC API. The Development Center also provides a DB2
Development Add-In for each of the following development environments: Microsoft Visual C++, Version
6, Microsoft Visual Basic, Version 6 and Microsoft Visual InterDev, Version 6.
w
Interactive SQL through the Command Center or Command Line Processor (CLP) to prototype SQL
statements or to perform ad hoc queries against the database.
w
A set of documented APIs to enable other application development tools to implement precompiler
support for DB2 directly within their products. For example, IBM COBOL on AIX uses this interface.
Information on the set of Precompiler Services APIs is available from the PDF file, prepapi.pdf, at the
anonymous FTP site: ftp://ftp.software.ibm.com/ps/products/db2/info/.
w
An SQL92 and MVS Conformance Flagger, which identifies embedded SQL statements in applications
that do not conform to the ISO/ANSI SQL92 Entry Level standard, or which are not supported by DB2
UDB for z/OS and OS/390. If you migrate applications developed on a workstation to another platform,
the Flagger saves you time by showing syntax incompatibilities.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
12
DB2 Products
Other important DB2 products are:
w
DB2 Connect Enterprise Edition, a connectivity server that concentrates and manages connections
from multiple desktop clients and web applications to DB2 database servers running on host (OS/390
and z/OS, and DB2 for VSE & VM) or iSeries systems. DB2 Connect Enterprise Edition enables local
and remote client applications to create, update, control, and manage DB2 databases and host systems
using Structured Query Language (SQL), DB2 APIs, ODBC, JDBC, SQLJ, or DB2 CLI. In addition, DB2
Connect supports Microsoft Windows data interfaces such as ADO, RDO, and OLE. This product is
currently available for AIX, HP-UX, Linux, Solaris, and Windows operating systems. These servers
provide support for applications running on AIX, HP-UX, Linux, Solaris operating environment, and
Windows operating systems.
w
DB2 Connect Personal Edition, which provides access from a single workstation to DB2 databases
residing on servers such as OS/390, z/OS, OS/400, VM and VSE, as well as to DB2 Universal Database
servers on UNIX and Windows operating systems. DB2 Connect Personal Edition provides the same rich
set of APIs as DB2 Connect Enterprise Edition. This product is currently available for Linux and Windows
operating systems.
w
DB2 Relational Connect, which is used in a federated system to query and retrieve data located on
other database management systems (DBMSs), such as Oracle, Sybase, and Microsoft SQL Server.
SQL statements can refer to multiple DBMSs or to individual databases in a single statement. For
example, you can join data located in a DB2 UDB table, an Oracle table, and a Sybase view. In DB2
UDB Version 7.1, DB2 Relational Connect was available for Oracle on the Windows NT and AIX
platforms. In DB2 UDB Version 7.2, the Oracle support has been enhanced to include additional
operating systems, and support for Sybase and Microsoft SQL Server data sources has been added.
Supported DBMSs include Oracle, Sybase, Microsoft SQL Server and members of the DB2 Universal
Database family (such as DB2 for OS/390, DB2 for OS/400, and DB2 for Windows). DB2 Relational
Connect is an optional product that can be used with DB2 Universal Database Enterprise Edition, DB2
Universal Database Enterprise Extended Edition, DB2 Connect Enterprise Edition, and DB2 Connect
Unlimited Edition. The operating systems supported are OS/2, Windows NT, Windows 2000, AIX, and
Solaris operating environment.
w
DB2 XML Extender, which provides the ability to store and access XML documents, to generate XML
documents from existing relational data, and to insert rows into relational tables from XML documents.
XML Extender provides new data types, functions, and stored procedures to manage your XML data in
DB2 . This product is available for the following operating systems: OS/390, z/OS, iSeries, AIX, Sun
Solaris, Linux, Windows NT, and Windows 2000.
w
DB2 Net Search Extender, which combines the performance of DB2 Net Search Extender v7.2 with the
search interface and functionality of DB2 Text Information Extender. DB2 Net Search Extender v8.1
now offers users and application programmers a fast, versatile, and intelligent method for searching
full-text documents. It includes word, phrase, fuzzy, and wildcard searches and works seamlessly with
text data contained in DB2 UDB. It is designed to rapidly search and index data without locking database
tables, and it is able to handle the heavy text search demands of large Web sites. This product is
available for AIX, Solaris operating environment, Windows NT, Windows 2000, and Windows XP
operating systems.
w
DB2 OLAP Server™ and its add-on features, such as DB2 OLAP Integration Server and DB2 OLAP
Server Analyzer, which allow you to build online analytical processing (OLAP) applications that are
production-ready and Web-ready. These products are sold separately. DB2 OLAP Server for Version 8
includes DB2 OLAP Server Miner, a no-cost add-on. This feature automatically mines large volumes of
OLAP data. Hybrid analysis is a new function of DB2 OLAP Integration Server that you can use to
access more data without enlarging your OLAP database. It builds a virtual extension from an OLAP
database to the relational database that contains the lowest members of your OLAP hierarchies. The
DB2 OLAP Sever and Integration Server are available on the following operating systems: : AIX, HP-UX,
the Solaris operating environment, Windows NT 4.0, Windows 2000, and Windows XP.
w
DB2 Warehouse Manager, a package that includes components to enhance and complete the
warehousing capability provided by the Data Warehouse Center, a part of DB2. These components are
Data Warehouse tools (Warehouse transformers, Warehouse agent, Classic Connect drivers) and
Information Catalog Manager tools (Information Catalog Center, Information Catalog Center for the Web,
Information Catalog Manager Samples, Manage Information Catalog Wizard). Warehouse Manager
servers are offered for AIX and Windows operating systems. Additional support is provided by
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
13
warehouse agents on the following platforms: OS/390, z/390, OS/400, AIX, Solaris, Linux, and Windows.
For version 8 of DB2 Warehouse Manager the following capabilities have been enhanced: Common
warehouse metamodel (CWM) XML support, Data Warehouse Center column mapping, Data
Warehouse Center cascading processes, multiple wait support, SQL select and update step, and the
Information Catalog Manager.
w
Multiplatform tools for DB2 Universal Database are application tools designed to enhance DB2
Universal Database across the AIX, HP-UX, Solaris Operating Environment, Linux, and Windows,
platforms with the introduction of DB2 Web Query Tool for Multiplatforms, DB2 Table Editor for
Multiplatforms, DB2 Recovery Expert for Multiplatforms, DB2 Performance Expert for Multiplatforms,
and DB2 High Performance Unload for Multiplatforms.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
14
Data Types Conversion
Most of the Sybase data types can be mapped to DB2 UDB. The following table compares all data types:
Sybase Data Type
Name
tinyint
smallint
int
integer
Range of Values
0 to 255
-32768 to 32,767
-231 ( -2,147,483,648) to 231
-1 (2,147483,647)
Bytes of
Storage
1
2
4
DB2 UDB Data
Type Name
smallint
smallint
integer
int
bigint
Range of Values
-32768 to 32767
-32768 to 32767
-231 to 231 - 1
9223372036854775808 to
+9223372036854775807
-1031+1 to 1031-1
( p+s <=31)
Bytes of
Storage
2
2
4
8
numeric(p,s)
dec[imal](p,s)
float(p)
-1038 to 1038 -1
2-17
h/w dependent
4 or 8 1
real
h/w dependent
4
real
double precision
h/w dependent
8
double precision
smallmoney
-214,748.3648 to
214,748.3647
-922,337,203,685,477.5808
to
922,337,203,685,477.5807
January 1, 1900 to June 6,
2079
January 1, 1753 to
December 31, 9999
January 1, 1753 to
December 31, 9999
4
numeric(10,4)
6
8
numeric(19,4)
11
42
timestamp 7
83
timestamp
8
timestamp
money
smalldatetime
datetime
timestamp4
num[eric](p,s)
dec[imal](p,s)
float(p)
date8
time9
char[acter](n)
varchar(n)
char[acter] varying
0 to page size 5
0 to page size 5
n
entry length
char[acter](n)
varchar(n)
character varying
long varchar(n)11
nchar(n)
0 to page size 5
n * char size
nvarchar(n)
nchar varying
0 to page size 5
entry length *
char size 6
unichar
univarchar
binary(n)
0 to page size 5
0 to page size 5
0 to 255
varbinary(n)
0 to 255
bit
0 or 1
text
0 to 231 - 1 (2,147,483,647)
image
0 to 231 - 1 (2,147,483,647)
6
n
entry length
1
multiples of
a page size
multiples of a
page size
(p/2) + 1
4 or 8
0 or from -3.402E+38 to
-1.175E-37, or from
1.175E-37 to 3.402E+38
0 or from -1.79769E+308 to
-2.225E-307, or from
2.225E-307 to 1.79769E+308
4
( 8 digits)
8
(16 digits)
January 1, 0001 to December 10 internal, 26
31, 9999
external
January 1, 0001 to December 10 internal, 26
31, 9999
external
January 1, 0001 to December 10 internal, 26
31, 9999
external
year: 0001 to 9999,
4 internal,
month: 1 to 12,
10 external
day: 1 to 31
hour: 0 to 24.
3 internal,
minutes/seconds: 0 to 59
8 external
1 to 254
n
1 to 32,672 10
entry length
1 to 32,700
graphic(n)
1 to 127
vargraphic(n)
1 to 16,336 10
entry length
2*n
2 * entry length
long vargraphic(n)11 1 to 16,350
2 * entry length
DBCLOB(n)
graphic(n)
vargraphic(n)
character(n) FOR
BIT DATA12
varchar(n) FOR
BIT DATA
character(1) FOR
BITDATA
CLOB(n)
1 to 1 073 741 823
1 to 127
1 to 2000
1 to 254
2*entry length
2*n
2*entry length
n
BLOB(n)
1 to 4000
entry length
0 or 1
1
1 to 231
entry length
1 to 231
entry length
Note: Some DB2 UDB data types that are not available in Sybase have been included in the table.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
15
1
float storage is 4 bytes if precision < 16 or 8 bytes if precision is >= 16.
2
datetime values are accurate to 1/300 of a second on platforms that support this level of granularity. Storage size is 8
bytes: 4 bytes for the number of days since the base date of January 1, 1900, and 4 bytes for the time of day.
3
smalldatetime values are accurate to the minute. Storage size is 4 bytes: 2 bytes for the number of days since January
1, 1900, and 2 bytes for the number of minutes since midnight.
4
timestamp is a user-defined data type that is defined as varbinary(8) NULL. It is used in tables that are to be browsed in
Client-Library applications (see "Browse Mode" for more information). Sybase Adaptive Server automatically updates
the timestamp column each time its row is modified. A table can have only one column of timestamp data type.
5
Maximum column length depends on page size and locking scheme. A page size can be 2K, 4K, 8K or 16K. The
maximum length for a fixed length column is 16,296 for all pages locking and 16,294 for data only locking. The
maximum length for a variable length column is 16,228 for all pages locking and 16,229 for data only locking.
6
This data type allows national character set specifications, where 1 character uses > 1 byte
7
DB2 timestamp format is YYYY-MM-DD-HH-MM-SS-NNNNNN (year-month-day-hour-minutes-seconds-microseconds).
8
date is a three-part value, YYYY-MM-DD (year, month, and day), where year ranges from 0001 to 9999, month ranges
from 01 to 12, and day ranges from 01 to 31.
9
time is a three-part value, HH:MM:SS (hour, minute, and second), designating a time of day under a 24-hour clock.
10
The maximum length for varying-length data types depend on the table space page size, the value provided
corresponds to a table on a table space with page size of 32K. The default page size for a table space is 4K, in which
case the maximum length for varchar is 4000 and for vargraphic is 2000.
11
Special restrictions apply to an expression resulting in a varying-length string data type whose maximum length is
greater than 254 bytes. Such expressions are not permitted in a SELECT DISTINCT statement's SELECT list, a GROUP
BY clause, an ORDER BY clause, a column function with DISTINCT, and a subselect of a set operator other than
UNION ALL.
12
FOR BIT DATA specifies that the contents of the column are to be treated as bit (binary) data. During data transfer with
other systems, code page conversions are not performed. Comparisons are done in binary, irrespective of the database
collating sequence. The smallint datatype can also be used to map this type as long as a check constraint is declared to
restrict the values to 0 and 1.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
16
Administration Issues
This section compares the administrative features available in Sybase Adaptive Server Enterprise Version 12.5
(Adaptive Server) and DB2 UDB Version 8.1 for UNIX, Linux and Windows.
Environments
In Sybase, several Adaptive servers can be created to define different environments. Sybase has a separate
server process for backup.
DB2 UDB uses instances to provide separate environments within the same machine. Other instances can also
be used to restrict access to sensitive information or to limit the impact of instance unavailability. However,
multiple instances require additional system resources (memory and disk space) and more administration. The
resource settings for each instance, including memory, are user-defined and stored in individual configuration
files. The DB2 registry variable DB2INSTANCE indicates the default instance. The command attach enables
applications to specify an instance which may be the current instance, another instance on the same workstation,
or an instance on a remote workstation. The following figure illustrates the relationships among database objects
within instances:
Figure 2. DB2 Database objects
Administration Server
Adaptive Server includes an Open Server program called Backup Server that performs dumps and loads
commands. The Backup Server runs on the same machine as Adaptive Server.
DB2 Administration Server (DAS) is a separate server process that supports TCP/IP communications. The DAS
is used to assist with tasks on DB2 servers (including backups). The DAS assists the Control Center,
Development Center, Replication Center, and Configuration Assistant when working on the following
administration tasks:
w
Enabling remote administration of DB2 servers.
w
Providing the facility for job management, including the ability to schedule.
w
Running of both DB2 and operating system user-defined command scripts.
w
Defining the scheduling of jobs, viewing the results of completed jobs, and performing other
administrative tasks against jobs located either remotely or locally to the DAS using the Task Center.
w
On Windows and UNIX platforms, providing a means for discovering information about the configuration
of DB2 instances, databases, and other DB2 administration servers in conjunction with the DB2
Discovery utility. This information is used by the Configuration Assistant and the Control Center to
simplify and automate the configuration of client connections to DB2 databases.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
17
With DB2 Version 8, a DB2 Administration Server is provided for all DB2 platforms. This includes zSeries
(OS/390 and z/OS only) and iSeries, as well as all supported Windows and UNIX platforms.
Enterprise-wide data
Adaptive Server Component Integration Services allows users to access both Sybase and non-Sybase databases
on different servers. These external data sources include Adaptive Server, Oracle, and DB2.
A DB2 federated system is a special type of distributed database management system (DBMS). A federated
system consists of a DB2 instance that operates as a federated server, a database that acts as the federated
database (one that allows access to one or more data sources), and clients (users and applications) that access
the database and data sources. A federated system supports distributed requests to multiple data sources within
a single SQL statement. For example, you can join data that is located in a DB2 table, an Oracle table, and a
Sybase view in a single SQL statement.
Data sources include relational databases and other types such as Microsoft Excel, BLAST, Table-structured
files, Documentum (EDMS 98), and XML tagged files (1.0 specification). Supported DBMSs include DB2 for
UNIX and Windows, members of the DB2 family (such as Informix, DB2 for OS/390, DB2 for VM and VSE, and
DB2 for iSeries), Sybase, Oracle, and Microsoft SQL Server.
Here is a brief summary of the enhancements to federated support in DB2 Version 8:
w
w
w
Support on additional operating systems: DB2 for Linux, DB2 for HP-UX, and Windows® 2000
Write capability to perform INSERT, UPDATE, and DELETE actions on the all data sources
Ability to create remote tables on relational data sources.
Database Devices
Sybase uses database devices to store data for a database. In UNIX, raw partitions were required as database
devices to ensure data integrity. Adaptive Server version 12 introduces a flag dsync to indicate whether or not a
database device is buffered. This allows you to create database devices as files under UNIX file systems.
DB2 UDB stores data in table spaces. A table space can be either a system managed space (SMS) or a
database managed space (DMS). For an SMS table space, each container is a directory within the operating
system, and the operating system's file manager controls the allocation of storage space. For a DMS table
space, each container is either a fixed-size preallocated file or a physical device such as a disk, and DB2 UDB
controls the storage space. A container is a physical storage device (directory, file, or raw device).
Figure 3. DB2 UDB table spaces
DB2 UDB has three table space types: regular, temporary, and large. Regular table spaces are used for tables,
indexes, and system catalog tables. Temporary table spaces are used during SQL operations that require disk
space, such as sorting or reorganizing tables, creating indexes, and joining tables. Large table spaces are used
to store Large Object Data (LOB). A single table space may consist of several containers. A database can use
different table spaces for indexes, tables, and LOBs. The create table command is used to associate a table to a
table space. It is recommended that users allocate one container for each physical disk to enable I/O parallelism.
Log Files
Sybase log data is recorded on the database device or on a separate log device. The dump transaction
command allows the user to copy the transaction log and remove the inactive portion. The disk mirror command
creates a data device mirror, thus allowing the user to mirror the transaction log by mirroring the database device
or log device where the log data is stored.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
18
DB2 UDB databases have log files associated with them; table spaces are not used for log data. These logs
record all database changes. The number of log files is controlled by two configuration parameters: logprimary
and logsecond. Active logs are used during crash recovery to prevent a failure (such as a system power failure or
an application error) from leaving a database in an inconsistent state. After a failure, the following actions are
taken to ensure the integrity of the database: changes that are already made but are uncommitted are removed
from the database (rolled back), and all committed units of work, which may not have been physically written to
disk, are redone. The size of all the active logs must be less than 256 GB if infinite active logging is not used.
Circular and archive logging are the two methods available in DB2 UDB, and can be specified by database
configuration parameters. Circular logging is the default. It uses a number of online logs for crash recovery in a
circular fashion. The logs are used and retained only to the point of ensuring the integrity of current transactions.
Only full database off-line backups are valid for recovery, and roll forward from the last backup is not allowed.
Archive logging enables forward recovery using active and archived logs to any point in time before the failure.
When changes in the active log are no longer needed for normal processing, the log is closed, and it becomes an
archived log. A database can be rolled forward up to the last completed transaction, after a full database backup
has been restored. Once archive logging is enabled, online database backups can be performed. A user exit
program can be specified to manage archived logs.
The ARCHIVE LOG command closes and truncates the active log file for a recoverable database. This
command can be used to collect a complete set of log files up to a known point. After an online backup is
complete, DB2 UDB forces the currently active log to be closed and as a result it will be archived off. This
ensures that your online backup has a complete set of archived logs available for recovery.
In Version 8, dual logging is provided on all platforms supported by DB2 UDB. This feature is controlled by the
database configuration parameter mirrorlogpath. When a value is present in mirrorlogpath, dual logging is
enabled and this value specifies the secondary log path.
Infinite active logging is new in Version 8. Its allows an active unit of work to span the primary logs and archive
logs, effectively allowing a transaction to use an infinite number of log files. Without infinite active log enabled,
the log records for a unit of work must fit in the primary log space. Infinite active log is enabled by setting
logsecond to -1 if archive logging is enabled. Infinite active log can be used to support environments with large
jobs that require more log space than the one allocated for the primary logs.
The block on log disk full option allows the DB2 server to continue functioning when applications are running and
all the log files from the active log path are full. It can be set using the database configuration parameter
blk_log_dsk_ful in Version 8. When you enable this option, DB2 will retry every five minutes allowing you to
resolve the full disk situation and allowing the applications to complete their execution.
Database Security
Sybase authentication is controlled by users, logins, and groups, which are objects defined in the database. In
Adaptive Server, the unified login required and use security services parameters can enable user authentication
by a third party security service such as Windows NT LAN Manager, DCE, and Kerberos (CyberSAFE) on UNIX.
DB2 UDB authentication of a user is completed using an external security facility such as the native operating
system security, distributed computing environment (DCE), or Kerberos (only on Windows 2000, Windows XP,
and Windows .NET operating systems). A user must have a valid login system name in order to gain access to a
database. The authentication type for each instance determines where it takes place (server or client). The
authentication type is stored in the database manager configuration file at the server.
Sybase authorization is defined by means of roles and privileges. There are three roles: SA, SSO, and OPER.
There is also a special user for each database called the database owner (dbo).
DB2 UDB authorization is defined by means of authorities and privileges. Authority levels provide a method of
grouping privileges and control over higher-level database manager maintenance and utility operations.
Privileges enable users to create or access database resources. Together, these act to control access to the
database manager and its database objects. Users can access only those objects for which they have the
appropriate authorization, that is, the required privilege or authority. The hierarchy between authorities and
privileges is shown in the following figure:
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
19
Figure 4. DB2 Authorities and Privileges
In DB2, the following authorities exist:
w
w
w
w
w
System administration (SYSADM)
System control (SYSCTRL)
System maintenance (SYSMAINT)
Database administration (DBADM)
LOAD
SYSADM, SYSCTRL, and SYSMAINT can have a group name assigned that is managed by the operating
system facility. These settings are stored in the database manager configuration file. When DBADM is granted,
all of the following privileges are also granted: CONNECT, CREATETAB, BINDADD, and IMPLICIT_SCHEMA.
The LOAD authority allows users who are not SYSADM or DBADM to load data into a table. Sybase roles can be
mapped to DB2 authorities or groups to which certain database authorities have been granted.
Sybase uses permissions to restrict access to objects and commands based on a user's identity or group
membership. The commands grant and revoke are used to give or deny users permission to create databases, to
create objects within a database, and to access specified tables, views, and columns.
In DB2, privileges are stored in the database catalogs for a given database. The following types of object
privileges exist: database, schema, table space, table, view, nickname, server, package, index, routine and
sequence. The table space USE privilege controls which table spaces can be used to create tables. The
sequence USAGE privilege is automatically assigned to the sequence creator. The statements grant and revoke
can be executed to assign or to remove privileges to a given user. Most Sybase permissions can be mapped to
DB2 privileges. Some privileges in DB2 UDB are not available in Sybase, such as package and schema
privileges.
Sybase has a special system administrator user (SA) who is responsible for administrative tasks to set up and
maintain the server. In DB2, the System Administration (SYSADM) authority is the highest level of authority
within the database manager, and controls all database objects. This parameter defines the group name with
SYSADM authority for the database. In UNIX, the initial value is null and defaults to the primary group of the
instance owner. In Windows NT, the value defaults to the Administrator Group. Following installation, a different
group name can be assigned to SYSADM within DB2 UDB.
Dump/Load
The dump and load commands on Sybase are limited to databases and transaction logs. All dump operations
must specify a dump device, which can be a database logical device or an operating system filename. When a
database dump is loaded, the database device allocations need to match the usage allocations in the dumped
database. The dump command can be executed while the database is active; it does not reflect any data
changes made to the database after the command begins. It supports point in time recovery using the until_time
option in the load transaction command; however, it cannot be used for a database in which the data and logs
are on the same device or whose log has been truncated since the last dump database command was executed.
DB2 UDB backup and restore procedures can be performed on databases and table spaces. Archived log files
can be backed up in the same fashion as ordinary operating system files. The target device for the backup
operation can be a disk directory, a tape device, a named pipe, a Tivoli Storage Manager (TSM) server, a
storage manager that supports Backup Services APIs (XBSA), or another vendor’s server. The restore command
supports relocation of table spaces using the redirect parameter. This support includes adding, changing, or
removing table space containers. Online backups can be performed when archived logging is enabled.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
20
Two types of incremental backups are available:
w
w
Incremental (changes from last full backup)
Delta (changes from last backup of any type)
Point in time recovery is possible using the rollforward command. When recovering from a system failure, the
time specified should be before the system failure. The load and export commands can be used to back up
individual tables.
The recovery history file contains a summary of the backup information that can be used in case all or part of the
database must be recovered to a given point in time, and it is used to track events related to recovery, such as
backup, restore, and load operations.
DB2 UDB Version 8 includes several backup and recovery enhancements:
w
w
w
w
XBSA support
Ability to restore to systems with different code pages
Faster table space recovery by processing only log files that are needed
Point in time rollforward recovery to local time instead of GMT time
The Backup and Restore wizards have been rewritten to simplify their use. They also support the features added
to backup and restore in Version 8.
Online Utility Tools
Adaptive Server configuration parameters can be managed using the system stored procedure sp_configure,
editing the server configuration file or specifying the name of the configuration file when starting up the server.
Configuration parameters can be dynamic or static. A dynamic parameter new value takes effect right away,
while a static parameter requires to stop and restart the server before the new value takes effect.
With DB2 V8, over 50 configuration parameters can now be set online. Changes to these online configuration
parameters take immediate effect without the need to stop and start the instance, or deactivate and activate the
database. Users can remain connected when the system is tuned or the configuration is changed. All
configuration parameters can be changed using the Control Center GUI or the commands update database
configuration and update database manager configuration.
The bcp utility imports data from a file or exports data to a file. The main uses of these utility are importing data
from other programs or RDBMs, moving data between Adaptive Servers or exporting data from the database.
When using bcp to import to a table the process acquires an exclusive intent lock on the table, an exclusive page
lock on each data page or data row and an exclusive lock on index pages. This utility has two modes Fast bcp
which logs each row insert that it makes and Slow bcp which logs only page allocations, copying data into tables
without indexes or triggers at the fastest speed possible.
DB2 provides separates commands to import and export data. The load command copies data into a DB2 table
from a file, tape, or named pipe on the server. When you're loading data into a table in Version 8, the table
space in which the table resides will no longer be locked. Users have full read and write access to all the tables in
the table space, except for the table being loaded. For the table being loaded, the existing data in the table will
be available for read access if the load is appending data to the table specifying the parameter allow read
access. The default is allow no access. The load command will lock the target table for exclusive access during
the load.
The export command in DB2 copies data to an external file which is determined by a select statement. The file
formats available are the following:
w
w
w
DEL (delimited ASCII format)
WSF (work sheet format)
IXF (integrated exchange format, PC version includes most of the table attributes, as well as any existing
indexes)
Adaptive Server reorg command reorganizes the use of a table space. The four subcommands available define
the level or reorganization. These subcommands are reorg forwarded_rows, reorg reclaim_space, reorg
compact, and reorg rebuild. The reclaim_space and compact subcommands run on tables or indexes. The
reclaim_space, forwarded_rows, and compact subcommands use multiple small transactions of brief duration
which are limited to eight pages of reorg processing, and provide time and resume options to set a time limit and
continue at a later time.The rebuild subcommand holds an exclusive table lock for its entire duration. The opdiag
utility generates reports to asses the need to run the reorg command
DB2 reorg commang reorganizes an index or a table. In Version 8, there are two methods of reorganizing tables
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
21
offline and online using the reorg table command. The parameters allow no access or inplace determines if the
reorganization is offline or online respectively. Online table reorganization allows applications to access the table
during the operation. In addition, online table reorganization can be paused and resumed later by anyone with the
appropriate authority by using the schema and table name. An index can be indicated to physically reorder the
records in the table it is reorganizing. The reorgcheck command calculates statistics on the database to
determine if tables or indexes, or both, need to be reorganized or cleaned up.
During Online index reorganization, the user has the ability to read and update a table and its existing indexes
using the new reorg indexes command in DB2 V8. A "shadow copy" of the index object is made, leaving the
original indexes and the table available for read and write access. Any concurrent transactions that update the
table are logged. Once the logged table changes have been applied and the new index (the shadow copy) is
ready, the new index is made available. While the new index is being made available all access to the table is
prohibited.
Jobs
In Sybase, the Transact-SQL command waitfor defines a specific time, time interval, or event for the execution
of a statement block, stored procedure, or transaction. Sybase uses alarms (database structures) for the proper
execution of this command.
DB2 offers a graphical user interface called the Task Center to organize task flows, schedule tasks, and
distribute notifications about the status of completed tasks. A task can be created from a script that contains
DB2, operating system, or MVS JCL commands. This is particularly useful for scheduling administrative tasks
such as backup.
Another DB2 tool available is the Journal, which permits you to run, schedule, and delete jobs and view the
recovery history log and messages log.
System Stored Procedures and Administrative Tools
Sybase supplies system procedures used for getting reports from and updating system tables. These procedures
are located in a separate database, sybsystemprocs, and are owned by the System Administrator.
DB2 UDB provides an Administrative API to perform database management tasks, such as creating, activating,
backing up, or restoring a database. These APIs can be invoked from any application, embedded SQL programs
or not, written in the following programming languages: C, COBOL, Fortran, and REXX.
Sybase Central is a graphical user interface for managing Sybase products. It runs on Windows NT 4.0 and
Windows 95.
The DB2 Control Center (CC), is a graphical interface to manage a local database server or multiple remote
database servers and their database objects. The CC also manages databases on OS/390 or z/OS. The CC is
available on AIX, HP-UX, Linux, Sun Solaris, and Windows operating systems. From the CC, the following
administration tasks can be performed on database objects:
w
w
w
w
w
w
w
w
w
w
w
w
w
Create and drop a database
Create, alter, and drop a table space or table
Create, alter, and drop an index
Back up and recover a database or table space
Define the replication sources and subscriptions and to replicate data between systems
Set database manager configuration values that affect performance
Configure database manager communications parameters
Generate database information in a profile that can be used to configure clients
Perform licensing tasks, such as confirm DB2 products installed and number of user licenses purchased
Optimize queries, jobs, and scripts
Perform data warehousing tasks
Generate SQL statements used to define database objects
Convert Control Center actions into scripts
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
22
The following figure illustrates the Control Center Main Window:
Figure 5. Control Center Main Window
The following DB2 tools are available from the Control Center toolbar:
w
Command Center, to issue DB2 database commands, SQL statements, and operating system
commands and to view their results
w
Task Center, to create and run operating system level and DB2 command scripts
w
Journal, to run, schedule, and delete jobs and view the recovery history log and messages log.
w
License Center, to configure and to display the status of the DB2 product licenses
w
Replication Center new in DB2 Version 8, to design set up and manage a replication environment
w
Satellite Administration Center, to set up and administer both satellites, and the information that is
maintained in the satellite control tables at a central DB2 control server
w
Data Warehouse Center, to manage Data Warehouse objects
w
Information Catalog Center, to manage business metadata
w
Health Center, to monitor instances. This center also issues alerts about potential problems and provides
recommendations to resolve those problems. It offers specific monitoring tools, such as the Memory
Visualizer to drill-down into specific performance areas.
w
Development Center, to develop stored procedures, user-defined functions, and structured types
w
Information Center, to search for help on tasks, commands, and information in the DB2 library, and also
to update local documentation
The DB2 launchpads and wizards in the Control Center assist in completing administration tasks by stepping you
through the tasks. There are launchpads and wizards to add partitions (Distributed environment), backup
databases, create databases, create table spaces, create tables, monitor workload performance, configure
database manager and database parameters to improve performance, restore databases, and configure
database logging.
Database Consistency
Sybase has a database consistency checker, called dbcc, that enables users to obtain detailed information on the
consistency of tables and indexes. It is recommended that dbcc be run as a regular maintenance task, before
every backup and when a system error occurs. For performance reasons, it is advisable to run dbcc during
non-peak hours. The dbcc utility verifies that the page pointers chain is valid, checks that the row offset table is
consistent, checks that the index rows are in ascending key order on the index pages, and verifies that
non-clustered leaf index keys values are the same as the column value in the data row.
In DB2 UDB, db2dart can be used to verify that the architectural integrity of a database is correct. It is not
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
23
required to be run on a regular basis. DB2 UDB performs an automatic crash recovery after a system failure.
This tool should be run on the DB2 server where the database resides and when there are no active connections
to the database. The inspection options include a database, a table, all table space files and containers, a table
space and all its tables, and a table space structure but not its tables. For complete information on db2dart
options, type db2dart without any options. The following validations are performed:
w
w
w
w
The control information is correct
There are no discrepancies in the format of the data
The data pages are the correct size and contain the correct column types
Indexes are valid
Although Sybase dbcc statements and DB2 UDB tools produce different output information, the following table
only maps the functionality between dbcc commands and db2dart commands:
Sybase dbcc
DB2 UDB db2dart
1
dbcc checkdb (database-name)
db2dart database-name /DB
dbcc checktable (table-name)
db2dart database-name /T /TSI tablespace-id /TN table-name
dbcc checkstorage (database-name)2
db2dart database-name /DB 3
db2 list tablespaces show detail
dbcc checkcatalog (database-name)
db2dart database-name /TS /TSI 0 4
dbcc reindex(table-name)
db2dart database-name /MI /TSI tablespace-id /OI index-object-id 5
1
Default option
dbcc checkstorage contains additional allocation information. It is stored in the database dbccdb.
3
db2dart does not store any data in a database. Additional allocation information can be obtained by issuing
the DB2 command list tablespaces
4
Where 0 is the tablespace-id for the catalog table space , which by default is SYSCATSPACE.
5
Indexes are marked as invalid and rebuilt when the index is first accessed or when the database is restarted, based
on the value of the indexrec database and the database manager configuration parameters (See the Administration
Guide for details.)
2
In DB2 Version 8 the command INSPECT was introduced in order to inspect database for architectural integrity,
checking the pages of the database for page consistency. The inspection checks that the structures of table
objects and structures of table spaces are valid. It is available as an API and can be run online.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
24
Implementation Differences
This section compares implementation features available in Sybase Adaptive Server Enterprise version 12.5
(Adaptive Server) and DB2 UDB Version 8.1 for UNIX, Linux, and Windows.
Isolation Levels
Sybase supports four isolation levels. Level 0 prevents other transactions from changing data already modified,
but lets them read the uncommitted data ("dirty reads"). Level 1 (the default) prevents dirty reads, level 2
prevents non-repeatable reads, and level 3 prevents phantoms. In previous versions, if level 2 was specified,
level 3 was also enforced.
DB2 UDB also supports four isolation levels: Read Stability, Repeatable Read, Cursor Stability, and
Uncommitted Read. Regardless of the isolation level, the database manager places exclusive locks on every row
that is inserted, updated, or deleted. Thus, all isolation levels ensure that any row that is changed by this
application process during a unit of work is not changed by any other application processes until the unit of work
is complete.
Sybase
0
1 (default)
DB2 UDB
Uncommitted Read
Cursor Stability (default)
2
Read Stability
3
Repeatable Read
The defaul level, Cursor Stability, ensures that any row that was changed by another application process cannot
be read until it is committed by that application process.
Statement Isolation Levels
In Sybase, the at isolation clause for a select statement indicates the isolation level for the query. The values that
can be specified as isolation levels are 0, 1, 2, or 3.
DB2 UDB isolation levels can be defined at the statement level for more granularity and improved performance
and concurrency. The with clause at the end of the select statement specifies the desired isolation level. The
values are RR (Repeatable Read), RS (Read Stability), CS (Cursor Stability), and UR (Uncommited Read).
SELECT SALARY+BONUS+COMM AS TOTAL_PAY
FROM EMPLOYEE
ORDER BY TOTAL_PAY
WITH RS
Locking Mechanisms
Adaptive Server has two locking schemes: allpages and data only. The latter offers row-level locking in addition
to page locking. Lock promotion has two tiers: from page locks to table locks or from row locks to table locks.
Lock promotion is controlled by configuration parameters or by the system stored procedures
sp_setrowlockpromote and sp_setpglockpromote to define the number of row locks or page locks that the server
acquires on a table before it attempts to escalate to a table lock. In version 11.9.X, the command lock table was
introduced.
DB2 UDB employs row-level locking by default (page-level locking is not an option). However, the database
manager can escalate a lock to the table level. In order to minimize or avoid escalation, an entire table can be
explicitly locked with the SQL command lock table.
DB2 UDB lock escalation can be influenced by modifying the value of the Maximum Percent of Lock List Before
Escalation (maxlocks) and the Maximum Storage for Lock List (locklist) parameters in the database configuration
file. Also, the locksize parameter of the alter table statement can be used to control how locking is done for a
specific table.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
25
System Databases
The master database controls the operation of Adaptive Server as a whole, and stores information about all user
databases and their associated database devices. DB2 UDB has a catalog table space called SYSCATSPACE,
which contains all the system catalog tables for a single database. All other aspects of database configuration
can be controlled by the DB2 command interface or the Control Center. The operating system security facility
must be used to manage user accounts.
Sybase system procedures are stored in the sybsystemprocs database. The tasks automated by these
procedures can be performed using the DB2 UDB graphical interface Control Center to administer local and
remote databases or DB2 APIs. (See the previous section “Administration Issues - System Stored Procedures”.)
The Sybase model database provides a template, or prototype, for new user databases. Typically, changes made
to the model database are: adding user-defined data types, rules, or defaults; adding users who should have
access to all databases; and granting default privileges particularly for guest accounts. DB2 UDB does not
require a model database: a script can be written to create a database, define data types, and grant privileges.
The db2look command can be used to generate a script that recreates an existing database model and statistics.
Users that are already created can have access to all databases using group membership or trusted connections.
The Sybase temporary database tempdb provides a storage area for temporary tables and other temporary
working storage needs (for example, intermediate results of group by and order by). In DB2 UDB, each database
has one or more temporary table spaces for such purposes. Having a table space instead of a database brings
several advantages: applications running on different databases use different table spaces (storage areas), and
system managed space (SMS) table spaces need very little administration (limited by file system free space).
Sybase provides the following optional system databases: sybsecurity (auditing database), sybsystemdb
(two-phase commit transaction database), pubs2 and pubs3 (sample databases), and dbccdb (dbcc database).
Sybase dbccddb stores configuration information, and the operation activity is recorded by the command dbcc
checkstorage for a target database. It also contains the dbcc stored procedures for creating and maintaining
dbccdb and for generating reports on the results of dbcc checkstorage operations.
Sybase sample databases are pubs2 and pubs3. DB2 UDB provides a sample database called Sample, along
with the API db2sampl to create this database. It also provides First Steps, a graphic tool for Intel platforms that
helps in creating and manipulating the Sample database. The product documentation and sample programs refer
to this database. There is an additional sample database for Data Warehousing functionality that can be created
using the tool First Steps.
Finally, the sybdiagdb database which stores diagnostic configuration data for debugging purposes. Its intended
use is for Sybase Technical Support personnel only. DB2 UDB records details from backup, restore operations,
and load operations to the recovery history. DB2 command list history can be used to display the content of the
recovery file. The Journal tool (from the Control Center) can be used to display the database history. The Alerts
view in the Health Center can be used to display and work with current alerts.
SQL
Sybase is compliant with the SQL92 at the Entry-level. This compliant behavior is set by default for embedded
applications; the command set in Transact-SQL can be used to change it. Also, to be compliant with the SQL92
Entry-level, identifiers must not begin with a pound sign (#), contain lowercase letters, or exceed 18 characters.
Transact-SQL extensions allow the pound sign, the @ sign, lower case letters, and up to 30 characters in length.
DB2 UDB is also compliant with the SQL92 standard at the Entry-level, but includes features from the
Intermediate and Full levels and the future SQL3. There are no commands available to change the SQL
compliance level, but the SQLFLAG option on the PREP command can be used on SQL embedded applications
to check that the SQL syntax conforms to the SQL92 Entry Level syntax. Identifiers for tables, views, and aliases
are limited to 128 characters, column names are limited to 30 characters, and all other object identifiers cannot
exceed 18 characters in length.
Tables
In Adaptive Sever, the full specification of a table name in the create table command includes database name,
owner and table name. The database name and owner are optional, and the default values are the current
database name and the current user. However, if a database name is present the database must exists and the
user must be listed in the sysusers table and have create table permission for that database. This command can
be used to also create global and local temporary tables. The ON clause specify a segment_name where the
table is going to be stored.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
26
A DB2 fully qualified table name consist only of the schema and table name. In order to access a table on
another database an alias must be created, when an alias is defined a server object is specified which contains
the server connection information. Aliases permit access to tables on other local, remote or federated databases.
This command can also create materialized query tables, stage tables, and typed tables. DB2 provides a
command to create temporary tables, please see next topic Temporary Tables. The IN and LONG IN specify a
table space name where the table and the LOB columns will be stored. The INDEX IN specify a table space
name where the indexes will be stored.
Some data types provided by Microsoft SQL Server to define table columns are different than DB2 built-in data
types. The Data Types Conversion section provides a guideline to convert data types between Microsoft SQL
Server and DB2.
The following table summarizes some differences in limitations for tables between Adaptive Server and DB2
UDB:
Description
Table space page size
Maximum length of a row
Sybase
DB2 UDB
2K, 4K, 8K, 16K
4K, 8K, 16K, 32K
16,300 bytes
1
32,677 bytes 2
Maximum columns in a table
1,024
1012 3
Maximum indexes in a table
249 non-clustered
1 clustered
32 767 or storage
600 bytes
1024 bytes
2 billion
65 534
1,024
1012 3
Maximum elements in a select
250
1012 3
Maximum number of tables referenced in a
select or view
16
storage
Maximum number of columns in an
ORDER BY clause
31
1012 3
2014 bytes
32,677 bytes 2
Longest index key
Maximum tables in a database
Maximum columns in a view
Maximum total length of columns in an
ORDER BY clause
1
2
3
This value is based on a page size of 16K, and locking scheme data only.
This value is based on a table space page size of 32K, and varies according to the page size.
This value is based on a table space page size of either 8K, 16K, or 32K.
Temporary Tables
Sybase supports temporary tables, which are stored in the tempdb database. There are two types of temporary
tables, local and global. Local temporary tables have their names start with a number sign ( # ) and are visible
only in the current session (connection), while global temporary tables have their names start with the prefix
"tempdb.." and are visible in all sessions.
In DB2 UDB a declared global temporary table (DGTT) is accessible only by the application that creates it and is
automatically dropped at application termination. Such a table is created using the DDL statement declare global
temporary table. If the with replace clause is specified in this statement, then a DGTT with the same name will be
dropped and replaced with the new definition specified.
DECLARE GLOBAL TEMPORARY TABLE gbl_temp
LIKE employee
ON COMMIT DELETE ROWS
NOT LOGGED
IN usr_tbsp
DGTTs are created on a USER TEMPORARY table space, which can be designated using the IN clause. If this
clause is not specified, a table space is chosen from the set of user temporary table spaces. The table space
must be one for which the user has USE privilege, and it must have sufficient page size to contain the table. No
locking is performed on declared temporary tables, and are always created with the qualifier "SESSION".
Changes can be logged or not optionally.
In DB2 Version 8 enhancements to the DGTTs include index and statistics support to improve performance, and
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
27
undo logging to support rollbacks.
A declared temporary table is semantically equivalent to a Sybase local temporary table. Temporary tables
accessed by connections established by different applications can be implemented with DB2 UDB common table
expressions or with the not logged initially clause on the create table and alter table commands to provide
temporary table characteristics.
Indexes
In Adaptive Server, the create index command allows ordering specification. Prior to Version 11.9.X, all indexes
were created in ascending order. Since Version 11.5, the optimizer is able to perform descending index scans,
using the configuration parameter allow backward scans to enable or disable this optimization.
Sybase uses a B-tree model to represent the cluster index in a sparse index (not every row has an index entry).
DB2 UDB creates indexes on a separate structure that replicates the keys values. The cluster factor of a
clustering index is maintained or improved dynamically as data is inserted into the associated table, by
attempting to insert new rows physically close to the row with index key values in the same range. In both
databases, only one clustered index per table is permitted.
DB2 UDB creates indexes on a separate structure that replicates the keys’ values. The database manager uses a
B+ tree structure for index storage. To maintain the cluster factor of a clustering index or improve it dynamically
as data is inserted into the associated table, DB2 attempts to insert new rows physically close to the rows with
index key values in the same range. In both databases, only one clustered index per table is permitted.
Multidimensional clustering (MDC) provides an elegant method for flexible, continuous, and automatic clustering
of data along multiple dimensions. This results in significant improvement in the performance of queries, as well
as significant reduction in the overhead of data maintenance operations, such as reorganization, and index
maintenance operations during insert, update, and delete operations. Multidimensional clustering is primarily
intended for data warehousing and large database environments, and it can also be used in online transaction
processing (OLTP) environments.
In DB2 Version 8, indexes can be of either type 1 or type 2. DB2 Version 8 adds support for type-2 indexes. A
type-1 index is the older index style, indexes created in earlier versions of DB2 are of this kind. The primary
advantages of type-2 indexes are to improve concurrency because the use of next-key locking is reduced to a
minimum and an index can be created on columns that have a length greater than 255 bytes. A table must have
only type-2 indexes before online table REORG and online table LOAD commands can be used against the
table. They are also required for the new multidimensional clustering facility.
Sybase has a fillfactor clause on create index to specify a percentage value that determines how full Adaptive
Server will make each page when it is creating a new index on existing data. The default is 0, to completely fill
the pages.
DB2 UDB has a pctfree clause on the create index command to specify what percentage of each index page to
leave as free space when building the index. However, if a value greater than 10 is specified, only 10% free
space will be left in non-leaf pages. The default is 10%.
Views
Adaptive Server views cannot include order by or compute clauses, the keyword into, or the union operator in the
select statements that define views.
DB2 definition of a view allows a full select statement .The fullselect must not reference host variables,
parameter markers, or declared temporary tables. However, a parameterized view can be created as an SQL
table function. The full select allows the specification of UNION operator, and order by clause but there are
certain exceptions which are listed on the description of the command create view on the DB2 SQL Reference
Guide.
Constraints
Sybase allows the creation of defaults and rules for columns in a database to define default and check
constraints. Rules cannot be defined for a server-supplied data type or to a column of type text, image, or
timestamp.
In DB2 UDB, check and default constraints are defined using the commands create table and alter table at the
column or table level. There are no restrictions on data types. This declarative form to define check and default
constraints not only is the standard way to restrict column data, but also allows multiple definitions for one
column, and declarations are automatically dropped when the table is dropped.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
28
The Sybase integrity constraints definition can indicate whether the index to be created is nonclustered (default)
or clustered. DB2 UDB creates a unique index, using ascending order for every column in the key. If a cluster
index is required, the command reorganize table, specifying an index, uses the index to physically reorder the
records in the table.
Sybase referential constraints cannot cascade changes through related tables in the database. Triggers must be
programmed for this purpose.
DB2 UDB referential constraint definitions have a rule clause to specify what action to take on dependent tables.
There are four possible actions for the delete rule: NO ACTION (the default), RESTRICT, CASCADE, and SET
NULL. If RESTRICT or NO ACTION is specified, an error occurs and no rows are affected. If CASCADE is
specified, the operation is propagated to all the dependent rows. If SET NULL is specified, each nullable column
of the foreign key of each dependent row is set to null. NO ACTION and RESTRICT are the only possible actions
on the update rule.
DB2 Version 8 informational constraints allows the creation of check and referential integrity (RI) constraints on
tables which are not enforced by the database manager, but can still be exploited by the optimizer. The attributes
ENFORCED and NOT ENFORCED define whether the constraint is enforced by the database manager during
normal operations, such as insert, update, or delete. NOT ENFORCED should only be specified if the table data
is independently known to conform to the constraint. Furthermore the ENABLE QUERY OPTIMIZATION and
DISABLE QUERY OPTIMIZATION attributes define whether the constraint can be used for query optimization
under appropriate circumstances.
IDENTITY Columns
Sybase supports the IDENTITY constraint on numeric columns with a scale of 0. IDENTITY columns start with 1
and increment by 1.
In DB2 UDB, each table may have a single column that is defined with the IDENTITY attribute. The column types
supported are: numeric with scale of 0, integer, smallint, and bigint. An initial value and an increment value can
be specified, the default initial and increment value is 1. The values for an identity column can either be always
generated by DB2 (generated always), or only by default (generated by default). The keywords generated always
indicate that DB2 always generates unique values, and applications are not allowed to provide an explicit value.
The keywords generated by default indicate that an application can explicitly provide values, and only when
values are not given DB2 generates one.
CREATE
(c1
c2
c3
TABLE t1
CHAR(30),
DOUBLE,
INT NOT NULL GENERATED ALWAYS as identity,
(START WITH 100, INCREMENT BY 5))
Java-SQL Columns
Adaptive Server Java-SQL capabilities include Java-SQL classes. Once installed they can be used as datatype
for table columns and Transact-SQL variables. They can also be used as default values for table columns. The
data can selectively be stored in the row (data pages) or outside (similar to text/image columns).
DB2 UDB permits the user to create distinct types based on the built-in source data types and structured types
which consist of several attributes. These user defined data types can be specified as column data types.
DB2 UDB generated columns are defined in a base table where the stored value is computed using an
expression, rather than being specified through an insert or update operation. One or more generated columns
can be added to a table. It is also possible to create a nonunique indexes on a generated column.
CREATE TABLE t1
( c1 INT,
c2 DOUBLE,
c3 DOUBLE GENERATED ALWAYS AS (c1 + c2)
c4 GENERATED ALWAYS AS
(CASE WHEN c1 > c2 THEN 1 ELSE NULL END));
CREATE INDEX i1 ON t1(c4);
When issuing a query that includes the same expression, the generated column can be used directly, or the
query rewrite component of the optimizer can replace the expression with the generated column.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
29
SELECT c1 + c2 FROM t1 WHERE (c1 + c2) * c1 > 100;
can be rewritten as:
SELECT c3 FROM t1 WHERE c3 * c1 > 100 ;
DB2 User defined data types and generated columns are always available to the user independent of the choice
of programming language for the user interface.
Scrollable Cursors
Adaptive Server supports read-only and updatable cursors. Open Client DB-Library supports client-side cursors,
including static, keyset-driven, and dynamic. Backward fetches are available for keyset-driven or dynamic
cursors only. Applications cannot run unless required DB-Library stored procedures are installed. Scrollable
cursors are not supported by the JDBC or Open Client interfaces.
DB2 UDB supports static, forward-only, and scrollable cursors. There are two types of scrollable cursor: static
and keyset-driven. The latter provides the ability to detect or make changes to the underlying data. Application
support for static scrollable cursors is provided through DB2 CLI, ODBC, JDBC, and SQLJ. Keyset-driven
scrollable cursors are supported through DB2 CLI and ODBC.
ANSI Join Operators
Sybase has a specific syntax for right and left outer joins of *= and =* ; however, full outer joins are not
supported. Adaptive Server has included ANSI syntax for left and right outer joins since Version 12.
The DB2 syntax for joins is ANSI-style, with the operators INNER, LEFT [OUTER], RIGHT [OUTER], FULL
[OUTER]. The ANSI join operators also follow the ANSI definitions for join behavior. The ANSI-style join syntax
helps to avoid ambiguous interpretation when other conditions are specified in the WHERE clause.
SELECT deptno, deptname, empno, lastname
FROM department LEFT OUTER JOIN employee
ON mgrno= empno
Transactions
Sybase defines a transaction by enclosing SQL statements and system procedures within the phrases begin
transaction, save transaction, and commit. The save transaction command provides a mechanism for selectively
rolling back portions of a batch. If chained transaction mode is enabled, Adaptive Server implicitly invokes a
begin transaction before the following statements: delete, insert, open, fetch, select, and update. A commit must
still explicitly close the transaction.
DB2 does not require explicit transactions: implicit transaction is the only mode available. However, Compound
SQL (embedded) defines a group of several SQL statements into a single executable block. Compound SQL is
supported through embedded static SQL and the DB2 Call Level Interface. There are two types of compound
SQL:
w
w
Atomic: returns a response when all substatements have been executed successfully or when one of
them ends in an error. When an error occurs, the entire block is rolled back.
Not Atomic: returns a response when all substatements have been executed, regardless of whether or
not a preceding substatement failed. The entire block is rolled back only when the unit of work that
contains it is rolled back.
A Compound SQL (dynamic) statement groups statements together into an executable block. SQL variables can
be declared. This statement can be embedded in a trigger, SQL function, or SQL method, or issued through the
use of dynamic SQL statements. It is an executable statement that can be dynamically prepared.
BEGIN ATOMIC
DECLARE p1 INTEGER DEFAULT 3;
DECLARE s VARCHAR(80);
SET s = 'INSERT INTO employee(empno) VALUES (?);'
PREPARE stmt FROM s;
EXECUTE stmt USING p1;
END;
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
30
DB2 UDB savepoint is similar to a Compound embedded SQL statement. Both mechanisms define a group of
several SQL statements into a single executable block. If any of the substatements ends in an error, only that
substatement will be rolled back. This implementation provides more granularity than a Compound SQL
statement. In order to start the savepoint block, the command savepoint is required. At the end of a savepoint
block of statements, the savepoint can be released (release savepoint savepoint-name) or rolled back to the
savepoint (rollback to savepoint). DB2 does not support the use of a savepoint within another savepoint. DB2
does not enable the use of savepoints within atomic Compound SQL or the use of atomic Compound SQL within
a savepoint.
SAVEPOINT sp1;
PREPARE s1 FROM 'SELECT FROM t1';
ALTER TABLE t1 ADD COLUMN...
PREPARE s2 FROM 'SELECT FROM t2';
OPEN c1 USING s1;
OPEN c2 USING s2;
ROLLBACK TO SAVEPOINT;
FETCH c1; --invalid (DDL statement changed object t1)
FETCH c2; --successful
...
RELEASE SAVEPOINT sp1;
Triggers
Sybase triggers are coded using Transact-SQL and stored in the database itself. Adaptive Server allows nested
triggers by default, and up to 16 levels. Triggers are always activated after a user action is attempted. Only one
trigger per user action (insert, update, delete) per table can be coded, and multiple user actions can be specified
in its definition. Subsequent trigger definitions for the same action will override the previous definition without a
warning.
DB2 UDB triggers are defined with the create trigger statement, stored in the database, and compiled at run time
with the SQL statements that are associated with the trigger. The maximum depth of cascaded triggers is 16. A
triggered action is composed of one or more SQL procedure statements, which can contain a dynamic compound
statement or any of the SQL control statements. Optional or conditional execution of these SQL statements can
be specified using the WHEN clause or the CASE expression. The triggered actions can be insert, update, or
delete. If no cascade before is specified, the triggered action will not cause other triggers to be activated.
Triggers can be activated before or after the triggered action by using the keywords no cascade before or after in
the create trigger statement. Multiple triggers can be created for the same event, activation time, and subject
tables. The order in which the triggers are activated is the same as the order in which they were created. Triggers
cannot call stored procedures, but they can invoke User-Defined Functions (UDFs).
The Sybase deleted and inserted logical tables are transition tables that hold the old values or new values of the
rows that may be changed by the user action.
The DB2 UDB create trigger statement provides referencing for transition variables by specifying correlation
names and provides referencing for transition tables by specifying table names. Correlation names identify a
specific row in the set of rows affected by the triggering SQL operation, while table names identify the complete
set of affected rows. Each row or set of rows affected by the triggering SQL operation is available to the triggered
action by qualifying columns with correlation names and table names. The Microsoft SQL Server if update
(column) can be converted to WHEN (oldtable.column != newtable.column), or the column can be specified in the
trigger definition using update of column to specify the user action that activates the trigger.
CREATE TRIGGER reorder
AFTER UPDATE OF on_hand, max_stocked ON parts
REFERENCING NEW AS n_row
FOR EACH ROW MODE DB2SQL
WHEN (n_row. on_hand < 0.10 *n_row. Max_stocked
AND n_row.order_pending = 'N')
BEGIN ATOMIC
VALUES(issue_ship_request(n_row.MAX_STOCKED -n_row. On_hand,
n_row.PARTNO));
UPDATE PARTS SET parts.order_pending = 'Y'
WHERE parts.partno = n_row.partno;
END
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
31
INSTEAD OF triggers are supported in DB2 Version 8, they provide an extension to the updatability of views.
Using an instead of trigger, the requested update operation against the view gets replaced by the trigger logic,
which performs the operation on behalf of the view. The view must be updatable; refer to the create table
command description in the DB2 SQL Reference for more details. This feature gives transparency to the
application which assumes all operations are performed against the view.
CREATE VIEW EMPV(EMPNO, FIRSTNME, MIDINIT, LASTNAME,HIREDATE,
DEPTNAME)
AS SELECT EMPNO, FIRSTNME, MIDINIT, LASTNAME,PHONENO,HIREDATE,
DEPTNAME
FROM EMPLOYEE, DEPARTMENT
WHERE EMPLOYEE.WORKDEPT = DEPARTMENT.DEPTNO
CREATE TRIGGER EMPV_INSERT
INSTEAD OF INSERT ON EMPV
REFERENCING NEW AS NEWEMP
DEFAULTS NULL FOR EACH ROW MODE DB2SQL
INSERT INTO EMPLOYEE (EMPNO, FIRSTNME, MIDINIT, LASTNAME,WORKDEPT,
PHONENO, HIREDATE)
VALUES(EMPNO, FIRSTNME, MIDINIT, LASTNAME,
COALESCE((SELECT DEPTNO FROM DEPARTMENT AS D
WHERE D.DEPTNAME = NEWEMP.DEPTNAME),
RAISE_ERROR('70001', 'Unknown department name')),
PHONENO, HIREDATE)
Stored Procedures
Sybase stored procedures are coded using Transact-SQL, and are stored in the database. The maximum
number of parameters in a stored procedure is 255. Extended stored procedures are also available, to allow the
execution of external procedural language functions within the database server. Any programming language that
is capable of calling a C language function and manipulating C language data types can be used. Extended
stored procedures are implemented by an Open Server application called XP Server, which runs on the same
machine as Adaptive Server.
Using Adaptive Server Java-SQL capabilities, Java classes can be installed in the database and methods can be
invoked from Transact-SQL. These methods can be defined as SQLJ stored procedures and be manipulated in
the same manner as Transact-SQL stored procedures. SQLJ stored procedures can return result sets and be
called from applications using JDBC or ODBC. Sybase Central can be used to create and execute SQLJ stored
procedures.
DB2 UDB stored procedures can be coded in SQL or in compiled libraries using third-generation languages,
including C, C++, COBOL, Microsoft Visual Basic and Java (SQLJ/JDBC). The maximum number of parameters
is 32767. Nested stored procedures are supported in SQL, Java and C procedures. Multiple result sets can be
returned to the calling stored procedure or the calling application. Stored procedures can run in the same address
space as the database manager, or in a separate space by specifying the clause fenced or not fenced on the
create procedure statement. Running stored procedures that are not adequately checked out on the same
address space as the database server can compromise integrity of such servers.
In SQL Procedures, the procedural logic is defined in the procedure body contained in a create procedure
statement. The DB2 SQL Procedural Language (SQL PL) is based on ANSI/ISO standard SQL/PSM. The
platforms supported are Windows NT, AIX, and Sun Solaris operating systems. The following example shows a
create procedure statement for a simple stored procedure. The procedure name, the list of parameters that are
passed to or from the procedure, and the LANGUAGE parameter are common to all stored procedures.
However, the LANGUAGE value of SQL and the BEGIN/END block, which forms the procedure body, are
particular to an SQL procedure.
CREATE PROCEDURE UPDATE_SALARY_1
(IN EMPLOYEE_NUMBER CHAR(6),
IN RATE INTEGER)
LANGUAGE SQL
BEGIN
UPDATE EMP
SET SALARY = SALARY * (1.0 + RATE / 100.0)
WHERE EMPNO = EMPLOYEE_NUMBER;
END
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
32
After the create procedure statement is executed, the DB2 Parser analyzes the statement. Information is stored
in the catalog tables SYSIBM.SYSPROCEDURES and SYSIBM.SYSPROCPARMS. A C stored procedure is
generated, a build routine is executed, and the shared library containing the procedure is installed in the proper
directory. The shared library compile and link steps require a C or C++ compiler to be available on the database
server machine. However, once an SQL procedure is defined, it can be distributed in a compiled form to DB2
databases that run on the same platform.
DB2 allows the user to extract and install SQL procedures in compiled form from one database into another one.
DB2 provides both a command line interface and a programming interface for the extraction and the installation
operations. The command line interface consists of two CLP commands: GET ROUTINE and PUT ROUTINE.
The programmatic interface consists of two built-in stored procedures: GET_ROUTINE_SAR and
PUT_ROUTINE_SAR. For more information on the command line interface, refer to the Command Reference,
and on the programming interface refer to the SQL Reference.
There is no direct translation between Transact-SQL and DB2 SQL PL statements but there is equivalent
functionality. The following table attempts to establish an equivalency between Transact-SQL and SQL PL for
DB2 for the most relevant statements:
TransactSQL
DB2 SQL PL
DECLARE @varname datatype = defaultvalue
DECLARE varname datatype DEFAULT defaultvalue;
SELECT @var1=value
SET var1 = value;
SELECT @var1=colname from table where…
SET var1 = ( SELECT colname from table where…);
SELECT @v1=col1,@v2=col2,@v3=col3 from table...
SELECT col1,col2,col3 into v1,v2,v3 from table...
WHILE expression BEGIN … END
WHILE expression DO … END WHILE;
CONTINUE
ITERATE
BREAK
LEAVE loop_label
IF (….) BEGIN … END ELSE …..
IF (….) THEN … ELSE ….. END IF;
EXECUTE procname( parm1,parm2,...)
CALL procname( parm1,parm2,…);
EXECUTE @retval=procname( parm1,parm2,…)
CALL procname( parm1,parm2,…);
GET DIAGNOSTICS retval = RETURN_STATUS;
RETURN <int_value>
RETURN < int_expr>;
@@rowcount
GET DIAGNOSTICS <var> = ROW_COUNT
GOTO <label>
GOTO <label>
RAISERROR <error>,"msg"
SIGNAL <sqlstate> SET MESSAGE_TEXT='msg'
( The semantic is slightly different because of the
SQLSTATE type (CHAR5) and RAISERROR does not
interrupt control flow.)
Stored procedures can be programmed using embedded static or dynamic SQL, CLI, or Java. Java Stored
procedures can be coded using SQLJ or JDBC. Procedural logic can be easily implemented in any of the
programming languages to match Transact-SQL logic.
The following figure illustrates the architecture for DB2 stored procedures in SQL or a third-generation language:
Figure 6. DB2 UDB Stored Procedures
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
33
The Application Development Client includes the Development Center, a graphical application that supports the
rapid development of DB2 stored procedures. The Development Center can be used to create, build, and deploy
Java and SQL stored procedures on local and remote DB2 servers.
Other features of the Development Center include:
w
w
w
w
Capability to test and debug the execution of installed stored procedures using the integrated debugger
A view of the contents of the server for each database connection in a project and ability to work with
other database objects such as tables, triggers, and views
Export and import routines and project information
Add-ins for easy access to Development Center features and other DB2 centers from IBM's WebSphere
Studio Workbench, Microsoft Visual Studio.Net, Microsoft Visual Basic, and Microsoft's Visual InterDev
The Development Center manages all database connections using the JDBC API. Several IBM DB2 JDBC
drivers are installed with the ADC. Using a JDBC driver, connections can be established to any local DB2 alias
or remote database. In order to connect to an OS/390 or z/OS server, DB2 Connect must be installed. This tool
is available on AIX, HP-UX, Linux, the Solaris Operating Environment, and Windows. Stored procedure
development and deployment support for the entire DB2 family of servers including OS/390 and AS/400.
Enhancements for routines (stored procedures, user-defined functions, and methods) in DB2 Version 8 include
the following:
w
w
w
w
w
w
w
w
w
w
Catalog views for functions, methods, and stored procedures have been merged into
SYSCAT.ROUTINES and SYSCAT.ROUTINEPARMS. The previous catalog views are still supported for
compatibility.
The routine EXECUTE privilege has been defined to explicitly control who can invoke routines.
New authorities have been defined to explicitly control who can register external routines.
There is an ALTER statement for external routines to change the EXTERNAL NAME to reference a new
routine body.
NOT FENCED routines support nesting and recursion. There are no restrictions on the types of routines
that can be nested. For example, FENCED routines can invoke NOT FENCED routines, and vice-versa.
NOT FENCED stored procedures can return result sets. SQL procedures are automatically registered as
NOT FENCED.
Java routines now support recursion. There are no restrictions on the types of routines that can be
nested. Routines are now implemented using a thread-based model.
Routines defined as thread-safe will run in a single fenced-mode process. There is one process for Java
routines and another process for non-Java routines to reduce the amount of context switching for users
that run large numbers of fenced mode routines. For Java routines, this will also allow resource sharing
of the Java Virtual Machine (JVM).
The DB2 library manager dynamically adjusts its library caching according to your workload.
External UDFs and methods can now contain read-only SQL statements. Both static and dynamic SQL
can be used.
The CALL statement is now a fully compiled statement. This means that the CALL statement can now be
dynamically prepared in CLI, ODBC, embedded SQL, JDBC, and SQLJ. Input arguments to a stored
procedure call can be expressions.
User Defined Functions
Adaptive Server Java-SQL capabilities allow the user to create Java User-Defined Functions and SQLJ UDFs by
adding an SQL wrapper to methods for a class. Once a Java class is installed in the Adaptive Server database,
the create function command must be used to add the SQL wrapper for each method prior to invoking the UDFs
from Transact-SQL statements.
DB2 UDB has five different types of functions that can be created using the CREATED FUNCTION statement:
w
w
w
w
External scalar and table functions written in C, C++, or Java (SQLJ/JDBC) that return a scalar value or
a complete table
OLE DB External table function that allows data access from an OLE DB provider
Source or template functions whose definition is based on an existing function
SQL scalar, table, or row functions that have a body defined by SQL PL statements and that return a
scalar, a row, or a complete table.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
34
The following examples illustrate the DB2 syntax for creating an SQL scalar and SQL table function:
CREATE FUNCTION TAN (X DOUBLE)
RETURNS DOUBLE LANGUAGE SQL CONTAINS SQL
NO EXTERNAL ACTION DETERMINISTIC
RETURN SIN(X)/COS(X);
CREATE FUNCTION DEPTEMPLOYEES (DEPTNO CHAR(3))
RETURNS TABLE (EMPNO CHAR(6), LASTNAME VARCHAR(15),
FIRSTNAME VARCHAR(12))
LANGUAGE SQL READS SQL DATA NO EXTERNAL ACTION
DETERMINISTIC
RETURN
SELECT EMPNO, LASTNAME, FIRSTNME
FROM EMPLOYEE
WHERE EMPLOYEE.WORKDEPT = DEPTEMPLOYEES.DEPTNO
Java UDFs must be coded and compiled before executing the create function command to register the external
UDF in the database. A copy of the class file should be saved to the default function path when the external
name does not include a full path specification. These same steps apply to all external UDFs. The following
examples include the Java code and the create function statement for the stringlen( ) UDF:
import java.lang.*;
// for String class
import COM.ibm.db2.app.*;
// UDF and associated classes
class UDFsrv extends UDF
{
public void scalarUDF(String inputString, int outputStrLen)
throws Exception
{
try
{
set(2, inputString.length());
}
catch (Exception e)
{
throw e;
}
}
}
CREATE FUNCTION stringlen ( VARCHAR(20) , INT )
RETURNS INT
FENCED VARIANT NO SQL
NO EXTERNAL ACTION
LANGUAGE JAVA
PARAMETER STYLE DB2GENERAL
FINAL CALL DISALLOW PARALLEL DBINFO
EXTERNAL NAME "DB2Udf!scalarUDF"
The Development Center can be used to create, build, and deploy the following UDFs:
w
w
w
w
SQL table and scalar UDFs
UDFs that read MQSeries® messages
UDFs that access OLE DB data sources
UDFs that extract data from XML documents
There are many enhancements to routines (stored procedures, user-defined functions, and methods) in DB2
Version 8. The term routine is used to encompass stored procedures, UDFs, and methods. This reflects the fact
that as of DB2 Version 8, parameter styles, data type mappings, and system catalogs are the same for all three
routine types.
Please refer to the previous topic Stored Procedures, which includes a detailed list of enhancements and
highlights for all types of DB2 routines including UDFs.
XML in the Database
Adaptive Server version 12.5 provides methods for storing XML documents and generating them from SQL data.
This feature, written entirely in Java, allows a user to select raw data from Adaptive Server using XQL to
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
35
compose an XML document, and to store XML documents in Adaptive Server.
Sybase provides a Java XML parser to install a query engine which can run as a standalone program or inside
the Adaptive Server. It is also compatible with any query engine that is compliant with SAX 2.0.
DB2 XML Extender provides the ability to store and access XML documents (XML columns), to generate XML
documents from existing relational data, and to insert rows into relational tables from XML documents (XML
collections). The XML Extender provides new data types, functions, and stored procedures to manage XML data
in DB2 . XML UDFs store, retrieve or search XML columns. XML stored procedures compose relational data into
XML documents or decompose XML documents into relational data using Document Access Definition (DAD)
and Document Type Definition (DTD) files. A DAD file specifies the mapping between the XML document and
the DB2 table structure; style sheets and XML schemas specify additional instructions for XML format and
content.
The XML Extender provides three methods of administration: the XML Extender administration wizard, the XML
Extender administration command, and the XML Extender stored procedures.
The XML Extender is supported on the following platforms: iSeries, OS/390, z/OS, AIX, Sun Solaris, Linux,
Windows NT and Windows 2000 operating systems.
Global Variables
Sybase provides global variables to report system or connection information. The global variable names start
with '@@' characters.
DB2 UDB has special registers for that purpose, such as CURRENT SERVER, CURRENT DATE, CURRENT
TIME, and USER. Where a special register is not available to provide an equivalent to a global variable, a DB2
scalar UDF can be defined.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
36
Programming Interfaces
DB2 Programming Interfaces Overview
DB2 provides the following programming interfaces to develop applications:
w
Embedded SQL
Uses SQL statements that are precompiled before a program is compiled. The SQL statements can be
static or dynamic. Using DB2, embedded SQL applications can be coded in the C/C++, COBOL, Fortran,
Java (SQLJ), and REXX programming languages.
w
DB2 Call Level Interface (CLI)
A callable SQL interface based on the X/Open CLI specification; compatible with the Microsoft
Corporation's Open Database Connectivity (ODBC).
w
DB2 Application Programming Interfaces (APIs)
APIs that perform database administration tasks, such as create, activate, back up, and restore. DB2
APIs can be called from applications, including embedded SQL and DB2 CLI applications.
w
Java Development Kit
Tools and environment to develop Java applications and applets. The kit includes driver support for
client applications and applets written in Java using JDBC. It also provides support for embedded SQL
for Java (SQLJ), Java user-defined functions (UDFs), and Java stored procedures.
w
Microsoft Visual Basic and Visual C++
Programming environments used to develop applications conforming to Data Access Object (DAO) and
Remote Data Object (RDO) specifications, and ActiveX Data Object (ADO) applications that use the
Object Linking and Embedding Database (OLE DB) bridge or the IBM® OLE DB Provider for DB2.
w
IBM or third-party tools
Applications can also be developed using tools such as Net.Data, Excel, Perl, PHP, and Open Database
Connectivity (ODBC), as well as end-user tools such as Lotus Approach and its programming language,
LotusScript.
DB2 Version 8 supports compilers, interpreters, and related software for AIX, HP-UX, Linux, Solaris, and
Windows operating systems. This information and supported programming environments are documented in DB2
Application Development Guide: Building and Running Applications and the DB2 UDB V8 application
development page: ibm.com/software/data/db2/udb/ad/. The following figure depicts the architecture for a DB2
client/server application using any of the programming interfaces described above:
Figure 7. Client/Server Architecture
The client application requires the installation of DB2 Run-Time Client or DB2 Administration Client to allow
database connectivity.
DB2 Call Level Interface
DB2 CLI is a programming interface that allows applications to access DB2 databases using dynamic SQL.
These applications can be written in C or C++. DB2 CLI is an alternative to embedded dynamic SQL.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
37
In addition to dynamic SQL, DB2 CLI offers the following advantages :
w
Portability - It uses a standard set of functions to pass SQL statements to the database. It is only
necessary to compile and link a DB2 CLI application before execution; no precompile or bind steps are
needed. It removes the dependence on precompilers.
w
No binding - There is no need to bind individual DB2 CLI applications to each database they access;
only one binding is needed to the bind files that are shipped with DB2 CLI, for all DB2 CLI applications.
w
Multiple connections to a database - DB2 CLI applications can connect to multiple databases,
including multiple connections to the same database, from the same application. Each connection has its
own commit scope.
w
Array fetching and input - Functions can retrieve multiple rows in the database into an array with a
single call. An SQL statement can be executed many times, using an array of input variables.
w
Consistent interface to catalog - It provides a consistent interface among systems to query catalog
information about tables, columns, foreign and primary keys, and user privileges.
w
Extended data conversion - Automatically converts data between SQL and C data types.
w
No global data areas - Eliminates the need for application-controlled global data areas, such as SQLDA
and SQLCA. Instead, it automatically allocates and controls the necessary data structures and provides a
handle to let an application reference them.
w
Retrieve result sets from stored procedures - DB2 CLI applications can retrieve multiple rows and
result sets generated from a stored procedure residing on the server.
w
Scrollable cursors - It supports server-side scrollable cursors that can be used in conjunction with array
output. Static read-only and keyset-driven scrollable cursors can be declared.
The DB2 CLI driver also acts as an ODBC driver when loaded by an ODBC driver manager. It conforms to
ODBC 3.51 (see the CLI Programming Guide for detailed information). DB2 CLI is a self-sufficient driver which
supports a subset of the functions provided by the ODBC driver. The following figure compares the architecture
between an ODBC application and a DB2 CLI application:
Figure 8. DB2 CLI vs. ODBC Architecture
DB2 Java Enablement
DB2 UDB implements two standards-based Java programming APIs: JDBC and SQLJ. DB2's Java enablement
is included in DB2 Application Development Client and it has the following components:
w
Support for client applications and applets written in Java using JDBC
w
Precompile and binding support for client applications and applets written in Java using SQLJ
w
Support for Java UDFs and stored procedures on the server.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
38
Java Runtime Environment (JRE) 1.3.1 is required for running applications and tools on all platforms , except
HP-UX, where JRE 1.4 is required. For application development, Java Development Kit (JDK) is required.
JRE/JDK 1.3.1 is required on all platforms, except 64-bit HP-UX and 64-bit Solaris, where 1.4 is required.
DB2 Version 8 provides Type 2, Type 3 and Type 4 JDBC drivers. The Type 2 and Type 3 drivers continue to
use the DB2 CLI interface to communicate to DB2 UDB servers (OS/400, OS/390, UNIX, Linux, and Windows).
The JDBC Type 2 and Type 3 drivers are provided in the db2java.zip file located in the sqllib\java
directory. DB2 Version 8 adds a new DB2 JDBC Universal Driver (Type 4), which uses the Distributed Relational
Database Architecture™ (DRDA®) protocol for client/server communications. This new driver is provided in the
db2jcc.jar file in the sqllib\java directory.
The following figure shows how JDBC application works with DB2 using the Type 2 driver. Calls to JDBC are
translated to calls to DB2 CLI through Java native methods. JDBC requests flow from the DB2 client through
DB2 CLI to the DB2 server. SQLJ applications use this JDBC support, and in addition require the SQLJ run-time
classes to authenticate and execute any SQL packages that were bound to the database at the precompiling and
binding stage.
Figure 9. Java Application implementation in DB2 with the Type 2 Driver
JDBC Version 2.1 from Sun has two defined parts: the core API, and the Optional Package API. The DB2 type 2
JDBC driver supports the JDBC 2.1 core API; however, it does not support all of the features defined in the
specification. The following features are not supported: Updatable ResultSets, New SQL types (Array, Ref, Java
Object, Struct), Customized SQL type mapping, and Scrollable sensitive ResultSets (scroll type of
ResultSet.TYPE_SCROLL_SENSITIVE). The type 2 driver supports the following features of the Optional
Package API: Java Naming and Directory Interface (JNDI), connection pooling, and Java Transaction APIs
(JTA).
The DB2 type 4 JDBC driver supports the JDBC 2.1 core API, however, it does not support all of the features
defined in the specification. The following features are not supported: Updatable ResultSets, New SQL types
(Array, Ref, Java Object, Struct), and Customized SQL type mapping. The type 4 driver supports JNDI of the
Optional Package API.
For more information on Java application development and the JDBC specification, see the DB2 Universal
Database Java Web site at: www.ibm.com/software/data/db2/java/.
Java 2 Platform, Enterprise Edition (J2EE) defines the standard for developing multi-tier enterprise applications.
The J2EE platform manages the infrastructure and supports the Web services to enable development of secure,
robust and interoperable business applications. The DB2 JDBC Type 2 driver is J2EE certified for use with
WebSphere Application Server (WAS), which means it conforms to J2EE specifications.
The following illustration shows the IBM J2EE application model with all three fundamental parts: components,
containers, and connectors:
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
39
Figure 10. J2EE Application model
Embedded SQL
Sybase provides precompilers for C and COBOL. DB2 UDB supports the C, C++, COBOL, and Fortran
programming languages through its precompilers. It also supports the REXX language (through a dynamic
interpreter) and the Java language.
Sybase uses the variables SQLCODE, SQLCA, and SQLSTATE to communicate between the Adaptive Server
and the application. When using DB2 UDB, set the LANGLEVEL precompile option to SQL92E in order to
declare SQLSTATE and SQLCODE fields explicitly as variables:
EXEC SQL BEGIN DECLARE SECTION;
char SQLSTATE[6]
long SQLCODE;
...
EXEC SQL END DECLARE SECTION;
Sybase allows the use of all Transact-SQL statements, functions, and control-of-flow language in Embedded
SQL, with a few exceptions. DB2 UDB SQL and Transact-SQL extensions are different; some Transact-SQL
statements are not valid in DB2 UDB.
In Sybase, there are statements that associate the descriptor with an SQL statement and with the appropriate
cursor associated with the SQL statement (allocate descriptor, get descriptor, set descriptor). The DB2 UDB
describe command obtains information about a prepared SQL statement.
In Sybase, the connect statement is used to establish a connection between an application program and
Adaptive Server. The connect statement is also available in DB2 UDB, but the syntax is slightly different: a
database name specification is mandatory, but the user specification is optional.
There are two ways in Sybase to group statements: ANSI/ISO SQL mode and Transact-SQL transaction mode.
The latter provides a save transaction or begin transaction statement. DB2 UDB employs the ANSI/ISO SQL
transaction mode for all programming APIs: a transaction begins implicitly with the first executable SQL
statement, and is ended by either a commit or a rollback statement or when the program ends.
Open Client and Open Server Libraries
Sybase Open Client provides two core programming interfaces to write client applications: Client-Library and
DB-Library. Sybase Open Server provides Server-Library for creating server applications. These libraries offer
different features and data structures for communication (CS_CONNECTION for Client-Library, and
DBPROCESS for DB-Library).
DB2 CLI is a callable SQL interface that can be used to program both client applications and server applications.
The same application does not require any source changes to run against DB2 UDB on any Intel or UNIX
platform; therefore, a single base code will allow support for several platforms. The DB2 CLI driver conforms to
ODBC 3.51. Because of DB2 CLI compliance with ODBC 3.51 functions, the application conversion is reduced to
testing in most cases (see DB2 CLI vs. ODBC Function Map section for a table listing supported APIs).
DB2 APIs are supported from a DB2 CLI or embedded SQL application to perform database administration
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
40
tasks, such as creating, activating, backing up, or restoring a database.
DB2 external stored procedures can be coded in static or dynamic embedded SQL, DB2 CLI, or JDBC.
Embedded SQL offers several 3GL options such as C, C++, COBOL, Fortran, and Java (SQLJ). Since Version
7.2 they can also be written in Microsoft Visual Basic. For more details see Stored Procedures under the section
Implementation Differences.
Applications using the DB2 transaction manager for updating multiple databases only need to use connection
type 2. When using other XA-compliant transaction managers supported by DB2, such as IBM TXSeries™
CICS®, IBM TXSeries Encina®, BEA Tuxedo, or Microsoft Transaction Server the proper API provided by the
transaction manger can be used to program applications.
These programming interfaces are very different, but the effort of porting applications to DB2 can be significantly
reduced by using conversion tools (see the Conversion Tools section).
Java Applications
Adaptive Server provides a runtime environment for Java which allows the following capabilities: Invoke Java
methods in the database, store Java classes as datatypes, and store and query XML in the database. The
run-time environment includes a Java VM and the Java classes, or Java API.
The Sybase Java VM supports a subset of JDK Version 2.0 (UNIX and Windows NT) classes and packages. The
Sybase runtime Java classes are the low-level classes installed automatically when Adaptive Server is installed.
Sybase does not support runtime Java packages and classes that assume a screen display, deal with networking
and remote communications, or handle security. By default, Adaptive Server is not enabled for Java, the
spconfigure command must be used to enable the server for Java.
The Sybase native JDBC driver that comes with Adaptive Server supports JDBC Version 1.2. It is compliant with
and supports several classes and methods of JDBC Version 2.0. A client that requires a JDBC driver must use
jConnect Version 5.2 or later, which supports JDBC Version 2.0.
Sybase provides an Enterprise JavaBean (EJB) Server, this framework can be used to create, deploy, and
manage EJBs in a multi-tier environment.
DB2's Java enablement provides support for client applications and applets written in Java using JDBC or SQLJ.
Plus, support for Java UDFs and Java stored procedures on the server.
For application development in DB2, Java Development Kit (JDK) is required. JRE/JDK 1.3.1 is required on all
platforms, except 64-bit HP-UX and 64-bit Solaris, where 1.4 is required.
DB2 Version 8 provides Type 2, Type 3 and Type 4 JDBC drivers. The DB2 type 2 and type 4 JDBC drivers
support the JDBC 2.1 core API (see prior topic DB2 Java Enablement for more details).
WebSphere® Studio is a suite of tools that can be used for all aspects of Web site development into a common
interface. DB2 provides tight integration with WebSphere Studio. DB2 Universal Developer's Edition includes
WebSphere Application Server Standard Edition (a component of WebSphere Studio) for J2EE application
development. The DB2 JDBC Type 2 driver is J2EE certified for use with WAS. The ADC sample programs
include an EJB sample application which includes two business services. One service allows the user to access
information about an employee and the other service allows the user to retrieve a list of the employee numbers.
The ADC samples also include a sample EAR file when deployed with IBM WebSphere Application Server, it
demonstrates how Java clients can interact with Enterprise Java Beans (EJBs) to access data stored in DB2.
Since Adaptive Server and DB2 UDB support Sun Java SDK for development, the porting effort is reduced to
mainly convert the Transact-SQL statements generated by the Java application. If only classes supported by
both RDBMS are used and SQL statements comply to SQL92E standard, it is possible to have a common base
code.
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
41
Terminology Map
The following table compares the basic DB2 UDB administration-related terms to the equivalent terms used by
Sybase Adaptive Server Enterprise:
DB2 Universal Database
Sybase
Physical Layer
Table space
SMS table space
DMS table space
Container (raw or file)
Logical Layer
Server
Instance (one or more; each instance manages one or
more databases)
Database
Database directories (created by DB2)
Node directory (created by DB2)
Database Manager Configuration File
Database Configuration File
Catalog tables
Database Objects
Schema
Table
Table constraint
View
Index
Recovery log
Archive log
Users and user groups (operating system)
Package
Sample database (called sample)
Administration / Usage
Control Center
Tables assigned to table spaces, containers assigned to
table spaces
Administration commands and statements
Binding (binds a DB2 utility or a program to a database so
it can be used)
Backup database
Archive online log files
Restore from backup
Roll-forward recovery
Crash recovery
Run statistics
Load, Import, Export
Command Processor (CLP)
Segment
n/a
n/a
Database device (raw or file)
Server
SQL Server
Database
Interfaces file
Interfaces file
Server configuration file
Database options and server configuration file
System tables (master database and database)
Schema
Table
Rule and table constraint
View
Index
Transaction log
Transaction log dump
Database users, groups and roles
n/a
Sample database (called pubs2)
SQL Central
Tables assigned to segments, Database devices assigned
to databases and segments assigned to database devices,
System stored procedures
n/a
Dump database
Dump transaction
Load database
Load transaction
Automatic recovery
Update statistics
bcp
ISQL
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
42
DB2 CLI vs. ODBC Function Map
The following table summarizes the two levels of support, provides a complete list of ODBC 3.51 functions, and
indicates if they are supported.
ODBC Features
DB2 ODBC Driver
DB2 CLI
Core Level Functions
Level 1 Functions
Level 2 Functions
Additional DB2 CLI Functions
All
All
All
All, functions can be accessed by
dynamically loading the DB2 CLI
library.
All
All
All, except for SQLDrivers()
SQLSetConnection()
SQLGetEnvAttr()
SQLSetEnvAttr()
SQLSetColAttributes()
SQLGetSQLCA()
SQLBindFileToCol()
SQLBindFileToParam()
SQLExtendedBind()
SQLExtendedPrepare()
SQLGetLength()
SQLGetPosition()
SQLGetSubString()
SQL Data Types
All the types listed for DB2 CLI.
C Data Types
All the types listed for DB2 CLI.
SQL_BIGINT
SQL_BINARY
SQL_BLOB
SQL_BLOB_LOCATOR
SQL_CHAR
SQL_CLOB
SQL_CLOB_LOCATOR
SQL_DBCLOB
SQL_DBCLOB_LOCATOR
SQL_DECIMAL
SQL_DOUBLE
SQL_FLOAT
SQL_GRAPHIC
SQL_INTEGER
SQL_LONG
SQL_LONGVARBINARY
SQL_LONGVARCHAR
SQL_LONGVARGRAPHIC
SQL_NUMERIC
SQL_REAL
SQL_SHORT
SQL_SMALLINT
SQL_TINYINT
SQL_TYPE_DATE
SQL_TYPE_TIME
SQL_TYPE_TIMESTAMP
SQL_VARBINARY
SQL_VARCHAR
SQL_VARGRAPHIC
SQL_WCHAR
SQL_C_BINARY
SQL_C_BIT
SQL_C_BLOB_LOCATOR
SQL_C_CHAR
SQL_C_CLOB_LOCATOR
SQL_C_DATE
SQL_C_DBCHAR
SQL_C_DBCLOB_LOCATOR
SQL_C_DOUBLE
SQL_C_FLOAT
SQL_C_LONG
SQL_C_SHORT
SQL_C_TIME
SQL_C_TIMESTAMP
SQL_C_TINYINT
SQL_C_SBIGINT
SQL_C_UBIGINT
SQL_C_NUMERIC **
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
43
ODBC Features
DB2 ODBC Driver
DB2 CLI
Return codes
All the codes listed for DB2 CLI.
SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_STILL_EXECUTING
SQL_NEED_DATA SQL_NO_DATA_FOUND
SQL_ERROR
SQL_INVALID_HANDLE
SQLSTATES
Multiple connections per application
Dynamic loading of driver
Mapped to X/Open SQLSTATES with
additional IBM SQLSTATES, with the
exception of the ODBC type 08S01.
Supported
Supported
Mapped to X/Open SQLSTATES with
additional IBM SQLSTATES
Supported
Not applicable
** Only supported on Windows platform
The following table map DB2 isolation levels to ODBC transaction isolation levels:
IBM Isolation Level
Cursor Stability
Repeatable Read
Read Stability
Uncommitted Read
ODBC Isolation Level
SQL_TXN_READ_COMMITTED
SQL_TXN_SERIALIZABLE_READ
SQL_TXN_REPEATABLE_READ
SQL_TXN_READ_UNCOMMITTED
Note: SQLSetConnectAttr() and SQLSetStmtAttr() will return SQL_ERROR with an SQLSTATE of HY009 if you try to set an
unsupported isolation level
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
44
Conversion Tools
The most common approaches to converting a database application are manual conversion, dynamic call
translation, and automated conversion. In general, conversion tools take in source code and translate data
management calls to an equivalent SQL call. Information from the source and target database, as well as
program code, is used to build the new SQL statements. Some tools use an expert system to make decisions
over the generated SQL statements by cross-referencing the original and the new databases.
IBM DB2 Migration Toolkit (MTK)
MTK helps to migrate from Oracle, Sybase and Microsoft SQL Server (Versions 6 and 7) databases to DB2 UDB
Version 7.2 and Version 8.1 databases on any supported DB2 UDB workstation platform. The toolkit can also aid
in migration to DB2 UDB Server for OS/390 and z/OS, and DB2 UDB for AS/400. It runs on AIX, Linux, Sun
Solaris, Windows NT, and Windows 2000. The only language available is English.
Figure 11. Toolkit Menu
The toolkit includes the following features:
w
A wizard to migrate simple databases
w
A full-featured GUI interface (Toolkit) to further refine the migration and tailor options for complex
databases conversions
w
The migration source can be a database data source or a DDL script
w
Converts Transact-SQL or PL/SQL object definitions (including stored procedures, user-defined
functions, triggers, packages, tables, views, indexes and sequences.)
w
Converts Transact-SQL or PL/SQL scripts to DB2 scripts
w
Generates and run Scripts to unload data from source and upload data to DB2
w
Tracks the status of object conversions and data movement -- including error messages, error location
and DDL change reports -- using the detailed migration log file and report.
The migration process in MTK is project-based and has the following steps:
w
Create a project
w
Specify source (ODBC DSN or SQL script)
w
Convert - generates DB2 scripts and reports error messages
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
45
w
Refine - user changes SQL statements to correct errors or rename objects, after modifications are made
the user must return to convert in order to apply the changes
w
Generate Data Transfer scripts
w
Deploy to DB2 - creates database or connects to an existing one, creates database objects and
optionally loads data using scripts from the previous step.
MTK is available for a complementary download from www.ibm.com/software/data/db2/migration/mtk/.
The DB2 Developer Domain (DB2DD) library contains many references to material related to migration to DB2
topics, specifically a tutorial and a technical article about MTK:
w
Sample Database Migration Tutorial Using IBM DB2 Migration Toolkit. This tutorial demonstrates
the use of MTK to convert a database model from a Microsoft SQL Server DDL script to a DB2
database. The converted objects will include a stored procedure:
www7b.boulder.ibm.com/dmdd/library/tutorials/0209jarzebowicz/index.html
w
Automate the Switch to DB2 Using the IBM DB2 Migration Toolkit. This technical article explains
how MTK works:
www7b.software.ibm.com/dmdd/library/techarticle/0209jarzebowicz/0209jarzebowicz.html.
AllFusion Erwin Data Modeler
This product is a database modeling tool aids in designing, creating and maintaining databases, data warehouses
and enterprise data models. A logical model, along with business rules, defines the database, and a physical
model represents the target database. This tool allows visualization of the structure, key elements, and design of
a database. It automatically generates tables, stored procedures, and trigger code for leading databases, such as
DB2 and Microsoft SQL Server.
ERwin can also be used to reverse-engineer database objects using a DDL script or an existing database. The
physical model allows users to select different target databases and generate a DDL script for every target. Using
this feature, DDL scripts for different databases and versions can be easily supported.
For more information, contact Computer Associates International Inc. (www3.ca.com)
Data Junction
Data Junction offers a transformation tool for DB2 data migration and application integration. It is a visual design
tool for building and testing data transformations that work between DB2 and other data formats, such as
Microsoft SQL Server. Microsoft SQL Server is supported through a native API, a Massive Insert API, and the
bcp command.
Projects and transformations designed with Data Junction can be executed by the DJEngine. This tool executes
data transformations on demand or as scheduled.
The graphic interface allows the definition of source-to-target mapping and transformation rules. It accounts for
data type differences, and can set various filters to dynamically modify target columns during the conversion
process.
For additional information, contact Data Junction Corporation (www.datajunction.com).
Embarcadero Technologies
This company offers a suite of products for database administration, design and development. Some of these
products are:
w
Data Voyager - Generate and deploy Java and web-based applications. Management of data in relational
databases.
w
DBArtisan - Manage databases across the enterprise to achieve higher availability, performance and
security.
w
Embarcadero SQL Debugger - Isolate and correct errors on database logic in applications. Included in
DBArtisan and Rapid SQL.
w
Embarcadero SQL Tuner - Troubleshoot and rewrite database logic to improve application performance.
w
ER/Studio - Design, document and maintain databases and data warehouses for higher performance and
quality. Reverse engineer database objects (DDL).
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
46
w
ER/Studio Repository - Distribute work among the modeling team members.
w
Rapid SQL - Write, debug and tune database logic in applications.
For more information, contact Embarcadero Technologies (www.embarcadero.com/products/products.asp)
SQL Conversion Workbench (SQL-CW)
One of the automated tools available today is the SQL conversion workbench. This PC-based tool kit from
Mantech Systems Solutions Corporation (MSSC) facilitates the conversion of various databases and their
associated applications to any database in the DB2 UDB family on any supported platform. Microsoft SQL Server
Version 7 is one of the database management systems supported.
The SQL-CW tool does the following:
w
Provides metrics for the source database in order to estimate cost and effort
w
Allows modifications to the design and data definition of the target database
w
Generates DDL scripts for the target database
w
Unloads data and creates load scripts
w
Allows code re-engineering
w
Generates procedural code for stored procedures and triggers
w
Generates application code for DB-Lib, Client-Lib, and E-SQL applications
For more information, contact MSSC (www.mssc-mantech.com/products/products.html/).
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
47
Resources and References
DB2 Universal Database Version 8 Documentation
What’s New?
Quick Beginnings for DB2 Personal Edition
Quick Beginnings for DB2 Servers
Administration Guide: Planning
Administration Guide: Implementation
Application Building Guide: Building and Running Applications
Application Building Guide: Programming Server Applications
Call Level Interface Guide and Reference, Volume 1 and 2
Command Reference
DB2 Data Warehouse Center Administration Guide
Guide to GUI Tools for Administration and Development
SQL Reference, Volume 1 and 2
Replication Guide and Reference
DB2 Universal Database Certification Guide, 3rd Edition
by Jonathan Cook, Robert Harbus, and Tetsuya Shirai.
Published by Prentice Hall, 2000. ISBN 0-13-086755-1.
A Complete Guide to DB2 Universal Database
by Don Chamberlin.
Published by Morgan Kaufmann, 1998. ISBN 1-55860-482-0
Sybooks , Sybase documentation online
Reference Manual. Adaptive Server Enterprise 12.5
Transact-SQL User’s Guide. Adaptive Server Enterprise 12.5
System Administration Guide. Adaptive Server Enterprise 12.5
Open Client DB-Library/C Reference Manual
What’s New in Sybase Adaptive Server 11.5.X
New Functionality in Adaptive Server Enterprise 11.9.2
What’s New in Sybase Adaptive Server Enterprise 12.5
Sybase Adaptive Server 11
by John Kirkwood
Published by International Thomson Computer Press.
DB2 Migration Toolkit documentation
Conversion reference guide
Migration Toolkit online help
AllFusion Erwin Data Modeler Brochure , Fact Sheet and Product Announcement
by Computer Associates International, Inc.
Published at www3.ca.com/Solutions/Product.asp?ID=260.
Data Junction Technical Overview
Published at www.datajunction.com/products/dj_technical.html and
www.datajunction.com/products/matrix_formats_1.html
Embarcadero Technologies
Product overview at www.embarcadero.com/products/products.asp
SQL Conversion Workbench User's Guide
by Allyson Hart Benavides
Published by Mantech System Solutions Corporation, 1998. No. 986ASQL-CW
For more information
DB2 Family
www.ibm.com/software/data/db2
DB2 Product and Service Technical Library
www.ibm.com/software/data/db2/library
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
48
DB2 Maintenance
www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/download.d2w/report
ftp://ftp.software.ibm.com/ps/products/db2/fixes/<language>/<platform>/<FixPak#>
Data Management education page
www.ibm.com/software/data/education.html
DB2 on the web page
www.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/db2web.d2w/report
DB2 Migration Web site
www.ibm.com/software/data/db2/migration
DB2 Developer Domain Library
www.ibm.com/software/data/developer
DB2 Today
www.ibm.com/software/data/db2today/
IBM PartnerWorld for Developers Program
www.developer.ibm.com/
Porting to DB2 UDB Version 8.1 from Sybase Adaptive Server Enterprise
49
Fly UP