PK <+Aoa,mimetypeapplication/epub+zipPK<+AiTunesMetadata.plistS artistName Oracle Corporation book-info cover-image-hash 949905019 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 130742418 publisher-unique-id E12014-03 unique-id 260151937 genre Oracle Documentation itemName Oracle® Database Gateway for DRDA User's Guide, 11g Release 2 (11.2) releaseDate 2012-01-23T19:16:42Z year 2012 PKtXSPK<+AMETA-INF/container.xml PKYuPK<+AOEBPS/cover.htmO Cover

Oracle Corporation

PK[pTOPK<+AOEBPS/title.htm Oracle Database Gateway for DRDA User's Guide, 11g Release 2 (11.2)

Oracle® Database Gateway for DRDA

User's Guide

11g Release 2 (11.2)

E12014-03

January 2012


Oracle Database Gateway for DRDA User's Guide, 11g Release 2 (11.2)

E12014-03

Copyright © 2004, 2012, Oracle and/or its affiliates. All rights reserved.

Primary Author:   Maitreyee Chaliha

Contributing Author:  Denis Raphaely, Peter A. Castro

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

PKүPK<+AOEBPS/intro.htm Introduction

1 Introduction

This chapter provides information about the architecture, uses, and features of the Oracle Database Gateway for DRDA. It contains the following sections:

1.1 Introduction to the Oracle Database Gateway for DRDA

The Oracle Database Gateway for DRDA gives you access to your Oracle data and DB2 data with a single set of applications while you continue to use existing IBM applications to access your DB2 data. The gateway enables you to:

1.2 Release 11g Gateways

Oracle Database 11g provides the foundation for the next generation of the Oracle Database Gateways, which delivers enhanced integration capabilities by exploiting Oracle Database Heterogeneous Services.

As an integrated component of the Oracle database, Heterogeneous Services can take advantage of the powerful SQL parsing and distributed optimization capabilities of the Oracle database. This integration also ensures that the gateway can immediately take advantage of any enhancements made to future releases of the Oracle database. For detailed information on Oracle Heterogeneous Services, refer to Oracle Database Heterogeneous Connectivity User's Guide.

The version 11 gateways are even more tightly integrated with Oracle Database 11g than previous versions, enabling improved performance and enhanced functionality while still providing transparent integration of Oracle and non-Oracle data. For example, connection initialization information is available in the local Oracle database, reducing the number of round trips and the amount of data sent over the network. SQL execution is also faster, because, statements issued by an application are parsed and translated once and can then be reused by multiple applications.

1.3 Gateway Capabilities

Oracle Database Gateway for DRDA enables you to integrate your heterogeneous system into a single, seamless environment. If data is moved from a DRDA database to an Oracle database, then no changes in application design or function are needed. The gateway handles all differences in both data types and SQL functions between the application and the database. As a result, end users and application programmers are not required to know either the physical location or the storage characteristics of the data.

This transparency not only enables you to integrate heterogeneous data seamlessly, it also simplifies your gateway implementation, application development, and maintenance. The gateway capabilities are as follows:

1.3.1 Transparency at All Levels

Oracle Database Gateway for DRDA gives you transparency at the following levels:

  • Location

    Users can access tables by name and do not need to know the physical location of the tables.

  • Network

    The gateway exploits the Oracle Net technology to allow users to access data across multiple networks without concern for the network architecture. TCP/IP protocol is supported. This release supports IPV4 and IPV6 between Oracle database and the gateway, and also between the gateway and the DB2 server.

  • Operating System

    Users can access data stored under multiple operating systems without being aware of the operating systems that hold the data.

  • Data Storage

    The gateway provides the ability for data to be accessed regardless of the database or file format.

  • Access Method

    You can utilize a single dialect of SQL for any data store, eliminating the need to code for database-specific access methods or SQL implementations.

1.3.2 Extended Database Services

Following are some of the Oracle database services available through the gateway:

  • SQL functions

    Your application can access all your data using Oracle SQL. The method by which the gateways are integrated with the Oracle database ensures that the latest features of each database release are always available immediately to the gateway.

  • Distributed capabilities

    Heterogeneous data can be integrated seamlessly because Oracle distributed capabilities, such as JOIN and UNION, can be applied against non-Oracle data without any special programming or mapping.

  • Distributed query optimization

    The Oracle database can utilize its advanced query optimization techniques to ensure that SQL statements are executed efficiently against any of your data. The data distribution and storage characteristics of local and remote data are equally considered.

  • Two-phase commit protection

    The Oracle database two-phase commit mechanism provides consistency across data stores by ensuring that a transaction that spans data stores is still treated as a single unit of work. Changes are not committed (or permanently stored) in any data store unless the changes can be committed in all data stores that will be affected.

  • Stored procedures and database triggers

    The same Oracle stored procedures and database triggers can be used to access all of your data, thereby ensuring uniform enforcement of your business rules across the enterprise.

1.3.3 Extended Advanced Networking, Internet and Intranet Support

The gateway integration with the Oracle database extends the benefits of the Oracle Internet and Oracle Net software to non-Oracle data and extends the benefits of the Oracle client/server and server/server connectivity software. These features include:

  • Application server support

    Any Internet or intranet application that can access data in the Oracle database can also incorporate information from data stores accessible through the gateways. Web browsers can connect to the Oracle database using any application server product that supports Oracle software.

  • Implicit protocol conversion

    Oracle and Oracle Net can work together as a protocol converter, allowing applications to transparently access other data stores on platforms that do not support the clients network protocol. An Oracle database can use TCP/IP to communicate with the gateway and another data store.

  • Advanced Security

    Non-Oracle data can be protected from unauthorized access or tampering during transmission to the client. You can do this by using the hardware-independent and protocol-independent encryption and checksum services of Advanced Security.

  • Wireless communication

    Oracle Mobile Agents, an Oracle industry-leading mobile technology, enables wireless communication to Oracle database or to any databases that are accessible through the gateways. This gives your field personnel direct access to enterprise data from mobile laptop computers.

1.3.4 Dynamic Dictionary Mapping

The simple setup of the gateway does not require any additional mapping. Before an application can access any information, the application must be told the structure of the data, such as the columns of a table and their lengths. Many products require administrators to manually define that information in a separate data dictionary stored in a hub. Applications then access the information using the hub dictionary instead of the native dictionaries of each database. This approach requires a great deal of manual configuration and maintenance on your part. As administrators, you must update the data dictionary in the hub whenever the structure of a remote table is changed.

Inefficient duplication is not necessary with Oracle Database Gateway for DRDA. The gateway uses the existing native dictionaries of each database. Your applications access data using the dictionaries designed specifically for each database, which means no redundant dictionary ever needs to be created or maintained.

1.3.5 SQL

Oracle Database Gateways ease your application development and maintenance by allowing you to access any data using a uniform set of SQL. Changes to the location, storage characteristics, or table structure do not require any changes to your applications. ANSI and ISO standard SQL are supported, along with powerful Oracle extensions.

1.3.6 Data Definition Language

Oracle Applications can create tables in target data stores by using native data definition language (DDL) statements.

1.3.7 Data Control Language

You can issue native data control language (DCL) statements from an Oracle environment, allowing central administration of user privileges and access levels for heterogeneous data stores.

1.3.8 Passthrough and Native DB2 SQL

Execution of native DB2 SQL can be passed through the gateway for execution directly against DB2. This enables applications to send statements, such as a DB2 CREATE TABLE, to the gateway for execution on a target DB2 system.

1.3.9 Stored Procedures

The gateway enables you to exploit both Oracle and non-Oracle stored procedures, leveraging your investments in a distributed, multi-database environment. Oracle stored procedures can access multiple data stores easily, without any special coding for heterogeneous data access.

Oracle Stored Procedures

Oracle stored procedures enable you to access and update DB2 data using centralized business rules stored in the Oracle database. Using Oracle stored procedures can increase your database performance by minimizing network traffic. Instead of sending individual SQL statements across the network, an application can send a single EXECUTE command to begin an entire PL/SQL routine.

Native DB2 Stored Procedures

The gateway can execute DB2 stored procedures using standard Oracle PL/SQL. The Oracle application executes the DB2 stored procedure as if it were an Oracle remote procedure.

1.3.10 Languages

Any application or tool that supports the Oracle database can access over thirty different data sources through the Oracle gateways. A wide variety of open system tools from Oracle Corporation and third-party vendors can be used, even if the data is stored in legacy, proprietary formats. Hundreds of tools are supported, including ad hoc query tools, Web browsers, turnkey applications, and application development tools.

1.3.11 Oracle Database Technology and Tools

The gateway is integrated into the Oracle database technology, which provides global query optimization, transaction coordination for multi-site transactions, and support for all Oracle Net configurations. Tools and applications that support the Oracle database can be used to access heterogeneous data through the gateway.

1.3.12 SQL*Plus

You can use SQL*Plus for moving data between databases. This product gives you the ability to copy data from your department databases to corporate Oracle database instances.

1.3.13 Two-Phase Commit and Multi-Site Transactions

The gateway can participate as a partner in multi-site transactions and two-phase commit. How this occurs depends on the capabilities of the underlying data source, meaning that the gateway can be implemented as any one of the following:

  • Full two-phase commit partner

  • Commit point site

  • Single-site update partner

  • Read-only partner

The deciding factors for the implementation of the gateway are the locking and transaction-handling capabilities of your target database.

Oracle Database Gateway for DRDA by default is configured as a commit point site, that is, commit confirm protocol. Optionally, you can configure the gateway as read-only if you choose to enforce read-only capability through the gateway. Other protocols are not supported.

1.3.14 Site Autonomy

All Oracle database products, including gateways, supply site autonomy. For example, administration of a data source remains the responsibility of the original system administrator. Site autonomy also functions such that gateway products do not override the security measures established by the data source or operating environment.

1.3.15 Migration and Coexistence

The integration of a data source through the gateway does not require any changes to be made to applications at the data source. The result is that the Oracle database technology is non-intrusive, providing coexistence and an easy migration path.

1.3.16 Security

The gateway does not bypass existing security mechanisms. Gateway security coexists with the security mechanisms already used in the operating environment of the data source.

Functionally, gateway security is identical to that of an Oracle database, as described in the Oracle Database Administrator's Guide. Oracle database security is mapped to the data dictionary of the data source.

1.3.17 DRDA UDB Server Encryption support

This release of Gateway for DRDA provides complete UDB server Encryption support. Refer to the following new parameters for various options:

1.4 Terms

The terms used in this guide do not necessarily conform to the IBM terminology. The following list presents several terms and their meanings as used within this guide:

DRDA data is, generically, any database data accessed through DRDA.

DRDA database is the collection of data that belongs to a DRDA server

DRDA server is a database server that can be accessed through DRDA. IBM terminology for a DRDA server is a DRDA Application Server, or AS.

DRDA server type is a specific database product or program that can act as a DRDA server.

Oracle database is any Oracle Database 11g instance that communicates with the Oracle Database Gateway for DRDA to distribute database access operations to a DRDA server. The Oracle database can also be used for non-gateway applications.

DB2 Universal Database is a generic name for all implementations of IBM's DB2 Database product. DB2/UDB is frequently used as an abbreviation for the DB2 Universal Database for Unix, Linux, and Windows product.

1.5 Architecture

The Oracle Database Gateway for DRDA works with the Oracle database to shield most of the differences of the non-Oracle database from Oracle applications.

The architecture consists of the following main components:

Multiple Oracle databases can access the same gateway.

Figure 1-1 illustrates the gateway architecture.

Figure 1-1 The Gateway Architecture

Description of Figure 1-1 follows
Description of "Figure 1-1 The Gateway Architecture"

1.6 Implementation

When the gateway is installed on your host, it has some of the same components as an Oracle database instance on your host. The gateway has the following components:

The gateway does not have:

Because the gateway does not have background processes and does not need a management utility, such as Oracle Enterprise Manager, you do not need to start the gateway product. Each Oracle database user session that accesses a particular gateway creates an independent process on the host. This process runs the gateway session and executes network operations to communicate with a DRDA server.

1.7 How the Gateway Works

The gateway has no database functions of its own. Instead, it provides an interface by which an Oracle database can direct part or all of a SQL operation to a DRDA database.

The gateway that is supporting the DRDA server is identified to the Oracle database using a database link. The database link is the same construct that is used to identify other Oracle databases. Tables on the DRDA server are referenced in SQL as:

table_name@dblink_name

or

owner.table_name@dblink_name

If you create synonyms or views in the Oracle database, then you can refer to tables on the DRDA server by using simple names as though the table were local to the Oracle database.

When the Oracle database encounters a reference to a table that is on the DRDA server, the applicable portion of the SQL statement is sent to the gateway for processing. Any host variables that are associated with the SQL statement are bound to the gateway and, therefore, to the DRDA server.

The gateway is responsible for sending these SQL statements to the DRDA server for execution and for fielding and returning responses. The responses are either data or messages. Any conversions between Oracle data types and DRDA data types are performed by the gateway. Both the Oracle database and the application read and process only Oracle data types.

SQL Differences

Not all SQL implementations are the same. The Oracle database supports a larger set of built-in functions than the databases that are currently accessed through the gateway. The Oracle database and the gateway work together to convert SQL to a form that is compatible with the specific DRDA server.

During this conversion, an Oracle database function can be converted to a function that is recognizable to the specific DRDA server. For example, the Oracle database NVL function is converted to the DB2 VALUE function.

Alternatively, the Oracle database withholds functions that are not executable by the DRDA server and performs them after rows are fetched from the DRDA database. This processing only applies to SELECT statements. The Oracle database and the gateway cannot perform this kind of manipulation on UPDATE, INSERT, or DELETE statements because doing so changes transaction semantics.

1.8 Oracle Tools and the Gateway

Use the Oracle Database Gateway to run applications, such as Oracle database tools, that read and write data that is stored in DRDA databases.

While the Oracle Database Gateway for DRDA provides no new application or development facilities, it extends the reach of existing Oracle database tools to include data in non-Oracle databases that support DRDA.

Using the Oracle Database Gateway for DRDA with other Oracle products can greatly extend the capabilities of the stand-alone gateway.

1.8.1 SQL*Plus

Use SQL*Plus and the Oracle Database Gateway for DRDA to create a distributed database system, providing an easy-to-use transfer facility for moving data between the distributed databases. One possible use is to distribute the data in your corporate Oracle database to departmental DRDA databases. You can also distribute data in your corporate DRDA database to departmental Oracle databases.

1.9 Features

Following is a list of important features that characterize Oracle Database Gateway for DRDA. The features are:

Heterogeneous Services Architecture

The 11.2 release of the Oracle Database Gateway for DRDA utilizes the Oracle Heterogeneous Services component within the Oracle database. Heterogeneous Services is the building block for the next generation of /Oracle database gateways.

For detailed information about heterogeneous services, refer to Oracle Database Heterogeneous Connectivity User's Guide.

Performance Enhancements

Oracle Database Gateway for DRDA contains several internal performance enhancements. This product has shown major improvements in response time and CPU utilization for all relevant address spaces for a variety of workloads compared to version 10 gateways. The actual performance improvement at your site might vary, depending on your installation type and workload.

Fetch Reblocking

The array size of the application for SELECT is effective between the application and the Oracle database. However, the array blocksize and the block fetch between the Oracle database and the gateway are controlled by two Heterogeneous Services initialization parameters: HS_RPC_FETCH_SIZE and HS_RPC_FETCH_REBLOCKING. These parameters are specified in the gateway initialization file. Refer to Oracle Database Heterogeneous Connectivity User's Guide for more information.

Oracle Database Passthrough Supported

You can use the Oracle database DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE method to pass commands or statements available in your DRDA server through the gateway.

Retrieving Result Sets Through Passthrough

Oracle Database Gateway for DRDA provides a facility to retrieve result sets from a SELECT statement issued with passthrough. Refer to "Retrieving Results Sets Through Passthrough" for additional information.

Support for TCP/IP

This release of the gateway only supports the TCP/IP communication protocol between the gateway and the DRDA server. Refer to Oracle Database Gateway Installation and Configuration Guide for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64, or Oracle Database Gateway Installation and Configuration Guide for Microsoft Windows depending on your platform.

Native Semantics

This release of the gateway supports the ability to selectively enable or disable post-processing of various SQL functions by the DRDA server. Refer to "Native Semantics" for further information.

Columns Supported in a Result Set

Oracle Database Gateway for DRDA supports up to 1000 columns in a result set.

EXPLAIN_PLAN Improvement

The EXPLAIN_PLAN table contains the actual SQL statements passed to the DRDA server from the Oracle database through the gateway.

Heterogeneous Database Integration

The gateway support for ANSI-standard SQL enables read/write access to DRDA databases. Even if your data exists on different platforms in different applications, new applications can use all data, regardless of location.

Minimum Impact on Existing Systems

The gateway does not require installation of additional Oracle software on your OS/390 (MVS), AS/400, UNIX based, or Microsoft Windows target system. The database interface that it uses is provided by IBM and is built into the DRDA database products and network facilities that already exist on these platforms.

Configuring an IBM system for DRDA access typically consists of defining the network resources involved and establishing access security definitions specific to the target database.

Application Portability

The gateway's ability to interface with heterogeneous databases makes it possible to develop a single set of portable applications that can be used against both Oracle and IBM databases, and any other databases for which Oracle provides gateways.

Remote Data Access

Location flexibility is maximized because the gateway architecture permits network connections between each of the components. The application can use the Oracle client-server capability to connect to a remote Oracle database through Oracle Net. The Oracle database can connect to a remote gateway using a database link. The gateway connects to a DRDA server through network facilities.

The benefits of remote access are:

Support for Distributed Applications

Because the gateway gives your application direct access to DRDA data, you eliminate the need to upload and download large quantities of database data to other processors. Instead, you can access data where it is, when you want it, without having to move the data between machines and risk unsynchronized and inconsistent data. Avoiding massive data replication can also reduce aggregate disk storage requirements over all your systems.

However, if your system design requires moving data among the machines in a network, SQL*Plus and the gateway can simplify the data transfer. With a single SQL*Plus command, you can move entire sets of data from one node of the network to another and from one database to another.

You can pass commands and statements specific to your DRDA database through the gateway to be executed by the DRDA database. For example, you can pass native DB2 SQL through the gateway for DB2 to execute. You can also execute stored procedures defined in non-Oracle databases.

Application Development and End User Tools

Through the gateway, Oracle extends the range of application development and end-user tools you can use to access your IBM databases. These tools increase application development and user productivity by reducing prototype, development, and maintenance time. Current Oracle database users do not have to learn a new set of tools to access data stored in DRDA databases. Instead, they can access Oracle database and DRDA data with a single set of tools.

With the gateway and the application development tools available from Oracle you can develop a single set of applications to access Oracle database and DRDA data. Users can use the decision support tools available from Oracle to access Oracle database and DRDA data. These tools can run on remote machines connected through Oracle Net to the Oracle database.

When designing applications, keep in mind that the gateway is designed for retrieval and relatively light transaction loads. The gateway is not currently designed to be a heavy transaction processing system.

Password Encryption Utility

The 11.2 release of the gateway includes a utility to support encryption of plain-text passwords in the Gateway Initialization File. Refer to Chapter 15, "Security Considerations" in Oracle Database Gateway Installation and Configuration Guide for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64 or Oracle Database Gateway Installation and Configuration Guide for Microsoft Windows for details.

Support for DB2 UDB for z/OS Stored Procedures

The 11.2 release of the gateway supports the native stored procedures.

IBM DB2 Universal Database Support

The 11.2 release supports IBM DB2 Universal Database.

DB2 z/OS ASCII and UNICODE Table Support

Oracle Database Gateway for DRDA supports EBCDIC, ASCII, and UNICODE table for DB2 z/OS. The character set selection is defined during table creation.

Read-Only Support

The 11.2 release enables the gateway to be configured as a read-only gateway. In this mode, the user will not be able to modify data or call remote procedures at the DRDA database.

Support for Graphic and Multi-byte Data

The 11.2 release of the gateway adds support for DB2 GRAPHIC and VARGRAPHIC data types. Refer to Chapter 4, "Developing Applications" for more information.

Support for DB2 Universal Database on Intel Hardware

The 11.2 release of the gateway adds support for DRDA servers running on Microsoft Windows and Linux on Intel hardware.

Data Dictionary Support for DB2 Universal Database

The 11.2 release of the gateway also provides Oracle data dictionary support for DB2 UDB.

PKJ)PK<+AOEBPS/a_db2dd.htm Oracle DB2 Data Dictionary Views

A Oracle DB2 Data Dictionary Views

This appendix covers the Oracle Database Gateway for DRDA data dictionary views accessible to all users of Oracle database. Any user with SELECT privileges for DB2 catalog tables can access most of the views.

N/A is used in the tables to denote that the column is not valid for the gateway.

This appendix contains the following sections:

A.1 Supported Views

The following is a list of Oracle data dictionary views that are supported by the gateway for DB2 UDB for z/OS, DB2 UDB for iSeries, and DB2/UDB DRDA servers.

A.2 Data Dictionary View Tables

This section contains tables that describe data dictionary views. DB2 UDB for z/OS and DB2 UDB for iSeries supports all views in the following sections.

A.2.1 ALL_CATALOG

The ALL_CATALOG view contains all tables, views, synonyms, and sequence accessible to the user.

Column nameDescription
OWNEROwner of the object
TABLE_NAMEName of the object
TABLE_TYPEType of object

A.2.2 ALL_COL_COMMENTS

The ALL_COL_COMMENTS view contains comments on columns of accessible tables and views.

Column nameDescription
OWNEROwner of the object
TABLE_NAMEObject name
COLUMN_NAMEColumn name
COMMENTSComments on column

A.2.3 ALL_CONS_COLUMNS

The ALL_CONS_COLUMNS view contains information about accessible columns in constraint definitions.

Column nameDescription
OWNEROwner of the constraint definition
CONSTRAINT_NAMEName of the constraint definition
TABLE_NAMEName of the table with a constraint definition
COLUMN_NAMEName of the column specified in the constraint definition
POSITIONOriginal position of column in definition

A.2.4 ALL_CONSTRAINTS

The ALL_CONSTRAINTS view contains constraint definitions on accessible tables.

Column nameDescription
OWNEROwner of the constraint definition
CONSTRAINT_NAMEName of the constraint definition
CONSTRAINT_TYPEType of the constraint definition
TABLE_NAMEName of the table with constraint definition
SEARCH_CONDITIONText of the search condition for table check
R_OWNEROwner of the table used in referential constraint
R_CONSTRAINT_NAMEName of the unique constraint definition for referenced table
DELETE_RULEDelete rule for a referential constraint
STATUSStatus of a constraint
DEFERRABLEWhether the constraint is deferrable
DEFERREDWhether the constraint was initially deferred
VALIDATEDWhether all data obeys the constraint
GENERATEDWhether the name of the constraint is user or system generated
BADConstraint specifies a century in an ambiguous manner
RELYWhether an enabled constraint is enforced or unenforced
LAST_CHANGEWhen the constraint was last enabled
INDEX_OWNERN/A
INDEX_NAMEN/A

A.2.5 ALL_INDEXES

The ALL_INDEXES view contains description of indexes on tables accessible to the user.

Column nameDescription
OWNEROwner of the index
INDEX_NAMEName of the index
INDEX_TYPEType of the index
TABLE_OWNEROwner of the indexed object
TABLE_NAMEName of the indexed object
TABLE_TYPEType of the indexed object
UNIQUENESSUniqueness status of the index
COMPRESSIONN/A
PREFIX_LENGTH0
TABLESPACE_NAMEName of the tablespace containing the index
INI_TRANSN/A
MAX_TRANSN/A
INITIAL_EXTENTN/A
NEXT_EXTENTN/A
MIN_EXTENTSN/A
MAX_EXTENTSN/A
PCT_INCREASEN/A
PCT_THRESHOLDThreshold percentage of block space allowed per index entry
INCLUDE_COLUMNColumn ID of the last column to be included in an index-organized table
FREELISTSNumber of process freelists allocated to this segment
FREELIST_GROUPSNumber of freelist groups allocated to this segment
PCT_FREEN/A
LOGGINGLogging information
BLEVELDepth of the index from its root block to its leaf blocks. A depth of 1 indicates that the root block and the leaf block are the same.
LEAF_BLOCKSNumber of leaf blocks in the index
DISTINCT_KEYSNumber of distinct indexed values. For indexes that enforce UNIQUE and PRIMARY KEY constraints, this value is the same as the number of rows in the table.
AVG_LEAF_BLOCKS_PER_KEYN/A
AVG_DATA_BLOCKS_PER_KEYN/A
CLUSTERING_FACTORN/A
STATUSState of the index: VALID
NUM_ROWSNumber of rows in the index
SAMPLE_SIZESize of the sample used to analyze the index
LAST_ANALYZEDDate on which an index was most recently analyzed
DEGREENumber of threads per instance for scanning the index
INSTANCESNumber of instances across which the index is to be scanned
PARTITIONEDWhether the index is partitioned
TEMPORARYWhether the index is on a temporary table
GENERATEDWhether the name of the index is system generated
SECONDARYN/A
BUFFER_POOLWhether the index is a secondary object
USER_STATSN/A
DURATIONN/A
PCT_DIRECT_ACCESSN/A
ITYP_OWNERN/A
ITYP_NAMEN/A
PARAMETERSN/A
GLOBAL_STATSN/A
DOMIDX_STATUSN/A
DOMIDX_OPSTATUSN/A
FUNCIDX_STATUSN/A
JOIN_INDEXN/A
IOT_REDUNDANT_PKEY_ELIMN/A

A.2.6 ALL_IND_COLUMNS

The ALL_IND_COLUMNS view contains the columns of indexes on all tables that are accessible to the current user.

Column namesDescription
INDEX_OWNEROwner of the index
INDEX_NAMEName of the index
TABLE_OWNEROwner of the table or cluster
TABLE_NAMEName of the table or cluster
COLUMN_NAMEColumn name or attribute of object type column
COLUMN_POSITIONPosition of a column or attribute within the index
COLUMN_LENGTHIndexed length of the column
CHAR_LENGTHMaximum codepoint length of the column
DESCENDWhether the column is sorted in descending order (Y/N)

A.2.7 ALL_OBJECTS

The ALL_OBJECTS view contains objects accessible to the user.

Column nameDescription
OWNEROwner of the object
OBJECT_NAMEName of object
SUBOBJECT_NAMEName of the subobject
OBJECT_IDObject number of the object
DATA_OBJECT_IDDictionary object number of the segment that contains the object
OBJECT_TYPEType of object
CREATEDN/A
LAST_DDL_TIMEN/A
TIMESTAMPN/A
STATUSState of the object
TEMPORARYWhether the object is temporary
GENERATEDWhether the name of this object system is generated
SECONDARYN/A

A.2.8 ALL_SYNONYMS

The ALL_SYNONYMS view contains all synonyms accessible to the user.

Column nameDescription
OWNEROwner of the synonym
SYNONYM_NAMEName of the synonym
TABLE_OWNEROwner of the object referenced by the synonym
TABLE_NAMEName of the object referenced by the synonym
DB_LINKN/A

A.2.9 ALL_TABLES

The ALL_TABLES view contains description of tables accessible to the user.

Column nameDescription
OWNEROwner of the table
TABLE_NAMEName of the table
TABLESPACE_NAMEName of the tablespace containing the table
CLUSTER_NAMEN/A
IOT_NAMEName of the index organized table
PCT_FREEN/A
PCT_USEDN/A
INI_TRANSN/A
MAX_TRANSN/A
INITIAL_EXTENTN/A
NEXT_EXTENTN/A
MIN_EXTENTSN/A
MAX_EXTENTSN/A
PCT_INCREASEN/A
FREELISTSNumber of process freelists allocated to this segment
FREELIST_GROUPSNumber of freelist groups allocated to this segment
LOGGINGLogging attribute
BACKED_UPN/A
NUM_ROWSNumber of rows in the table
BLOCKSN/A
EMPTY_BLOCKSN/A
AVG_SPACEN/A
CHAIN_CNTN/A
AVG_ROW_LENAverage length of a row in the table in bytes
AVG_SPACE_FREELIST_BLOCKSAverage freespace of all blocks on a freelist
NUM_FREELIST_BLOCKSNumber of blocks on the freelist
DEGREENumber of threads per instance for scanning the table
INSTANCESNumber of instances across which the table is to be scanned
CACHEWhether the cluster is to be cached in the buffer cache
TABLE_LOCKWhether the table locking is enabled or disabled
SAMPLE_SIZESample size used in analyzing this table
LAST_ANALYZEDDate on which this table was most recently analyzed
PARTITIONEDWhether this table is partitioned
IOT_TYPEWhether the table is an index-organized table
TEMPORARYCan the current session only see data that it placed in this object itself?
SECONDARYN/A
NESTEDWhether the table is a nested table
BUFFER_POOLDefault buffer pool for the object
ROW_MOVEMENTN/A
GLOBAL_STATSN/A
USER_STATSN/A
DURATIONN/A
SKIP_CORRUPTN/A
MONITORINGN/A
CLUSTER_OWNERN/A
DEPENDENCIESN/A
COMPRESSIONN/A

A.2.10 ALL_TAB_COLUMNS

The ALL_TAB_COLUMNS view contains columns of all tables, views, and clusters accessible to the user.

Column nameDescription
OWNEROwner of the table or view
TABLE_NAMETable or view name
COLUMN_NAMEColumn name
DATA_TYPEData type of the column
DATA_TYPE_MODData type modifier of the column
DATA_TYPE_OWNEROwner of the data type of the column
DATA_LENGTHMaximum length of the column in bytes
DATA_PRECISIONN/A
DATA_SCALEDigits to the right of decimal point in a number
NULLABLEWhether the column permits nulls? Value is n if there is a NOT NULL constraint on the column or if the column is part of a PRIMARY key.
COLUMN_IDSequence number of the column as created
DEFAULT_LENGTHN/A
DATA_DEFAULTN/A
NUM_DISTINCTNumber of distinct values in each column of the table
LOW_VALUEFor tables with more than three rows, the second lowest and second highest values. These statistics are expressed in hexadecimal notation for the internal representation of the first 32 bytes of the values.
HIGH_VALUEN/A
DENSITYN/A
NUM_NULLSNumber of nulls in the column
NUM_BUCKETSNumber of buckets in histogram for the column
LAST_ANALYZEDDate on which this column was most recently analyzed
SAMPLE_SIZESample size used in analyzing this column
CHARACTER_SET_NAMEName of the character set
CHAR_COL_DECL_LENGTHLength of the character set
GLOBAL_STATSN/A
USER_STATSN/A
AVG_COL_LENAverage length of the column (in bytes)
CHAR_LENGTHDisplays the length of the column in characters
CHAR_USEDN/A

A.2.11 ALL_TAB_COMMENTS

The ALL_TAB_COMMENTS view contains comments on tables and views accessible to the user.

Column nameDescription
OWNEROwner of the object
TABLE_NAMEName of the object
TABLE_TYPEType of the object
COMMENTSComments on the object

A.2.12 ALL_USERS

The ALL_USERS contains information about all users of the database.

Column nameDescription
USERNAMEName of the user
USER_IDN/A
CREATEDN/A

A.2.13 ALL_VIEWS

The ALL_VIEWS view contains text of views accessible to the user.

Column nameDescription
OWNEROwner of the view
VIEW_NAMEName of the view
TEXT_LENGTHLength of the view text
TEXTView text. Only the first row of text is returned, even if multiple rows exist.
TYPE_TEXT_LENGTHLength of the type clause of the typed view
TYPE_TEXTType clause of the typed view
OID_TEXT_LENGTHLength of the WITH OID clause of the typed view
OID_TEXTWITH OID clause of the typed view
VIEW_TYPE_OWNEROwner of the type of the view, if the view is a typed view
VIEW_TYPEType of the view, if the view is a typed view
SUPERVIEW_NAMEN/A

A.2.14 COLUMN_PRIVILEGES

The COLUMN_PRIVILEGES view contains grants on columns for which the user is the grantor, grantee, or owner, or, the grantee is PULBLIC.

Column nameDescription
GRANTEEName of the user to whom access was granted
OWNERUsername of the owner of the object
TABLE_NAMEName of the object
COLUMN_NAMEName of the column
GRANTORName of the user who performed the grant
INSERT_PRIVPermission to insert into the column
UPDATE_PRIVPermission to update the column
REFERENCES_PRIVPermission to reference the column
CREATEDTimestamp for the grant

A.2.15 DICTIONARY

The DICTIONARY view contains list or data dictionary tables.

Column nameDescription
TABLE_NAMETable name
COMMENTSDescription of the table

A.2.16 DUAL

The DUAL view contains list of dual tables.

Column nameDescription
DUMMYA dummy column

A.2.17 TABLE_PRIVILEGES

The TABLE_PRIVILEGES view contains grants on objects for which the user is the grantor, grantee, or owner, or, the grantee is PUBLIC.

Column nameDescription
GRANTEEName of the user to whom access is granted
OWNEROwner of the object
TABLE_NAMEName of the object
GRANTORName of the user who performed the grant
SELECT_PRIVPermission to select data from an object
INSERT_PRIVPermission to insert data into an object
DELETE_PRIVPermission to delete data from an object
UPDATE_PRIVPermission to update an object
REFERENCES_PRIVN/A
ALTER_PRIVPermission to alter an object
INDEX_PRIVPermission to create or drop an index on an object
CREATEDTimestamp for the grant

A.2.18 USER_CATALOG

The USER_CATALOG view contains tables, views, synonyms, and sequences owned by the user.

Column nameDescription
TABLE_NAMEName of the object
TABLE_TYPEType of the object

A.2.19 USER_COL_COMMENTS

The USER_COL_COMMENTS view contains comments on columns of tables and views owned by the user.

Column nameDescription
TABLE_NAMEName of the object
COLUMN_NAMEName of the column
COMMENTSComments on the column

A.2.20 USER_CONSTRAINTS

The USER_CONSTRAINTS view contains constraint definitions on tables owned by the user.

Column nameDescription
OWNEROwner of the constraint definition
CONSTRAINT_NAMEName associated with the constraint definition
CONSTRAINT_TYPEType of the constraint definition
TABLE_NAMEName associated with the table with constraint definition
SEARCH_CONDITIONText of the search condition for table check
R_OWNEROwner of table used in referential constraint
R_CONSTRAINT_NAMEName of the unique constraint definition for referenced table
DELETE_RULEDelete rule for referential constraint
STATUSStatus of a constraint
DEFERRABLEWhether the constraint is deferrable
DEFERREDWhether the constraint was initially deferred
VALIDATEDWhether all data obeys the constraint
GENERATEDWhether the name of the constraint is user or system generated
BADConstraint specifies a century in an ambiguous manner
LAST_CHANGEWhen the constraint was last enabled
INDEX_OWNERN/A
INDEX_NAMEN/A

A.2.21 USER_CONS_COLUMNS

The USER_CONS_COLUMNS contains information about columns in constraint definitions owned by the user.

Column nameDescription
OWNEROwner of the constraint definition
CONSTRAINT_NAMEName associated with the constraint definition
TABLE_NAMEName associated with table with constraint definition
COLUMN_NAMEName associated with column specified in the constraint definition
POSITIONOriginal position of column in definition

A.2.22 USER_INDEXES

The USER_INDEXES view contains description of the user's indexes:

Column nameDescription
INDEX_NAMEName of the index
INDEX_TYPEType of index
TABLE_OWNEROwner of the indexed object
TABLE_NAMEName of the indexed object
TABLE_TYPEType of the indexed object
UNIQUENESSUniqueness status of the index
COMPRESSIONN/A
PREFIX_LENGTH0
TABLESPACE_NAMEName of the tablespace containing the index
INI_TRANSN/A
MAX_TRANSN/A
INITIAL_EXTENTN/A
NEXT_EXTENTN/A
MIN_EXTENTSN/A
MAX_EXTENTSN/A
PCT_INCREASEN/A
PCT_THRESHOLDThreshold percentage of block space allowed per index entry
INCLUDE_COLUMNColumn ID of the last column to be included in index-organized table
FREELISTSNumber of process freelists allocated to a segment
FREELIST_GROUPSNumber of freelist groups allocated to a segment
PCT_FREEN/A
LOGGINGLogging information
BLEVELDepth of the index from its root block to its leaf blocks. A depth of 1 indicates that the root and leaf block are the same.
LEAF_BLOCKSNumber of leaf blocks in the index
DISTINCT_KEYSNumber of distinct indexed values. For indexes that enforce UNIQUE and PRIMARY KEY constraints, this value is the same as the number of rows in the table.
AVG_LEAF_BLOCKS_PER_KEYN/A
AVG_DATA_BLOCKS_PER_KEYN/A
CLUSTERING_FACTORN/A
STATUSState of the indexes: VALID
NUM_ROWSNumber of rows in the index
SAMPLE_SIZESize of the sample used to analyze the index
LAST_ANALYZEDDate on which the index was most recently analyzed
DEGREENumber of threads per instance for scanning the index
INSTANCESNumber of instances across which the index is to be scanned
PARTITIONEDWhether the index is partitioned
TEMPORARYWhether the index is on a temporary table
GENERATEDWhether the name of the index is system generated
SECONDARYN/A
BUFFER_POOLWhether the index is a secondary object
USER_STATSN/A
DURATIONN/A
PCT_DIRECT_ACCESSN/A
ITYP_OWNERN/A
ITYP_NAMEN/A
PARAMETERSN/A
GLOBAL_STATSN/A
DOMIDX_STATUSN/A
DOMIDX_OPSTATUSN/A
FUNCIDX_STATUSN/A
JOIN_INDEXN/A
IOT_REDUNDANT_PKEY_ELIMN/A

A.2.23 USER_OBJECTS

The USER_OBJECTS view contains objects owned by the user.

Column nameDescription
OBJECT_NAMEName of the object
SUBOBJECT_NAMEName of the subobject
OBJECT_IDObject number of the object
DATA_OBJECT_IDDictionary object number of the segment that contains the object
OBJECT_TYPEType of object
CREATEDN/A
LAST_DDL_TIMEN/A
TIMESTAMPN/A
STATUSState of the object: VALID
TEMPORARYWhether the object is temporary
GENERATEDWas the name of this object system generated?
SECONDARYN/A

A.2.24 USER_SYNONYMS

The USER_SYNONYMS view contains the private synonyms of the user.

Column nameDescription
SYNONYM_NAMEName of the synonym
TABLE_OWNEROwner of the object referenced by the synonym
TABLE_NAMEName of the object referenced by the synonym
DB_LINKN/A

A.2.25 USER_TABLES

The USER_TABLES view contains description of the tables owned by the user.

Column nameDescription
TABLE_NAMEName of the table
TABLESPACE_NAMEName of the tablespace containing the table
CLUSTER_NAMEN/A
IOT_NAMEName of the index organized table
PCT_FREEN/A
PCT_USEDN/A
INI_TRANSN/A
MAX_TRANSN/A
INITIAL_EXTENTN/A
NEXT_EXTENTN/A
MIN_EXTENTSN/A
MAX_EXTENTSN/A
PCT_INCREASEN/A
FREELISTSNumber of process freelists allocated to a segment
FREELIST_GROUPSNumber of freelist groups allocated to a segment
LOGGINGLogging information
BACKED_UPN/A
NUM_ROWSNumber of rows in the table
BLOCKSN/A
EMPTY_BLOCKSN/A
AVG_SPACEN/A
CHAIN_CNTN/A
AVG_ROW_LENAverage length of a row in the table in bytes
AVG_SPACE_FREELIST_BLOCKSAverage freespace of all blocks on a freelist
NUM_FREELIST_BLOCKSNumber of blocks on the freelist
DEGREENumber of threads per instance for scanning the table
INSTANCESNumber of instances across which the table is to be scanned
CACHEWhether the cluster is to be cached in the buffer cache
TABLE_LOCKWhether table locking is enabled or disabled
SAMPLE_SIZESample size used in analyzing this table
LAST_ANALYZEDDate on which this table was most recently analyzed
PARTITIONEDIndicates whether this table is partitioned
IOT_TYPEIf this is an index organized table
TEMPORARYCan the current session only see data that it placed in this object itself?
SECONDARYN/A
NESTEDIf the table is a nested table
BUFFER_POOLThe default buffer pool for the object
ROW_MOVEMENTN/A
GLOBAL_STATSN/A
USER_STATSN/A
DURATIONN/A
SKIP_CORRUPTN/A
MONITORINGN/A
CLUSTER_OWNERN/A
DEPENDENCIESN/A
COMPRESSIONN/A

A.2.26 USER_TAB_COLUMNS

The USER_TAB_COLUMNS view contains columns of the tables, views, and clusters owned by the user.

Column nameDescription
TABLE_NAMEName of the table, view, or cluster
COLUMN_NAMEName of the column
DATA_TYPEData type of column
DATA_TYPE_MODData type modifier of the column
DATA_TYPE_OWNEROwner of the data type of the column
DATA_LENGTHMaximum length of the column in bytes
DATA_PRECISIONN/A
DATA_SCALEDigits to the right of a decimal point in a number
NULLABLEWhether the column permits nulls. Value is n if there is a NOT NULL constraint on the column or if the column is part of a PRIMARY key.
COLUMN_IDSequence number of the column as created
DEFAULT_LENGTHN/A
DATA_DEFAULTN/A
NUM_DISTINCTNumber of distinct values in each column of the table
LOW_VALUEFor tables with more than three rows, the second lowest and second highest values. These statistics are expressed in hexadecimal notation for the internal representation of the first 32 bytes of the values.
HIGH_VALUEN/A
DENSITYN/A
NUM_NULLSNumber of nulls in the column
NUM_BUCKETSNumber of buckets in histogram for the column
LAST_ANALYZEDDate on which this column was most recently analyzed
SAMPLE_SIZESample size used in analyzing this column
CHARACTER_SET_NAMEName of the character set
CHAR_COL_DECL_LENGTHLength of the character set
GLOBAL_STATSN/A
USER_STATSN/A
AVG_COL_LENAverage length of the column (in bytes)
CHAR_LENGTHLength of the column in characters
CHAR_USEDN/A

A.2.27 USER_TAB_COMMENTS

The USER_TAB_COMMENTS view contains comments on the tables and views owned by the user.

Column nameDescription
TABLE_NAMEName of the object
TABLE_TYPEType of the object
COMMENTSComments on the object

A.2.28 USER_USERS

The USER_USERS view contains information about the current user.

Column nameDescription
USERNAMEName of the user
USER_IDN/A
ACCOUNT_STATUSIndicates if the account is locked, expired or unlocked
LOCK_DATEDate on which the account was locked
EXPIRE_DATEDate of expiration of the account
DEFAULT_TABLESPACEN/A
TEMPORARY_TABLESPACEN/A
CREATEDN/A
EXTERNAL_NAMEName of the external user

A.2.29 USER_VIEWS

The USER_VIEWS view contains text of views owned by the user.

Column nameDescription
VIEW_NAMEName of the view
TEXT_LENGTHLength of the view text
TEXTFirst line of the view text
TYPE_TEXT_LENGTHLength of the type clause of the typed view
TYPE_TEXTType clause of the typed view
OID_TEXT_LENGTHLength of the WITH OID clause of the typed view
OID_TEXTWITH OID clause of the typed view
VIEW_TYPE_OWNEROwner of the type of the view, if the view is a typed view
VIEW_TYPEType of the view, if the view is a typed view
SUPERVIEW_NAMEN/A

PKM_/ PK<+AOEBPS/preface.htm1 Preface

Preface

The Oracle Database Gateway for DRDA provides users with transparent access to DB2.

Intended Audience

This guide is intended for anyone responsible for installing, configuring, and administering the gateway, and also for application developers.

Read this guide if you are responsible for writing applications that access DRDA databases through the gateway.

You must understand the fundamentals of Oracle Database Gateway and the operating system you are working on before using this guide to install or administer the gateway.

Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

Related Documents

Oracle Database Heterogeneous Connectivity User's Guide

Oracle Database Administrator's Guide

Oracle Database Concepts

Oracle Database Error Messages

Oracle Database Performance Tuning Guide

Oracle Database Security Guide

Typographic Conventions

The following typographic conventions are used in this guide:

ConventionDescription
monospaceMonospace type indicates commands, directory names, user names, path names, and file names.
italicsItalic type indicates variables, including variable portions of file names. It is also used for emphasis and for book titles.
UPPERCASEUppercase letters indicate Structured Query Language (SQL) reserved words, initialization parameters, and environment variables.
BoldBold type indicates screen names and fields.
SQL*Plus promptsThe SQL*Plus prompt, SQL>, appears in SQL statement and SQL*Plus command examples. Enter your response at the prompt. Do not enter the text of the prompt, "SQL>", in your response.

SQL*Plus Prompts

The SQL*Plus prompt, SQL>, appears in SQL statements and SQL*Plus command examples. Enter your response at the prompt. Do not enter the text of the prompt, "SQL>", in your response.

Storage Measurements

Storage measurements use the following abbreviations:

PK6m61PK<+AOEBPS/index.htm Index

Index

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  Z 

A

accessing
gateway
main topic, 3.3
Advanced Security
function of the gateway, 1.3.3
purpose, 1.3.3
ALL_CATALOG view, A.2.1
ALL_COL_COMMENTS view, A.2.2
ALL_CON_COLUMNS view, A.2.3
ALL_CONSTRAINTS view, A.2.4
ALL_DB_LINKS data dictionary view, 3.2.3
ALL_INDEXES view, A.2.5
ALL_OBJECTS view, A.2.7
ALL_SYNONYMS view, A.2.8
ALL_TAB_COMMENTS view, A.2.11
ALL_TABLES view, A.2.9
ALL_USERS view, A.2.12
ALL_VIEWS view, A.2.13
ALTER SESSION statement, 3.2.1
ANSI-standard SQL, 1.3.5, 1.9
APPEND command
supported by COPY, 3.8
application
portability, 1.9
server support, 1.3.3
application development on the gateway, 1.9
architecture of the gateway, 1.5
array size
fetch reblocking, 1.9
how determined, 4.1.1
AS/400
files and file members, accessing, 3.4
library name, HS_FDS_PACKAGE_COLLID, B.3.26
ASCII
sort order, 4.6.2
translated from EBCDIC, 4.7.1
autonomy, site, 1.3.14

B

binary data, non-character, 4.7.1
bind variables
SQL passthrough, 4.8
bug
debugging
drc values in the DRDA software, 5.1.2
setting trace parameters, 5.3
SQL tracing, 3.10
number 205538, known restrictions, SQL limitations, 2.5.2.2

C

call
DB2 stored procedure, 4.3, 4.3.1
empproc stored procedure, 4.3
Oracle Call Interfaces, 5.1
PL/SQL, 4.3.1
stored procedure
creating a synonym to maintain location transparency, 4.2
using standard Oracle PL/SQL, 4.2
to stored procedure
known restrictions, 2.5.1.4
capabilities of DRDA server, native semantics, 4.6
changes in this release
IBM DB2/UDB supported, 1.9
read-only support, 1.9
character sets
Heterogeneous Services, B.3.6.1
character string
converting datatypes, 4.7.2
performing operations, 4.7.2
CHECKSUM command
extended advanced networking, 1.3.3
clauses
CONNECT TO, 3.2.1
GROUP BY, SQL Set Clauses, 4.6.3
HAVING, SQL Set Clauses, 4.6.3
ORDER BY, SQL Set Clauses, 4.6.3
SQL
DELETE, 4.7.7
INSERT, 4.7.7
SELECT WHERE, 4.7.7
UPDATE, 4.7.7
USING, 3.2.1
VALUES
functions not allowed by DB2, 4.7.7
WHERE
known restrictions, SQL limitations, 2.5.2.2
SQL Set Clauses, 4.6.3
WHERE CURRENT OF CURSOR, known restrictions, SQL limitations, 2.5.2.2
closing and opening again any session against db2 required with any change to
HS_FDS_PACKAGE_COLLID, B.3.26
coercion
of data, 4.6
column
date columns, TO_DATE function, 4.7.7
supported in a result set, 1.9
commands
CHECKSUM, 1.3.3
COPY
known restrictions, 2.5.2.1
Oracle database to DRDA server, 3.8
SQL*Plus command, 3.8
EXECUTE, 1.3.9
EXPLAIN PLAN, 5.3.1
INSERT
known restrictions, 2.5.2.1
not supported, 3.8
commit confirm protocol, 1.3.13
compatible SQL set operators and clauses, 4.6.3
CONNECT TO clause, 3.2.1
convert
character string, 4.7.2
datatypes
DRDA to Oracle datatypes, 4.7
DATE, 4.7.4.2
floating point to integer, 4.7.8
into most suitable datatype, 4.7.10
SQL, 1.7
to the numeric datatype, 4.7.8
converter, protocol, 1.3.3
COPY command
Oracle database to DRDA server, 3.8
COPY SQL*Plus command, 3.8
substituted for INSERT, known restrictions, 2.5.2.1
copying data
from the DRDA server, 3.9
from the Oracle database to DRDA server, 3.8
COS SQL function, 4.5.3.1
COUNT function, 4.7.9
CREATE command
supported by COPY, 3.8
CREATE DATABASE LINK command, 3.2.1
CREATE TABLE statement, 1.3.8
creating
database link, 3.2.1
cursor
stability, HS_FDS_ISOLATION_LEVEL, B.3.25

D

data coercion, 4.6
data control language (DCL), 1.3.7
DATA datatype, 4.7.4.1
data definition language (DDL), 1.3.6
data dictionary
using, 4.9.1
views
ALL_DB_LINKS, 3.2.3
emulation on DRDA server, 4.9
for DB2/UDB not supported, A.1
list and descriptions, A.2
supported for DB2/OS390 and DB2/400 servers, A.1
USER_DB_LINKS, 3.2.3
database
catalogs, 4.9
link
behavior, 4.4
creating, 3.2.1
dropping links, 3.2.2
examining, 3.2.3
guidelines, 3.2.1
limits, 3.2.4
processing, 3.2
suffix, 4.1
to identify the gateway, 1.7
triggers, 1.3.2
datatype
character string, 4.7.1
column (ALL_TAB_COLUMNS), A.2.10
column (USER_TAB_COLUMNS), A.2.26
conversion
DRDA to Oracle datatypes, 4.7
no control over, 4.7.8
converting character string, 4.7.1, 4.7.2
data and time, 4.7.4
differences between Oracle database and DRDA databases, 4.7
DRDA server datatypes list, 4.7
mapping, 4.7
numeric, 4.7.10
operations, numeric, 4.7.8
Oracle datatypes RAW and LONG RAW, 4.7.1
restrictions, 4.7
size and value limitations, 4.7
datatypes
DATE, 4.7.4
GRAPHIC, 4.7.3
LONG, 4.7.2
LONG RAW, 4.7.1
Oracle and IBM DATE, 4.7.4.2
Oracle DATE, 4.7.4.1
RAW
character string operations, 4.7.1
TIME, 4.7.4
TIMESTAMP, 4.7.4
VARCHAR, 4.7.2
date
date columns, TO_DATE function, 4.7.7
HS_NLS_DATE_FORMAT parameter, 4.7.5, 4.7.6
INSERT
statement, 4.7.5
operations, 4.7.4
SELECT statement, 4.7.5
TO_DATE function, 4.7.5
UPDATE
statement, 4.7.5
date arithmetic
known restrictions, 2.5.1.8
DATE datatype, 4.7.4
DB_DOMAIN parameter
known restrictions, 2.5.1.6
DB2
data access, 1.3.9
native SQL, 1.3.8
native stored procedures, 1.3.9
procedural feature considerations, 4.3.2
SQL statements, 4.8.2
statements
CREATE TABLE, 1.3.8
stored procedures, 4.3.2
DB2 UDB for iSeries
HS_FDS_ISOLATION_LEVEL, B.3.25
HS_FDS_PACKAGE_COLLID, B.3.26
DB2 UDB for Linux, Unix, and Windows
HS_FDS_ISOLATION_LEVEL, B.3.25
DB2 UDB for z/OS
HS_FDS_ISOLATION_LEVEL, B.3.25
DB2/400
catalog view, 4.9.1
data dictionary views supported by gateway, A.1
DB2/OS390
catalog view, 4.9.1
data dictionary views supported by gateway, A.1
V6, V7 and V8 stored procedures supported, 1.9
DB2/UDB
catalog view, 4.9.1
data dictionary views not supported, A.1
supported, 1.9
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE function, 4.8
DD basic tables, known restrictions, 2.5.1.1
DDL
statement, 4.8
debug
gateway, 5.3
debugging
error codes, 5.1.2
SQL tracing, 5.3
your application, 3.10
DELETE
known restrictions, SQL limitations, 2.5.2.2
operation, 4.1
SQL clause, 4.7.7
statement, 4.8
DESCRIBE
character string operations, 4.7.1
describe cache high water mark
definition, B.3.5
dictionary
mapping, 1.3.4
tables, 4.9
DICTIONARY view, A.2.15
distributed
applications, support for, 1.9
DRDA transactions, 3.6.2
queries
two-phase commit, 3.6.1
transaction, HS_FDS_RECOVERY_ACCOUNT, B.3.14
drc error code, 5.1.2
DRDA
catalog, 4.9.2
DRDA server
architecture, 1.5
capabilities, native semantics, 4.6
functions, 4.6
stored procedures, 4.3
DRDA server error, 5.1.3
DROP DATABASE LINK statement, 3.2.2
dynamic dictionary mapping, 1.3.4

E

EBCDIC
sort order, 4.6.2
translated to ASCII, 4.7.1
EMP
system-wide synonym, 3.5
table, 3.8
empproc
stored procedure, 4.3
environment
heterogeneous, 3.7
errmc
errmc field lists any error tokens, 5.1.2
error
basic description, 5.1
change, ORA-09100 to ORA-28500, 5.1.2
change, ORA-09101 to ORA-28501, 5.1.2
codes
drc, 5.1.2
grc, 5.1.2
detected
by Oracle database, 5.1.1
by server database, 5.1.3
in DRDA software, 5.1.2
interpreting error messages, 5.1
messages
Oracle LONG datatype is too long, 4.7.2
messages & codes, 5
ORA-02019, 5.1.1
ORA-2025, when using INSERT command, 3.8
ORA-28500 (was ORA-09100), 5.1.2
ORA-9100 to ORA-9199, 5.1.1
Oracle mapped error codes, 5.2
tokens, 5.1.2
translation, 4.7.1
with Native Semantics, 4.6
Error messages
error tracing, B.3.17
errp
errp field indicates program that detected error, 5.1.2
EXCEPT set operator, SQL Set Clauses, 4.6.3
EXECUTE command, 1.3.9
exits
gateway local date, 4.7.6
EXPLAIN PLAN command, 5.3.1
EXPLAIN_PLAN table, 1.9

F

features of the gateway
application development and end-user tools, 1.9
application portability, 1.9
columns supported in a result set, 1.9
distributed applications supported, 1.9
EXPLAIN_PLAN improvement, 1.9
fetch reblocking, 1.9
heterogeneous database integration, 1.9
heterogeneous services architecture, 1.9
main topic, 1.9
minimum impact on existing systems, 1.9
Native Semantics, 1.9
Oracle database passthrough supported, 1.9
Oracle snapshots, 3.7
performance enhancements, 1.9
remote data access, 1.9
retrieving result sets through passthrough, 1.9
support for TCP/IP, 1.9
fetch array size, with HS_FDS_FETCH_ROWS, B.3.16
fetch reblocking
controlled by two Heterogeneous Services initialization parameters, 1.9
supported by Oracle database, 4.1.1
fields
errmc, lists any error tokens, 5.1.2
errp, indicates program that detected error, 5.1.2
file member
accessing AS/400 files, 3.4
name, 3.4
FOR BIT DATA
option, 4.7.1
functions
COS, 4.5.3.1
COUNT, 4.7.9
DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE, 4.8
DRDA server, 4.6
SQL
SUBSTR, 4.6
SUBSTR
known restrictions, 2.5.1.2
TO_DATE
DB2 ISO format, 4.7.6
processing DATE data, 4.7.4.2
twenty-first century dates, 4.7.5
TO_DATE, main topic, 4.7.7

G

gateway
accessing
main topic, 3.3
advantages
migration and coexistence, 1.3.15
multi-site transactions, 1.3.13
security, 1.3.16
server technology and tools, 1.3.11
site autonomy, 1.3.14
two-phase commit, 1.3.13
and Oracle tools, 1.8
and stored procedures (Oracle and non-Oracle), 1.3.9
application tools, 1.9
architecture, 1.5
benefits of integration with Oracle database, 1.3.3
components, 1.6
definition of terms, 1.4
features, main topic, 1.9
how to access, 3.3
interface, 1.7
local date exit, 4.7.6
performance enhancements, 1.9
performance versus transparency, 4.6
performing distributed queries, 3.6
SQL differences, 1.7
tracing
SQL statements, 3.10
using, 3
with other Oracle products, SQL*Plus, 1.3.12
GENERAL and DB2SQL linkage convention
gateway support, 4.3.2
GLOBAL_NAMES
known restrictions, 2.5.1.6
globalization support
Heterogeneous Services, B.3.6
GRAPHIC datatype, 4.7.3
graphic string operations
unsupported, 4.7.3
grc error code, 5.1.2
GROUP BY clause
SQL Set Clauses, 4.6.3

H

HAVING clause
SQL Set Clauses, 4.6.3
heterogeneous database integration, 1.9
Heterogeneous Services
defining maximum number of open cursors, B.3.8
optimizing data transfer, B.3.9
setting global name, B.3.4
specifying cache high water mark, B.3.5
tuning internal data buffering, B.3.10
tuning LONG data transfer, B.3.7
Heterogeneous Services (HS), see HS, 1.2
host
performing character string operations on, 4.7.1
relationship to gateway and Oracle database, 1.5
variable, 4.7
HS (Heterogeneous Services)
architecture features, 1.9
HS_CALL_NAME initialization parameter, B.3.1
HS_DB_DOMAIN parameter
known restrictions, 2.5.1.6
HS_DB_NAME initialization parameter, B.3.4
HS_DESCRIBE_CACHE_HWM initialization parameter, B.3.5
HS_FDS_AUTHENTICATE_METHOD, B.3.33
HS_FDS_CONNECT_INFO, B.3.13
HS_FDS_FETCH_ROWS parameter, B.3.16
HS_FDS_ISOLATION_LEVEL parameter, B.3.25
HS_FDS_PACKAGE_COLLID parameter
defined, B.3.26
HS_FDS_TRACE_LEVEL initialization parameter, B.3.17
enabling agent tracing, B.1
HS_FDS_TRANSACTION_LOG initialization parameter, B.3.18
HS_KEEP_REMOTE_COLUMN_SIZE initialization parameter, B.3.28
HS_LANGUAGE initialization parameter, B.3.6
HS_LONG_PIECE_TRANSFER_SIZE initialization parameter, B.3.7
HS_NLS_DATE_FORMAT
four date patterns, 4.7.6
HS_OPEN_CURSORS initialization parameter, B.3.8
HS_RPC_FETCH_REBLOCKING initialization parameter, B.3.9
HS_RPC_FETCH_REBLOCKING parameter
controlling array blocksize and the block fetch, 1.9
Oracle database support, 4.1.1
HS_RPC_FETCH_SIZE initialization parameter, B.3.10
HS_RPC_FETCH_SIZE parameter
specified in the Gateway Initialization File, 1.9
value determines array size, 4.1.1

I

IFILE initialization parameter, B.3.12
implementation, 1.6
implicit data conversion, 4.6
implicit protocol conversion, 1.3.3
Initialization parameter file
customizing, B
input bind variables, 4.7.4.2
INSERT
operation, 4.1
Oracle SQL command, known restrictions, 2.5.2.1
SQL clause, 4.7.7
statement
passthrough SQL feature, 4.8
INSERT command
known restrictions, 2.5.2.1
not supported, 3.8
supported by COPY, 3.8
Internet support, 1.3.3
INTERSECT, SQL set operators and clauses, 4.6.3
ISO standard, 1.3.5
isolation level, HS_FDS_ISOLATION_LEVEL, B.3.25

J

JOIN capability, 1.3.2
JOIN SQL statement, 4.1

K

known restrictions
datatype limitations, 2.5.1.3
date arithmetic, 2.5.1.8
DD basic tables and views, 2.5.1.1
GLOBAL_NAMES parameter, 2.5.1.6
LONG datatype in SQL*Plus, 2.5.1.10
null values and stored procedures, 2.5.1.4
row length limitation, 2.5.1.9
SUBSTR function post-processed, 2.5.1.2

L

languages
access through the gateway, 1.3.10
SQL*Plus, 1.3.12
link, also see Database Link, 4.4
literal
character literals, 4.7.4.1
date, 4.7.4.2
specific datatype, 4.7
TO_DATE, format support, 4.7.7
LONG datatype, 4.7.2
LONG RAW datatype, 4.7.1, 4.7.1

M

MINUS
set operator, SQL Set Clauses, 4.6.3
SQL set operators and clauses, 4.6.3
Mobile Agents, 1.3.3

N

Native Semantics
gateway architecture, 1.9
parameters, SQL Set Clauses, 4.6.3
with SUBSTR function, known restrictions, 2.5.1.2
non-character binary data, 4.7.1
null
rows, mapping the COUNT function, 4.7.9
values
mapping the COUNT function, 4.7.9
numeric datatype
zoned decimal column, 4.7.10

O

o2pc.sql
two-phase commit transactions, 3.6.1
OPEN_LINKS parameter, 3.2.4
operations
DELETE, 4.1
INSERT, 4.1
SELECT, 4.1
UPDATE, 4.1
operators
UNION ALL, SQL Set Clauses, 4.6.3
UNION, SQL Set Clauses, 4.6.3
option
data dictionary views, 4.9
date format string, 4.7.5
FOR BIT DATA, 4.7.1
Oracle database, 1.5
read-only
gateway configuration, 1.3.13
replicating, 3.7
SQL functions, 4.6.1
SQL*Plus COPY command, 3.8
ORA-02019 error, 5.1.1
ORA1 Oracle instance, 4.2
ORA2 Oracle instance, 4.2
ORA-2025
error when using INSERT command, 3.8
ORA-28500 error
was ORA-09100, 5.1.2
ORA-9100 to ORA-9199 errors, 5.1.1
Oracle
mapped error codes, 5.2
products compatibility, 1.8
snapshots, 3.7
Oracle database
accessing the gateway, 3.3
architecture, 1.5
copying data
from DRDA server, 3.9
to DRDA server, 3.8
definition, 1.4
relationship to host, 1.5
services
database triggers, 1.3.2
distributed capabilities, 1.3.2
distributed query optimization, 1.3.2
extended database services, 1.3.2
stored procedures, 1.3.2
two-phase commit protection, 1.3.2
stored procedure, defined, 4.2
triggers, 3.7
using, in application development, 4.1
Oracle Net
and application development, 1.9
and remote data access, 1.9
and server coexistence, 1.5
integrated with Oracle database, 1.3.11
purpose, 1.6
TNS connect descriptor specification, 3.2.1
oraproc1, stored procedure, 4.2
oraproc2, stored procedure, 4.2
ORARECOV user ID
HS_FDS_RECOVERY_ACCOUNT, B.3.14
ORDER BY clause
SQL Set Clauses, 4.6.3

P

package
collection id, HS_FDS_PACKAGE_COLLID, B.3.26
packed decimal, 4.7.10
parameter
Native Semantics, SQL Set Clauses, 4.6.3
setting up trace parameters, 5.3
parameters
DB_DOMAIN
known restrictions, 2.5.1.6
gateway initialization file
HS_FDS_CAPABILITY, B.3.24
HS_FDS_FETCH_ROWS, B.3.16
HS_FDS_ISOLATION_LEVEL, B.3.25
HS_FDS_PACKAGE_COLLID, B.3.26
HS_DB_DOMAIN
known restrictions, 2.5.1.6
HS_NLS_DATE_FORMAT, 4.7.5, 4.7.6
HS_RPC_FETCH_REBLOCKING, 1.9, 4.1.1, 4.1.1
HS_RPC_FETCH_SIZE, 1.9, 4.1.1, 4.1.1
OPEN_LINKS, 3.2.4
passthrough
gateway features, 1.9
native DB2 SQL, 1.3.8
send SQL statement directly to DRDA server, 4.8
performance, 4.6
performance enhancements
with fetch reblocking, 4.1.1
PL/SQL
call, 4.3.1
DRDA stored procedures, 4.3
records, 4.3.2
routine, 1.3.9
standard Oracle, 1.3.9
stored procedure, 4.2
post-processed SQL functions
overview, 4.5.3.1
post-processing
native semantics, 4.6
SQL tracing in the gateway, 5.3.1
PREPARE TRANSACTION statement, 3.6.1
privileges
data dictionary emulation, 4.9
procedure
stored
using DRDA server, 4.3
processing time, with GROUPBY, HAVING, WHERE, 4.6.2
protocol
commit confirm, 1.3.13
converter, 1.3.3
implicit protocol conversion, 1.3.3
network, 3.5
protocol-independent encryption, 1.3.3
two-phase commit, 3.6.1
protocols
TCP/IP
gateway transparency, 1.3.1
implicit protocol conversion, 1.3.3

Q

queries, distributed, 3.6

R

RAW datatype
performing character string operations, 4.7.1
read-only support, 1.9
remote
connections, 3.2.4
data, 1.3.2
data access, 1.9
database
copying data, 3.8
creating database links, 3.2.1
defining a path, 3.2.1
errors detected by the Oracle database, 5.1.1
DRDA database, HS_FDS_ISOLATION_LEVEL, B.3.25
instance, and Oracle stored procedures, 4.2
Oracle instance
using DRDA server stored procedures with the gateway, 4.3
using Oracle stored procedures with the gateway, 4.2
procedure, 1.3.9
table, 1.3.4
user ID and password, 3.2.1
remote functions
referenced in SQL statements, B.3.1
REPLACE command, supported by COPY, 3.8
replication, 3.7
RESULT, 4.3.1
result sets
columns in, 1.9
retrieving result sets through passthrough, 1.9
REVISE_SALARY
stored procedure, 4.3.1

S

security
Advanced Security, 1.3.3
site autonomy, 1.3.14
SELECT and array size, 1.9
SELECT operation, 4.1
SELECT statement
fetch reblocking, 4.1.1
retrieving results sets, 4.8.3
SELECT WHERE
SQL clause, 4.7.7
semantics, 4.6
session
connection, 4.4
set operators
compatibility, SQL Set Clauses, 4.6.3
EXCEPT, SQL Set Clauses, 4.6.3
INTERSECT, SQL Set Clauses, 4.6.3
MINUS, SQL Set Clauses, 4.6.3
site autonomy, 1.3.14
snapshots
known restrictions, SQL limitations, 2.5.2.2
Oracle Snapshot feature, 3.7
sort order
with ORDERBY, 4.6.2
SQL
ANSI standard, 1.3.5
clause compatibility, 4.6.3
clauses
DELETE, 4.7.7
INSERT, 4.7.7
SELECT WHERE, 4.7.7
UPDATE, 4.7.7
constructs
Oracle processing, 4.5
differences in the gateway, 1.7
errors mapped to Oracle error codes, 5.2
functions
SUBSTR, 4.6
functions and Native Semantics, 4.6
gateway transparency, 1.3.5
ISO standard, 1.3.5
native DB2, 1.3.8
passthrough, 4.8, 4.8.2, 4.8.3, 4.8.3.1
statements, 4.1
DB2, 4.8.2
issued through the gateway, 3.10
passing through gateway, 4.8
statements, HS_FDS_ISOLATION_LEVEL, B.3.25
syntax, 4.7.9
tracing, not to be used in production environment, 3.10
SQL functions
column functions, 4.5.1
compatible, defined, 4.5.1
compensated, defined, 4.5.3
DB2/400, 4.5.7
DB2/OS390, 4.5.5
DB2/UDB, 4.5.6
post-processing, defined, 4.5.3.1
that can be disabled, 4.6.2
that can be enabled, 4.6.1
translated, defined, 4.5.2
with Native Semantics, 4.6.1
SQL tracing
in Oracle database, 5.3.1
SQL*Plus
COPY command, 3.8
extending gateway uses, 1.8.1
moving data, 1.3.12
stability, of cursor, HS_FDS_ISOLATION_LEVEL, B.3.25
statements
CREATE DATABASE LINK, 3.2.1
DB2 CREATE TABLE, 1.3.8
DDL, 4.8, 4.8.2
DELETE, 4.7.5, 4.8
DROP DATABASE LINK, 3.2.2
INSERT, 4.8
PREPARE TRANSACTION, 3.6.1
SELECT, 4.1.1, 4.1.1, 4.8.3
SQL
DB2, 4.8.2
JOIN, 4.1
SELECT, 4.8.3
UPDATE, 4.7.5, 4.8
stored procedure
creating on DB2, 4.3.1
DB2, 4.3.2
native DB2, 1.3.9
Oracle and non-Oracle, 1.3.9
Oracle database
local instance, 4.2
PL/SQL, 4.2
remote instance, 4.2
using, 4.2
Oracle, description, 1.3.9
restriction, 2.5.1.4
using DRDA server, 4.3
stored procedures, 1.3.2
DB2, 4.3
REVISE_SALARY, 4.3.1
using with the gateway, 4.2
string index, with Native Semantics, 4.6
SUBSTR SQL function, 4.6
known restrictions, 2.5.1.2
with Native Semantics, known restrictions, 2.5.1.2
synonym
feature, 3.5
for location transparency, 4.2
how the gateway works, 1.7

T

table
create a table in DB2, 4.8.2.1
insert a row into a DB2 table, 4.8.2.1
TABLE_PRIVILEGES view, A.2.17
tables
EXPLAIN_PLAN, 1.9
TCP/IP
facilitiews, 1.9
functions, 1.6
protocol
gateway transparency, 1.3.1
implicit protocol conversion, 1.3.3
support, 1.9
terminology defined, 1.4
TIME datatype, 4.7.4.1
time operations, 4.7.4
TIMESTAMP datatype, 4.7.4.1
tnsnames.ora
connect descriptor, 3.2.1
TO_DATE function, main topic, 4.7.7
tools and the gateway, 1.8
trace parameters
setting, 5.3
tracing
SQL statements, 3.10
trade-off, Native Semantics, 4.6
transparency
main topic, gateway transparency, 1.3.1
native semantics, 4.6
triggers for Oracle database, 3.7
two-phase commit
processing transactions, 3.6.1
protection, 1.3.2
unsupported statement, 3.6.1

U

UNION
capability, 1.3.2
operator, SQL Set Clauses, 4.6.3
SQL set operators and clauses, 4.6.3
UNION ALL
operator, SQL Set Clauses, 4.6.3
SQL set operators and clauses, 4.6.3
UPDATE
known restrictions, SQL limitations, 2.5.2.2
operation, 4.1
SQL clause, 4.7.7
statement, 4.8
user privileges, 4.9
USER_CATALOG view, A.2.18
USER_COL_COMMENTS view, A.2.19
USER_CONS_COLUMNS view, A.2.21
USER_CONSTRAINTS view, A.2.20
USER_DB_LINKS data dictionary view, 3.2.3
USER_INDEXES view, A.2.22
USER_OBJECTS view, A.2.23
USER_SYNONYMS view, A.2.24
USER_TAB_COLUMNS view, A.2.26
USER_TAB_COMMENTS view, A.2.27
USER_TABLES view, A.2.25
USER_USERS view, A.2.28
USER_VIEWS view, A.2.29
USING clause, 3.2.1
Using the gateway, 3

V

VALUES clause
functions not allowed by DB2, 4.7.7
VARCHAR datatype, 4.7.2
variable
bind, SQL passthrough, 4.8
input bind, 4.7.4.2
view
catalog
DB2/400, 4.9.1
DB2/OS390, 4.9.1
DB2/UDB, 4.9.1
data dictionary
emulation on DRDA server, 4.9

W

WHERE clause
known restrictions, SQL limitations, 2.5.2.2
SQL Set Clauses, 4.6.3
WHERE CURRENT OF CURSOR clause
known restrictions, SQL limitations, 2.5.2.2
wireless communication, 1.3.3

Z

zoned decimal operations, 4.7.10
PKڨywPK<+AOEBPS/img/ch14_02.gifY^GIF89a201JII౲:88뛛[[]麻sst{z{劋SRRdccyuuefijjl쎐Уȗήtvxذ|~`]]XUUlmpopsqnnvx{ifeNKK]^`NMOUVX_`c~~⩦><;揍[XXCCE󸷷QPPghjXY[A?@=<>b__!,z"zxx"ܱ H"\ȰÇ)HŋMȱǏ m I!(Se?3\2@H\rxT8@)6o͸iÞN`2@E*(P'TTIGA8R*6Xi0!  0hgƟ Y 1Py(׮wt/kD+NJQCw8CC$eb8ϛstw5(X@2NT 又bx -3K Va@DHE@ i<48xAxL)p0qE*\@WjDY@G⊭BNdI#u0!3TPCEdsP?8!BE`%P*i@Tl#AA1+pٍri睻Љ|~*蛀S 'H7 njhRA(t1|j4Z0 $uQzjI5QBi` A@ 6DF XJA$ʆ2G Dԑ- DPB*%;Z-H5d*6 Y$@Ld!HG(l Lsp@BvwT( 1yqjzn `hBD0B{đE@ĈW@B EZxC.Thwd*TM@|8*O8np # &{wO 'E0@' j*H3G3‚s 9QWF '̰G (*$@@ Xy@@hf_TQx $``0Q`VPjHѯQDy`xhXN@;,w9]&, A|!`3(T`ra-f .;UT`"`T &Tx(u+<(A?xt@zU9 Uv+u͐'_uB8 p4 W*@/<е? 2LOy<@X5h@ BL@ XaN0Jx h@*"1Nh6' X x'8CS.\ 0$<s D@zhP@b AI*p5p`ÿYWA B R]ljZ1,eh`L l;\`"D2-L_40@|.|,C@`<"VxІ@ h 0/@MGc PT`caX` >Uqƕ:;n*π8r dAiAu x*s.IK`9GMRC!0S.5L̇tfP&@YH~KXΙȦ -Z9ЎM+>@ ]`5K  `'   ",3!NEljѶ6cXxU, aƄ"5o}S.l^89<:0HMQ69=PO1 { 5Rр*t"CZЂ;Άt0R 4 `M@+R1q;.w?azhD` 8 48!d@<`ļye+ 6*'GSN`\( Z@4Ѿ=S_'Iw_'GƯ~tN3~Z!4. bU `R0l&)&% '@"@$O0;=0P/0.Cp\ }ǀh4%g7  /0u{Pw7 `6 V?0ULpŷX-{1}QR&Y$ð:ɐWI0N>1 (0b% Qy0@lK8rt(2T3D*5w(B{@ &(Nb/p^uZm2X@$pAz ; `C?@06-Ws;j Rv`V@/0!TWg͢p21b(P1"PND*H12$ptkŠw\8whl'@#;0H*Fslx`00`"IЋp0ӂD+?E*@j8 }U0%tP  l94WY@NZ9.D"*Rp x9Dpb{pxp5PN0`/0$!Cp'`KZT50YYځ8 h,` DU0.`{)D w L;`>RiqVxj+@7RUKQ=q ٗ1#zW0ZW`bɃpY?0`,@ͦq,v+6PE S/01`Wl+G +V0p!HBl (A"` -/Q0oGj9<`fi`Jj)Ɛ`F -Ws&`OCR1ڈq0tOHV( '.@]0zPA`'0LA@vp@Y4`j@/@Es@WS `D0zz3 p* WMXpyw[ںڭٺ 0c`~fҤjJu CgASv8 zAW*Gp$YLpw ;D@ pWL`Rõ { DL@op>疆pxpCzP C9W|" ,ek'uePaN6Z07`1 <5pAzIv `6P(@ PbjAЊHhf FPB1b&  V 0 p,n`Rє pRgG[{|XU\1@kHxp! 9`/ xbE01/$@0ÛPiTo+\0[{蛾%X [L߶ spv@Y(PrMa&1PR=T]:M(&aTH{J,x 'x0i`g`u"`0qQ֓w:pkw"ׯ@w'$Np-qxx`i0>|Ke*~xײ`+'UmgjXۼ۾X_ +F@B %#(1?Qg lMXA(D =i'`[!pP~~f MvHr| {&*$^#.f *+.t%i`r po5xD^F~Hwp_`NN Q%(=Cd^D~@=PaP^^.(`ڰ2獝fI`a~6.AG^%0}n' ]wM1)P^;FrA{bP>~'Ԯq!?n'R.B_-na~Nur`o>/>^~OenMr.4.06:<13/5>^2q4\^` /JO`pLtpr?t_v?\|f?^!Z ކJQ0>x  t{4Q^caB K1Qi&i&k,i> c)zrAxBC Fh`#ܑ ! F+aX@ԶDJ OH(B )B1Auaq˳QG4l8xjv   ƲL0B$@x tP@ B@p@_?B2<xn 0J#mZmOhgwyjT0GR0ttld@ ODá. -/$9p%F x. =a0 1D &Mx >(BjFTL7F`t;i9tP`Ђ$tF `>?@t$ v%0x 8'QpPx<3 H!@ڄMH&:MV){`K` ^!x+A4O@=>rA.p BF^P2#9h R*ȱΊ GEJ@|M3)9,*8`p3f !?|Ag~Z,!!H#s0&08ߙ``ip8  8IrsQ鸉MeTƖQJX>08H Af !k/$'\@w- P a4PAH p?à)ؠؠΤP( XNwӞ@ݩPuT9[<*♱y!qQ~.eN: `Oj+S  u%0r LB)vED"B2`K-lbT*ŝ䉜 B"{rvBFKbI,jIs,lg&:=l6Z|o$ᎂBc؀r:unRw6uRrxЍڈ޴dm{i*XPHȯ~=c닌Π$pS;*8*5.*IaJNM-|bYnR;?Mtaw. 72i)t@L À8vm;?8P7^T"<\a_Ȳ.{Z~`)̮a`fAbLg:/,mn05|F}; Z-176f\_tJt-aӯ(AENU}&ԝ\c=GDf=aRn }MbvBP<ֻŧmfPZjn{w1fZԮ i[n/#η{?M(bLl)@C;O8=z [.< s(GN(/9\8qj`Hw> 8a"wfwxzЁ{G߁#̡wy+_S/pK_ l'Yg0X~gxRv~_GՖ~`mc{dw b z xfx|k8Wy!~y7$2&f(wLt,HHb1vev$6P@5 T) `"'tp3"9a;tt7-'`'0 L p4 0/ G/ :iWtk]H JFPpqur #6qP4GQ;EpA54J8 #  X*`Fa ?U q00`.i h3ևP up0.  u-1p*1w-O3@PV1 Ӕx@ DwQg0*&X.p, p#*FH0H`x>܈2KQf0'PT6 "0%wP=aN"wF5t,5p%GB9!03ЊSG&t J7C@Ƒ瑌&E.GqP.pJ`K09  uQ6`@x1 Md$O@?GI-PIff @#,|xtE$(;0Ic(#C 0p'2@"w?C˩R)$O@cn0&H(u0A[h )eYpYjBi` F05X`1@N  `FW%2Fip1*7H C P- #6 Dc@ & s%3qdnC ps0eP @/@8Pv _20C`60#`/?pX6@34i5h'P5kt0u %c,s0pI,aiPX, A@R^p $^DwlGrC`qPF0 yvN@`O@0El*>pY9 @Xxl0>"6w(J 7 `%@ >>ܨ+qx(CH@P!6p0~&w0 .Mq>@ զZPu:-@q`H쇜ԡp2I y .qCF` :Y'k PK Ë UV rD&`wp,6@9`M2$6B4AtC 2d; /p5sx2 ? ~A`9њ"x-(mk/W41Ax$Y #P.;k k!;07m@ L2ె?>0%:٫ ݧ wP5.0{FtalY; !6&p0  ҩkt 00p.p؈`by wNK`Pm? 5U1pA(cH5-V4 C%OqVCO@A65^Cp0RJ(6 lP&2@u mx@?ok`6RvĻ'Pu+0>-9`4@Vp40^`$pl˲b p3 4 $ (QA @j͠0^#ˁ Ma?ʰV#EʱOCDUij ?k o3 {0 T ]@D*i0B!M= Aq 5pY ')1Cͳ`&P-)s$2l ϋuCQ ӲLS Pf}hjle}H`)t]vm6p@f+ 2 g4mp&P 7uhO0q#PDp6@*(>@y%@fs=]Ɲʽ}*xShמƞdUH-˻PP>+ A@"q-0p* wٯ@-]Mh9}#fFã0^k5p(Y)pd`.+ Yшpt*?0b0^ (@C[ N#vP7(@, %E*` >z^?4 `? H50;w`G^@,pJn8 @@ ,@SDP$0緍 NxTJgaIQpt2؊Hwp0HSz /u2;YF ޙA"= `N8BIFX* 6P/eٙBG錻AhKg #6.tym]\r lFS:  OP>JEGnIcM/!yF9{M$g9VEfɘz+w`"hA[`Lnj>qC#}H|%e@[h=4ল9`RxB@PW 0A#?pe$U0A ? s@`40i0ʞue0%/[  SAՙQ ?HJ:Y"C/+4 %Epi0p-+n&O?H Eԣ&ފޅb b""hʆl,6!*" (NH!Ȩ;- $rq 9ژ+. ~z C%E$ȇhѣ"]ʔP%gyjʕ$6~=E'lHYP! 92f &;N?sr !8̨&޾J(M4.. A,4bA .!pҮMot,o{G ,zNqv^"H8&T''edAvt"Ƌ/I"n'5? p Xt- 7] `&Y\r|F"9` @ux$(Hsb=N '!LxA@@!N 059J5A p ^$d.DNd^pX() $Bv##I}ܘh5"V&۞4"hrhD PR)Ri| ?Hg0>|QL16mZͪjWkr*">k^f6536 !W8,jk52"k/9 }ژa`7J $/#3/.V3y΅lJ j{?$>􅣩O38!P`0{\H:1zUB@Q5P| n :UF1vCe*5l-J B@-L1T#$x?0DH C4CTQ[ {YCDE1Գ1igqs(޼m}J3$R wA8AE(n *8HTp br'4^2*z$0&zԠ YE 5t,DP󠷶Y {j ս[kCT_-0Av(D04D@DA)x3C`*%-A,C#X "PX` 3 _m^ћ`ȯ= oza"13WxG;G7Pl77{ ]LcJ()uY(X󾈐Do7]c+}!_$@V];S"ba/D5xPpTsRn0at[x!|,pݬN2@nh- .  UBVP=K)=1{]b 0f \rl89 8!ڼ[W][ @Q,?"Yq[h Ђl`xGn?đ?F4%2J , s""h w+iuBb+p O&JShC+(BYG{GytiHL$ )q@,J`t/EHmP4a&% B?A㳒<.Hm v@+6P߾ [){;휤|4/"#-'uB @ NH,̠ BNVPA!55XA$HT*p "x'h3@Ia(Y@ 2(3qQEYo}uX  XX+vB28 @8< BBMDW`"`?'qGD5HA x؁@؃␅99].\mHSy"TXv91 n9H N#L@Ojx?zuU Ky|VVSTwg50&Wj`=@R~x~2^4uj50q4s[i\x  C:B Y0 TFxR1 wEwvCO @}'0䴂],f7-`6\'B,OAtr@00D0: `0yP5C]hp3U|{p.C`GlhZtSTC yp6P0"@fE]Hws'0 N9j07P%@;`#;(8,I&i  Dd'%3.  p.0u'X[!~H~ݘ+4b@_%# }~@h#yܸܰT2ؒ#"D` +4 O<7 5 C0H04,(P37+@`*1P6 39P(R0?`@H1^ 3P8(PBvv"?P6βPbOiX؈ ox p.) 1p  lA9Jr @1@K.@1.QCs@5Sp (.6mu<ʙ< ;W "9$ 0A @^00O\5pcAKkt )P [ l:$y!:ʝ=i牞ᦙ䥞֞6bZ%v[U  j p RP  '@ P&=ZV@"46 Z*:y.~me0MYa4zXEw@U ҟas?' |ڐ m֟G P-50:0qJ*\ /a&jm'ٍqY_j0 0 t90%9p |#:: P3l'Cq#۪ %%,@ jJb-ʞ9}4Z@1-Y83PR@.05@eG3psoH{| &@ m0C4-I>[F@ @X$0p҈-A`f9j v;67D]X*9 OPq9hkpi;pP]SV>Xpqi+kpApA0%/PZr;qPFr[5^P5q#a_h,bTdx'IYu[a攽۫K)F`{h7 S0Z]ϻ^p[x:[*ۯ{旼KRg?P5kJ/fF `joִ%i!~+K,f:&hW e m24̒Nj[A.M&?̵Aި*`Tb Z F\8xX <\Pq :)_teU4,a|} #>/w'PȆ|ȈȊȌ'pȒ<ɔ,;б0;ǁ 6Px c'u`/b1`˺˼˾98|Ȍ&*,,[[PD ` i L6P"E P'ٿ p " =|Ӝ UC0q*0 eA i`u9 {g[E i̝`D@ tJ鼢'mBp,-Οk 0\XGA)s09u)AX5?>̎9l0m9pF 0ō-+02-2<Rn(p$'PP=6kC>@T%. Y]H݅401h iLײrt׵ 3Y]CM +#Prb0 %@ Q@O/9z&04 @`ۆϲmL4mm@*.`$X`? OU6 'p)051 [p+@@&@`d F5p42wé2mMmEQ[q-PѮ al^a*-eN`BƢ.eLh.Ө^(qZj"%89޴1L^e~>.P5^؎ S/~R^5TVP!O #M2Obhզ _H@DFHHO-':N*}&UV*0lnnvPp_nnB;Lhs&t!Ɉt2j.^ TlX(Se :D@ȱϟ<J4KD%,ʔѦPTHj79ׯ6!7ԈӦ#76P멡_}NiY@cuBaA i G>Eirͺ^ Zl6Vu}̻wȎ!"JQ 3Z!A `PbΊ0xa`F3`!|ndh*IB RGy6&[!v" (pɴZD[mݦU"|@po \#Ԑ-` ‚XpA+p0GCN@&PC &0q 'QCB8D4FȂli `'JbXtS6"#(`Cc}\2  x 6Qt`A  B BCrfp (fH`粎~ԧ3c.",TCH ڨ|4@P`!.QH- jb *p+ Z  x H Ƈº4- Y{nۦU1lF?tZ lasq181 O4Ts4p9,|AaD ppa>`eL0Hh! D"!|ʌ2"A 1D^&G30L] 1 ( 6!Aй94Ap7C n籖  `hsK|ʼn jI~WȄ_eG[x.1'B 4 "t>2m -"I1Ԡ HL:t`\&J{ \Lak| !d @0?=bKp gH8̡w@!p 62:|$ƚB=υT̢D%bPǸmq4-<x.z07y F21(Qd#x,$8< [wL$+Ȣ >t!@"7y :.l#CIJ-D G"`HMrL#䱔C%.wYI܁ $H0Ib  !a,0ZaeStn2k|І:D`L:&=}3Mj8ҏ&Mh&,tA0LgJӚ4kAʍ%(?3OFMjSXa PTJժZu Ѓ'Ӥ#䢨J RV z?> _]GG ZӬ@k[>-q8SOf %><}`WiV (l`oXe`bֶJ[ ! F!IZUسF8VQmz*c!,@^/ [^(y-$Ʌ%Gս~ A]c\@#}w `]6z% ?aV 5@EXhPc0 H X$u(180%CѴ@  ƻH?,{k&RNۗm tj] 1I3->A* 8hϙB`DKs= ]>B w\n4 iɏYstq=e"h`XZָ.5$jOz4eo}lNZBSQ$0 n{MrN˽ (#l?OȚځk1,h@O;!N7hc*'H(OW0gNsx9n&37a2Yfa< 3{V |갭:uD;ŵL=BJjoÍ a@O/0 S><{;_a`C׻S҃ BfOC2p g-/|oXH7@h@O}K` M(A`sOwPP @.{/ekPq0} IH~s~w H8Q\()(uP z0HJ#Hs:sP<38X kT6xDVC[dH㧄NhTMXTRT&u^AZG؅aO`x3dHfڔp1l؆sKrG`m|J{8vRgTX!'HX凒(ltSHx}1wxs| 8k$kʸ،? Oh2Xd}Ѝ8ިPPQؘEĸ8Xhӎ'؊618Ћ hSEpّ@yD9ag,ْ.0,$hS8i8>@B9D)H UMPR9TYSyKy JДV` .\i'[Y7qlٖnprdIyx9!Z9Yy7ZVG :Pyy@`qi Xٚ9(IP<9Ĺw{wtћ,9Yy9`f)pPu`y虞깞왞r9.xɟIC*H~X)J:unm Š  ,4z g ޙPyP 02:4 @c (*|B:·;Z=*MٟLڤNjG:IZVzXZ\Q Sڜ*)h1I69n uWvzx'!qpP Yz(*1ʉ ?Jz P:Zz:Ppj!pSz7a* ~ZC:Q~ Si@_ W|:Zc`!ʮπ_v0Zzjpwଶx d )V@Gp } ڱPX0W[R,["{4KX*-zPB;D[F{BK_a<۬.OZ0T[V{XVKִ^b[fAj۶ rJr{x{XP,@xu&qt3渐U@)CL0zr%x`D`ԣ;*P T$ WPH0Ppi^@!n^0Pr˼{EmY`1,RvP*PWl(P N .(pl@yp3C]۽[1 `.ElP[`5U`n {&./Ax Wp?vH@l@0DKۏ[ -CH`#L%Pk5 y@0Q;@ P. `3? ,@xAKucPkhQ]̾`x  $FO`4zx^;vx@?`Dp[@jp?lXjp*1pa+0&L@(`VvO E`(pePEL #P<ޫU( j4 v\"' rC+y;hziP|ph1@1,΁L -P/ 4POp40,PRp`:&pAA@(@%O@dCV)-PC]kFNL]Oba R,B(wpse6w@xn`0s1'`P,+^hbPR qW ,оWyPʒ`V,0&Pw (PsPv Yx]m Q`5u%j0&@nu"  מ0 j?,0v 1^0" wzN(p<PA Pq! {Q/@DO = .#T.((( )34Y|ml3`AR3`a|+v+3P0n`bL@݅c[ԑ9;Ra?&Pm1W@9 -YXv@` v-JVp+p/0'?  PppE`+W.LvR@!Y`p, DxU+Y.V@lP ,L*W'ApVs`RT.y((@ vD6;v},{ C$>P LVz.;`0kY0*A+U 6PSjE`$H.{n`p];j=.]`N/`pc^掽w9qjAV38LUF?U0&ji+'P Evpi.pi=#S0c>`*FbKq`@s`фU.lWAP}&E7yODy`s6,?pP eTP99O4`? sp!*pCU@`wP2^0{P?>j5P9pu'bCDw$&30_P7S - 00 B"%RD(E3^4R(4q936&w>$NCu&9""˻Ox,w w Oiiy6֯ + w^""&J!/l BO 1,jȱc?C?ʗ0c)͛8sɳg,> Jѣ8"]ʴӧP*JիX~ׯ`V*ٳhZ$۷pGݻx~ţG߿ LÈ+^̸ǐ#KL˘3k̹z;PKڮYYPK<+AOEBPS/img/ch01_01.gif8/GIF89aU+))KIItqrUSTܝhil^\\}yyѫɇꮱefibcewttꛝXUTopslmp􄆈a^^{}stw^_b\]_PNMwx{pmmMMOghjUVX987geeZWW}}@??>==YY\DCDyvvljjPPRc``!,Ub&b& |o*WpÇ#Jpŋ3jLUqǏ C(ɓ(Lɲ˗IM2oʞ@ sѣHMʴjKJJ5[ΪXjuׯYK6زh<;Mjdu "#G +$*^GWk#KJ-@`UT1"X౸tY }ʃ90Χ81O A4i[Xפ#up6 _, p IaG$?%(&D*5|| Fj@ %MvU*F6@ `)8PA1rIAF{x'j+dAq8tUi$JQ)'GЄ4itb $dB0H,Ȁ "8’i$%X`ă ,aY"a / fi3jNՃ1,DFsač*Qb ax0xP!^1N5ijb"@AgUX@ Hq#M,4PD=x,pP^;q T lT\@u)A$q*   Gb`˿&r3(4S$s8LL:3>M3Њa`d,P +DS@l &\uZFBÄtq7\iЁ Hm7*_ BݷWnn^wcwYZG;nK9dw!C㎷x QE8)E:U냆 ;@<@>;A7oKU{>/;u=>;}L}ON~{>SFM7M ar ސj0A = H$+hB(0EPT"  > }8, @(0b`=*x@,t`~Nt":`opA*(!i@TGWX3%kr&v(T7%`AzpkHFi<Џ7I#<z@ A X 98ivZ G<$bL'P/ MX>&h#hq[De7@ SPPQ,S@ Eք 6ݡ͝3.g;꩓{%d?o$M jP T -jl;З<4Є4 !FNP$\hK>jP?`:P$!ш`uH 6ȀQ`^TvQ(^t"|ZL( ON[A zpFHp5߭أ0M^818j̋DɤK4 AF-+< P(B @!% BA`U!V67]܋/9"by^@ @X|,8r@B=xJ IAxcà !1du*P`b_XV:>%F&}G!Mbc+$XvIl@ mko#!6ml; v Gc{)5} DNO0{aE]J`Cp{ Gr2ZqoC֠8-` ,@ w@@da F]WC P8.P XϺַ{cC;(LөuY@P,8[w8{5i=o{BO2 Y6@އף;, }ɋCֻ=컁hhwÓzO+"O|]/U| ^BO/ƠmDoEOk@xn,8. 07pR(2 mYw]{Nx\PGH K M؅ U`H*̕8ȅjXx_F=ؐy(zl 5+87rx{(~hdPQc 8W+aU $H&؊8()h}j}#'8KN԰h|`hQp #`C)Xxؘڸ؍;ȋc&I VR x^b 7/w]XxQ{ɸ}XC a(xr zؐ 0G y)q͠ȑз"w$&9 I+E.i0!@ؑ&&+b蓏8°/Kُᔻx)q(Z \Y7 @/ˀ|i3)1.rw[YP@Hci NhH"` #I 'i.Ǡ1șd1o?q@\1 (`а{5pBP~pP)€ kٙ)q!p7X0pcG) P"ΰ@1oO  :0p H(ep 0X0Zz:_@|P]0 >ACUC UwǜfpB:DZFzBjy`*(' @VzX a z ͠oKG1 0I҂p*nPzZ_ lPzک N=YPڪZ]!{ps2)%B.];`Bx0KUB'PZ \pؚں6VpMʖDqt꺮ڮ00X`xWXگb ˀi+Fr .2Pc%` s #}<: Q@* A@%3q'*P  Z|0A+ZB> B+?۴Mo JRZ\۵^`+Sgb ww@nl@vW@olpJ`twKJ00`4`a"l8`& `HG0&;mp'<0%XP!p|@;qC@MKP( ȁ&৵@[м\ͻD TK0ВD8 h{蛾껾۾ksgpx:;uxAЛ, `~Q+4W `+`R Q6PxH0{op ^+M*>z0\FGo{TK [{`_e;1{ʺo`llc;wٸ j>o8u;'zcx5PA| dabP* N "{'U`Bo8s`@ONpń9]9 pg|WO0ԿTEmX@)k͌26nvc LynT`cOAΊW0&Af} 5`9p@SG@9' |e8@`?-1͇JW 0W 0upqz|z`p6sPm|zphnMF1@Ij@=1M@Wko2X+1 ]-09Mڬr >#I40|?ix mR@ƅ'Rs'1|A(@E@Xʯ -2MPQs }-߈߫ v"Qh,0' %Af3`@B'@jP0E,ކ] 0uF.HnAߡ*Q.^W  :N]ٕ(j Ӽq:K QгI\:P' i 8S ?A^G䍾M>.~Y5/n>~E110/> /O1Ei{"oAkA(F1j i;x%>G:$'i&Fh{B(>i<<<11FxxFƌ\?]]ee\nL&&hX Q l (,"*TA.2n( [ IrĈ(/K0cʜI͛6$H9?Q@aPJJ?X0Ġׯ`ÊK,DQ QCjA!RGv).D@bd+:ID V' iW,e!^z/(˺kg%!@F^.pQAȓ+_~ϛNKO?4Pa!JhF1IrI*YeJ*$%TSV%fEPB Ba{Q@%$S Q DqC:  $b)aF V b_"`@^#*Mڧ  tӉ#b dibb1AQճO?4PA%PCE4QE$\ mG!I)?^!'dʃ C&L9ਣbNJO (!`!/\x  C, $`@5K"`%T! &4dOJ 0 Jk\L | Ǿo!;@N=q3'vvnw9ghz){” G@~Tּ"@ >D h.`B>D %b@i$P >4`D x iTQmGMp:+<=,\R4CDcTnyX: p.- بPÇ<^sh`IhZbt`t$BIJ o:<Vvxgy@;Te.;sE>typb WgBץv+d\ha1(v (:!4Iz& g"0Jy5R А M\O{J` B@8T!CJtS1֝c*4[Xz@ A5b,xR./P8ͩNwӞTT >"A R(@A JժZXͪV8%8H&lc݀SQpp*кvQccE)qc.X 5ŽE>$#8P1b iAдXͬf7ξE i(C MjWZr NQ';(OR pK6'О!}rDob5FjpB x\ծE ^IUb#G†$#Q@) @2@Ne @ЁXȱCp{df (pD D .(g%$ul$+Gvwc_)vIJ *[Xr`2 `0A $r8h`Aс.Mp9 q 8ٌ" 4#pAq@ AЛ)u.!2)"g4uh3=t nqPwk 8se-6,8"` > <01x@NRP?` #vU"h6J2,@!x6 m<` .Qvmך0Vw,3 RhN}ho }Tz"S8>GUP y@f%8hTPxxg7+~W`y+xO Xeѣ4C\Pƺ6;vc( * Ô,`$x 8  ,Aӯ`?4!jxCcqWG ,{V3Դ}=p?}8'w{ 5X,A.Up("P E8޶o .P F'z}{P'pA'Wd6_ W_ j|%| x@0$8A`@{}g5pF&@z9fI;sV 0i XX EP6Bx {%!XpDj`j'_ diw_v煓!^)Ђ@f<08*s*+@)pץ*@)Prg R#3WW{ 9 `lWPD`pHvv8MĸHS)Jf* 59@JpV,ْ.0-i WhQxpFfvpKvXdxPxUtX/TYVyXW)x1kgDYFy˸0%h`z|ٗ~{WЕ8ē 1Mɖ8lJٌ9)P`6Zp79W;Igj8lkI do}@rI`$P+: $@`@ ^D}VYyؙIrpOĐķ5rmgwM P\9㇟\"52+Fϩ|(X ^tCٚx|f ɛ:35/ q;>0u \QLڤ^:dŴw+@ Pup1F=S(s@''ٗ9" m<7r]P<"xpFL`wjwiD3 V0X:Z:bSrtJK*jw*!yzd{j #`OP':^9:V ph :Zzpʪ9(p8RMD~Ē'9p 9&М} P[PQuqڮ^^(AQi @Xs'94U0غ7G0B;D[CXIN[  "$k,%@_EPD vO0ft[v{x[Op9pX@CZ/Z۸/{ *R'WY;x{K8GP:M/x:Ys;t}΋ dxLP@&odLpi+b  L@NйRK;we+ #M4>p;I0 Px@'n8g9'aAHɫ 0|>!5< E`@K&!E G)[{+b#۹kLNPOp),*O!30]9ƨR9`b8bXMbS0>.MPG (3`-"PPZ`Ĕ e5Ɗȋ_kkA'hQQ<|p,4!p00%1F`95|$]0LcU+ɒ@cf7raR&X੥ꩄ ΦXe2o*ɴeǼ}ɬ̌Ė#AP'h @d, kk wWpt@$0t=w`  48cH,e*,w7$=p ?K ppSA}HԸb`A \wXV}X-xaz3},k +ɸ(o`DZo9t-\o D0*vRK=؄]؆}70m{2ciɚ Нuh ">$^&~(NЏYy m9ެ}S]0/]]p8DpHJLNPR>R^ZaoԌ~㳔fuͭ Nnnnt^D$z.a4=cNKaġ~舞芾bf孑ޘYD^> `Z>?0c4gO@^As˽ly>85FɎw OnXJk O?6 F|P0n{ܰ{>8@Nh@8~s*<oZ?`" \ &&k^ଧ^&O}p,o{q[ZZ X` 0D_FHJyp;O[@7RF`/B>-_^xڹlOYO Zp00/|0 @^sP`J`mbdDž*'ٞ ܫB&ӨS^ͺk{MvpA<Pj 2M9xT00f۴abF9 D1 K OӋpCPRd} ?;q c7eJH!'oxX7u ($hbN,h|b="Ce 'э'DP!آ[ +0X0<1rx``)dDQGFb9M+!PQB-p@ /X BHТ[d馜v駠rPljj`E`,#  0Eae=cQĢ%0@)ڵf{vRkx =@ ¸{tDkdC$G,A*O*C (4NBق $la)i F D !G ΂>"2BÌ:-o 1(L7PG=*"Wmո\Xq@/j#I?"V XTq(8 +p„o.0$7+XWnhM<h UTQU` 0hJ,M`Ll8'< SЋy0"Tat$jA >Cx Qɑ 4`TЭ[RRH_ H5MF*Kd; 1X<HE@kq Cސ&Pd;By!p_ Y .=0APf d P@ oPHE '^Ő  "̴8"EbDbJ< Pr 2!@Ԑ%61 ѣꑐd@.Z[%$: "%&@ L! G RD3B L90!* @8pXH @H/*$PjZapnJPP@ '`XF(PxeˇSB @Ӄ#d9Z5(A;A8B2` [p‰6 `Hc(2 0GVxGQNEe#UJ`ԦnBCƀ!<81. #  46 X0$Ѵ"FD?!:6j9%CHגLf!̑Aj@U4iAfB̆hqxբ`TaF L @%nβGm*D:o%(F2P7L@I zL(Dȼ (@< 7fh@!p@#Že@ryx0BҀQz` N&x(c[4oBG Or=\$hA;wH@.[&?җ^`3PӃM@̣PX K̬f$@5@'X@8 Ю[5[x]]R f QK0B`m58`4` 2zgLJA5'X)䀄H,%ĠMA`CAzP "37uR-$!0MU9bs "b`0׀fQ~v~{HPq$KPNIeHdB bP]F {(~b%$ =dG5E~``p:4]VZxJo0# po jpP0(x83$`X @$n`K`xZhhh%P<]QF PGB0>@.;,PK~A]!7;EX\u8txXts(n88jxHfɸhcXb8axXaٸ޸^(Z8TxM鸎E=88tԸ؏UYƏD ِYMgyI)bّ -$92Y("#,I+ْ0 /4 3Y8I 7< &|=b FyHJ-LٔNPR9TYVyXZ\ٕ^`b9dY& ;PKѤ88PK<+AOEBPS/img/ch14_01.gifLiGIF89a322HGIYWXvxzfcd檫efilkk񍏑ޫ{}Ȓqnn݄}NLKlnp^[[gee[\^}}NNO_`cqruƯ;9:㿾DCCurr"ghjRQR(%&>==A?@b__khh̓!,tjjtϬѫ Hp_*\ȰCZJHŋ"bȱǏ5IɓD\ɲ˗TœI͒2oɳ> JТH*]z(ӧPJm1ˁ5\(k0xk?lb̘Jla9;kBX4 s! 8᪀7@ AʪR%7i8%" [oΤGWPs )Q ~Y C8Z R#H•4k@V#eH#:x(dŎ J bB5pp$\Q SQobk|  C 5,G!%M;0 `(p \ 4"ode $0@,+|&g.popDdF- ;`PX)\7+_9`j 5 odG,oi`=AP @:` 0 g\X   L@2d".=3pJi ШlPGt ϥDJG|h <p8qF_`0uaDܐ8 F+JJl Z١viHѳo8\s qoUL0i3lX8iq׵p߲z(A o4Gp^T4jp,k+V1W(+P\P4A srBC7ag H%t Ċ f(34]9.XC2tOҤ@V$Oۄ7YcO8! Gc'u g` @%Z &>]>v4 )@W8~X8qXG @$5A_αH`xp?$ϥ ַH@$IT=[Ԩ SM/ !@fs5tyITPV$ b04i8Pׄڀ!;а+Tbp00786;rYxdVG;h͗pm+rB]M9y 3 N.L `5V e&@@YcP'DF@)=@<+l_>BUpB' ZP6rL04g )XէTP„aM # 4B~zM:3&`է"n"j7$ 3p 05g fh 7PFaZ/V 4 P"퐴 T8 hnv0*ZU+Ԥ+ 77GFdr0jNP5Z# :R$\WJV8ǟPj,8|9 .Wx„ 0ZЩ?hf1U͡G 'IJ"b)Mp^ݗ+80Pu'p $ B`&$\1%8@ 0Hl|'pCa?2}X업Ia"}UȅfHmg ^npX mtXn8vzrx~1Ӈ8XBq؈H5x؉8Xhp2H8Xx؋l(T0;l08Xxؘڸ؍8U[S  긎؎8XxuP)9G@h018P9YyّB N] ex Gu ) NQE5.Io@B   G0{*y ? NDpP!pc Yؕ_( FUy8k^9qit vYx ɕ}isy )AprmXٙ 08HP #S02;40!PHP; U )#0A9S-aY yᙸAX7X@0(,`*@-`*UO@h"VGYw.᜛7hYIapt5Yi9,(Ppo`Ae ̡*9Yz jP30kpRT4; l0|!" Yw)+j -)Gu# :_Mp3$G1 1GY:#* 06w@0?' p#!OY3|"$\;˳0tXpPr]T ".A;NB<g0tbH{N7. 4tu24,)-p\ J qH`pA@5[w"pN!32S!` 4@.U@   s9P'ږ:-"K`pF&@$Pyj.(?5:";ss2,w͕i" KLFiWB@`1PJ#= )Re#)PH0#p4`!9OU 11l35 ˚ 5 #`FD#5PZ47'pX+2zcă[,1`7VC:& e*d\pkƬu* ` `-$ #W­'`=' *&H>@o0;p`.ά+'?ѿ,|Lˠ"3O1lԀH* ieƚρ볺P^,r,*#} MKЀ8Ѵyx̅= mY8ҲPux(M*, .M00Wu/q{ t$ъА|pJGXȵp&c PB hϹ@= @ˇb1`Pk a `*w6=`LjּpVX%qFT:9}o X ++12 ڭ=ؕiAKѻlj}M5͡8ppA?FP:n ` ڀ~-K 9ܮ s+(BrQ+PqUe9m `= =ֱ֛  G/G0mU `o0y5=(^ ϲ- ~>|S>BK\$X  @-(޺ E->!@%R>v@p>_+)"F`AT+-LN@TYӂy/'"9pU9bPP&2`IA}xz.z0>! !E ٭؟^~Y⟪pJn붎+ PNnMN@^ .nP~֞켞N }vӚ$0:wڪ~On@0w 4(A4EfrE1tZq1t03F j ~q Y91p Z1 G;@U! (0 y0yG>0S森$4饏ވH p 8C!0@) 'p.pP XE00@.R.dQ@~V КԲ(Ybi+Ym?k,hBL$0C 8HE({>\` " +2p t;ȗ|$qXp ֏ 6,6Psm6;R1+ۚ ``ZЀ"X &@SЀ &@W, dw )0 5(`s+4 2 !3]T8<0 ") fټ -/en|.N:#h@2(\0@y:044  \S@l@ }B=D>XC  @o`42ix6z v3U M {Q< isV6pͭ0XA)40S@&pʁNQPWHSx DVj  P7@9D5 !ܐ> :8IJFxta [1CU1 !Rx@P=2Sh5S)¡I@u$JWh NZA|X:r!Ta@T+ V]0nz 8N4q!,hBG35n¦<'ɊJ⒮H L`j? Pjp8Tr df'?Y 0Д`H2d$xf *t"+*J,X0@Ȁ"K0]S@XͪVծ^uy`pυ%9[\@* | 0j:` 0SUXX`N }jd *$=H4(`wQZA@*5Wvd;]8@Mr 7A1Ih"xko&WUе.#TU.lŢnQ`\Y.A$ a{T|vHXŽnE|@2!ΰ7{`@@sgֈfѴbws7moth-Y \ KA 20k:`C=PjT3h6P qh<͐`;~ : # <>p1P ;qwU݇f)V7lثHXx:#F5`{jp ,2B@ ^*ABRp ~!i쏄*6B O(`_a(DyӨ|6Tp0Uj@jZ  &6v1- (P 42gx:lWpaRpp_rU]jb]6~8xw.#J2Z4:P2HcD@QpX ;`0*pփ7{{Ba-a'w aGp `gpG.'(ex9xr&`;X-=/sa + A9|RQۀP`^~2{t4=! TP !kua(|(oR3 0XprWX`/}0d8X~h1 "p->4;0"9pZ2`+"P{28 $0#:4P-IIk`G " 3J0*Ё _0w&@02 9׍gx4y0`p~ p @oUoH?Y Bs69fda8*V`j(}68zɍ]x Mexpytvqdx{Y}9o8I1:iI<Ih0W)|)16yOEyf| _ xYiG}f݇y|9k@BI׉#]Y`fam<@bۈIII#Oz0YyٟGv@xp ڠa牞Ǘ)YWnau ":$Z&z(*,ڢ.Z}u p8:<ڣtCzDZ।ѝ#|VzXZ\jr 0NPGh*P W5}PPvzxzvjq dZHzmjclZ5P_4P`L LP:"zZ(Fp(@F*8G)@#cq]:*OunaV@j7 +39Ū@}̀5*1@*V053 24476}hexv`ak<aIk[d ʯPD0'@S4@Q s"^xZPJ'@:44@0PPb'#u$*@(Ls@ 4Xu(DM(pIpڪQ`U/@a`ekgk7W~c3qQ 8 b.0BB`KD!3,0& &p~$P..(@u3 |ŵP\0UAnp;,.~suG6@̈Iè Q#XEZ p8@@jP&C$kA :pRa `\ 4jSpP8պW 0PE9Г P-0܌  0<<Ȝn6[Rì@+X%'jZ0+H@(;@ rYp^ r |uQ7r2[|D0@k`3 J#H };m"'o-=h/ .&tk1/GC@M !4/Ĝy=:ׅ=.7pR?p,}ĉ 0%[ˉד휊l}}͙]-p'" *rTMz -pii'۳=d/ȶHŰ3?*$9ЬD-0ښBP[I-[`3Z0*@ 3_ J "Oߋ2/ =S?8 P|2??B 6=xg.$ xJ6XsN׍<׭00k @B"@@>1lXL>P&K\ {&p/:}4Պt|%M o`ՄLO F`P=@**(p-kp@d7җ*=.?3DZ` *v0Ѯ\1> Nű2@Ty`10E#䥠.p,HB!K65Ю#LU>FUݟa0G21Yrꨮ ] h ;Sn !IR15@ 4亚^L f(*R K[5~up(A0-CΆ8}TIx,`sO6~=P42j}29:T0 (j'෸cOsX pS0;+./R PP T̈́&pSjT#^aMp9 9T_'D \`٪n`޻P+`&(!Ӛސqc.`'Q#.*c&@;0;&)&) l'.& + +.+>5- )&8 .Z)k;k)8 2· QLgd VKFc =~ HÇ#Jؐ C:tC.\5ZQ-CFb%Db9 ( J[?tǎxlSO|jʵ뾄 KD+i$VqKκݻxLÈ{`s`NPXj̙ X|C] :^zְ!vLj7sͻogꘉ9&T̼y?M47nkwmĀ7\ҫ_Ͼ}{ ȟO?LNO@^?,܀6x ]6UZVZu3C (b4p (hE~5FTY8vv PxHڏji'!wj 70Iԑz$dvԡE& $A1%YUcŦ5AN3d"(Fj] *lEXby]d]vi~ui5>3*6;`d@ $pP+0 A JApBB @3 8 ȼC &% "BA ɂp_Ll8K@4^81%0d\l6RӬ3Zo5|C 30 7G jX q 5BѴ)N}+V!I4D AVGOmT$Ɖ\ P g]XjּZ~*Z6r*s%XU$cjcyVϬ=ENٿI6lM/YiVo *XDz,[p[$ʴ $iV[LMŐoO Aͯ~WuX$Fvq jQt0{`?h Ն)\fgMu!b(NWb>0z^@t0?"L @(L~,H4@ALQb2AZ+h 9\D01y=cC.x/(k1b1^`*@j`q@3hX@Pa+@@A jˢY yf" 0I5< :/؁,wg䙠f;ЎK`^@*"n5X g`x M`NA#D(#/Yaaf~,ȁ-:1<-qXC@$ f@`08a# mHtPbMHOҗ~(g| Xn@`]_ 29,8@rad@ k`8 A' P,@& @s@  u* `A @ &h@&9(<z}5sCOy'+[]&c ֵ~*p@, Bc. l-I@Ѳ4<D`5@ B' Psnt`x#sOJMtu9ng$K{{gggaEg MpH8!W'`c?n" pH0qu.at| dB헃  "*HQ7 `>kAM0j30(/' JwudEGZ !bTb,6X&X0ܦ@9X.$`@0 WnpmE4 P(.B9p;&: 8pG* 0pw3-&@5@ 3p, /,`sưWs?*`& 7P؍ˠ<R35bgUb.r ɐbg u.|,pb x!BqB4D0 9n`uiF , OlG4u9+0e1t}P+Pp8@I WGM$ 0 &5 0HU ȇ%T tYvyxz#IPя!Aw )4Y8Tn Ve`ٙNҵm҇p@7YyyC Y  @ِșɛéW *XVdQClu)iZ Uǩ虞.œk)ؙ<[ٟ$ٛ92}{RjU0m0aZzZ[f <9UXzc!d0jY31٣١7Z2 Cs9ZS.פNPR uyG*EJYzI[L@YdZf:VڞXڥʢ"àɦZz|ڧ~}:ik z(Ͱ BzV02"Z:"-WBZ 0* *l;:ڪʪWJ |9:C!o:ZJUj <4Ujqo  6@j;1Zzjnڬ` -/A`j&p z3ۗ ۰@宅 feĚ@T&0a 'pp'mqW0(44>WpMPo24p BPHMjfdzJtL0%0^`b;d+Ԧʬn{k (`B MT`?>&P"1` ?>P zT`p7X|v5>o " Eյ8gk[mo[ #?087t:P w/POpf2P5u438 t $}!>U077원@Z;Q@+?PTV ڲPy2" l}o3:=.p@-?-pyp*HzGAY |a v*,.,rЮ7m oJ( @"iG4P#0vħPp*{# pG X`@vk][lnpno05\7l 9IHGsJ,`H1& 2zf(1`1@lȢHq,PP;;0;DLev0e\u(x԰.qoelwu!lHBvf2o!x#4pR (v<H`{S|=wƼF0#Z2y@jK`d9I-aϙb3P7!]}mu`~h}]Ub_pp.02=4 @nfw<0$P9!<@K}0LNdPR` ңsجB=b`DPb=dkVniը0\};EKPB*i=o<9K"שt^6؊،؎؉Uv.砚>n>^~؞ھ^$,ϞGy1 y|?7 (:9@l p lYнGd7* T9H#a߬?N02?4_68:<>@jp(ϻLNPR?T_VXZ,`yAFdH]jcpi?0*vߚu|{_I_l_ ]~ho'X?w&WU_S_Eޟooo>??5%֟;՟ܟ71_TD0<)߬!k)7.;,7+UU+o(+ >L/WnppF$8tp &i-iO " i,ip5p&ư UA\pb788a8D?>(7AXޥHs&gdh#G4A&F(@JmP8@rЁnvF 7g|\$< бDdT⌔&Z"VK]^ԠW974a\ȹϠC M:i(g,_ 7_>HÄ#nԸAK/ =NF 4HScX|H`Fێ' m6; Mw|1FXRS 8Cpti! oŕOG% tX $7giAE0\oqXT_tP.`)bF7jX2iXRöSiiG|Zjngt} {#dU< Pn|+@2 P9k %,+B`RZi 7K hlDn WP@9(@N0%!p"4cI(jG }{lg[ҶI8mM-pt p-r\\Ѝ.+ZWIøv+ r}.x+]/z[T/|Z/~OLN;R /Q5 GL(NW0),ްk 1?L VHVWw|590hc([y K \{e|$+LdA<|DgUfq 1Huwz4>_4` Tp&уn ]THbэF-i].0 MԳ}C[ϭu-xPDg S +l! 6`uaդu: i&T 00OV$6 0X@:ŀv?>v=Qm[: {/< \>[;D H%`0@4@ | 0 DdZ`7R[{X`N[A8jݳP9 @`@dM8`"Vw]: s0{ #@Q!Ay1`\wB~.f Š ȁWك7|` H ǾO[ׯ]TԿݬ x=#nz*[v4!G[BPWhQpdؗ <_w "%Y&@3d!wG8)p`؃{HQ&@az6x <؃>@;VEw 70ր1 30B@o2p2@P09 " `Q=-P.2?0UxTig6a8h#~@HF50kpo0o> sok8kjMMx]wI:x8 x%}ȃ;`P<;@opЃ60>x^CǍW&x3X &-0OFn;HXjp=HXЋ^⸃H`"j@;Kk,@-0<~ ^=13H@;H>p*9EW荒GBV)`!Ѓ&.I͈2x&pFU `0ٸ^"$U.4Ѓ  @x?p(H8ikɖU0bYj`q g10G@9iF|cP-.w?`-2@E'ਜИi]ϙ9G =X5| Ց^!P a9H6*I^0=p,*jIyѕx)5M~ @+J ?04\68:E `X*: HjHJդNZDh:*]60`WY*Ca:d:\fz++KE\y*3h`\ @[rKnؠ[骸˳ K^D+I=dF+YPkn1;;묬Yf;ZP"f!{wP"ͻd#J˸j)`ٻ}%"PP86 $fuj *|ʧ 7\[<<|grD"<$ܳku)L,l. l\ܘ;=OL[F\H'\ڻijN.\$K[fk؋\\]^Y;g|h:5p [!\xlW;H8 p$aC_JLa<u?JŅLJ?ptS;1` 033D|!B07_eɟP<AzМDz @qr2p)3@!5etn[ u_l,RLÄͨvAcklHD- [o|60dl ͩ7y3CtTgMWК2}Q8H΁hP@LjF7)'m?EҴwA$ L_ӷ56 up|@jlnp}r 0Z{|-ͮ G1$o;"[Hwp=lIbMQF٠ڢ=ڤ]F`*r 0,װ]P&u* 5S*0 `. *P@9Ж-ٚTCy؝ڽ{:㪵 ̱IMz(0l9 Z@( PνZ,Uf`%Q.pSZ|Z ,.0nh6~vڲ@(:$^{ⴵ0L `K; G=Z9;Z.)k7以M>-N[t0jj>,y(:=|> ^#` $W^Q{N ">nq^t꩞ pY®iύ.P î峮m옴Nn3lv-Nz\鴚^y8.k>*>^1?@_K^+ \. n.o/^ k_s(*-/j1/~C59;߿^~>ْ~EEnIKZ\^`_CQG/UW_xr?t_vxoM D0:mIebڊN}/Ix o}do/N.@P/ ?X$FBݗ^^{x._ȟʏmfuNGjOL@YRo[.f$ͩ򏩫p@فQLCfZNF `~EB p̚$*ۇ#Z4}Öl HÇ#JF8`ȱGZIJK\ɲAP46I͛8sތ!ǟ@ 鲨F'):ʴӧ@ 9 իXjݚu:BÊIYI'<˶[RGȝKݻx9_xe ֖+Āǐ#KLjެ+ϝ GZ Š!úװcˆcfθs|kyR4$ҽ+ 3)nKNҍYWрP -p\"B԰… ޘ` Y `C 9B0J=rvTM $h(+݋cH @̀ + G@ 8:j@3l DC}[N!0\BB 0~4p ` Jy(U¡&袌6^TG= E1 T@ A?x t; &h C - :a 7@)< -B 3B 0YC*eȆ5RW,`Pj))#ߧHn B,A F(- R&832Lp&' (gL/#D-TWmULc,n؝ q$ >  ^#~?,&,I)' Y^|Lj14AԾ/-BaA !#UzV O ` + @`rrr! 6BXr`Hh8 ~ ﹀ Vf2Bz5d@XA@(m Br @G1!F8 8 dNB2p?\ >>q p&9"y(Ux'ap8|80 xFhaI@Ґt")q"x $#E)D>:FM7`MBPu. 73F"ю.P0(MJWj/ w5G>AG#q@MNjHMRT3`$ZZ&%OEA#4Ӭz5Jֲ4 ج~ =GJ׳exͫ^׾g7U2[]WCu=T<ІZͬf7Z^E;F%-cOZD :lg˓aI =Mo+Y&Hr:mS2S{Ixk-HLK܃xa&|MzxMI2㻈} a p*#$iTv[_z'/lȰ7{ \<Lag-q638αw8 _rxEoI ɘ\/|`eȲ.{YIr"y-C*G"u-/@xTWx`SXwvX"7!};n]z>=:w0^_|8K-x:9@| {(_8Erro1{-Ϲ Cx׷CnNY\HI䥼4@]t=X$ȧY; qHbOgj;8̉rn]߁J%LP!PvB mr7z[C`d<&8w!@'@9x8| hN|UIÀ f'% ,&|o'r W :AB@80@t ' Z"D0/ t t,0lB7M@P+` 4?3*&p!X G}(7 M`42s C0pP&.5pHP 5P,1+MIp-P 0&P@1U*qH`5P$|-M7!` E>{F(xug M27@c*J`s|BBc3 @4 '@|9M,'{o@k3GPM7mrL'-0* 02 0`kP"A&8yrUy*2H: p10[1hOxS@9`?p1%䃅p"7C+"|;5 D1003>ۆg᎑Ђ؆3`%@0kC0!p"NV:p' =m"BCP@ l8 -S|@~,3>D >,P=>0cn>Z@)D 84;W '@0^;P7HZP:9dKP 8loc5` *: pJ7@@PwM)iJkD8I.`o(022;?'V&pr@50 p902 A l7+@0_a=C63C4T4"L'13(07@}B,7'( 4",.C `.o shu ڦn*7UnZ wv_'ŧZ~zvat: oz o Joz :oک: n:njZn6ꪫzSmp*J0=zRv:2rjV ΚJtkJyz0Z鈮xvTǮ?Ij7Jkm6i|*g A8Űjкzzw[V*,h.64{y6[h8sֳ>wzrzJP'Zp:pS&C+wzO0+0XBcT[jW9`0@2*dk˶bW7I2:0*87#(c{˷Y20*`2,0 j{' 7`4pE*o Ø˹˭@;`Aj%ۢ0LXŒ9 o@2ЅIek9[˧f"[;蛾Sw}C*}D*a)rĿr2{q pS ,`ip@/G,@:@(*,.02<4\6|8L p!l#` rHJLNPR Description of the illustration ch14_01.eps

This is a text description of Figure 14-1, "Calling Oracle Stored Procedures in a Distributed Oracle Environment".

The functions illustrated in the figure are described in the surrounding text.

The figure shows an Oracle application calling two Oracle stored procedures (oraproc1 and oraproc2) in an Oracle instance.

In the figure, the Oracle application is calling the two Oracle stored procedures through two separate Oracle instances (ORA1 and ORA2) of the Oracle database.

Procedure oraproc1, which is stored in instance ORA1, includes a statement that accesses a table in the ORA2 instance.

In this same manner, Oracle stored procedures can be used to access DB2 tables through the gateway.

PK3M]PK<+AOEBPS/img_text/ch14_02.htm Description of the illustration ch14_02.eps

This is a text description of Figure 14-2, "Running DRDA server Stored Procedures".

The functions illustrated in the figure are described in the surrounding text.

This is a simplified view of running a DB2 stored procedure on an Oracle application by calling the stored procedure from the DRDA server through the gateway.

The application calls the "emproc" stored procedure from an Oracle instance, which uses the gateway (DG4DRDA) to call the stored procedure from the DRDA server.

In this example, "emproc" is a DB2/MVS stored procedure.

PKݑPK<+AOEBPS/img_text/ch01_01.htm Description of the illustration ch01_01.eps

This is a text description of Figure 1-1, "The Gateway Architecture".

This illustration of the gateway architecture is adequately described in the "Architecture" section of the chapter, which is presented before the figure.

The Client is shown connecting to an Oracle database by means of Oracle Net or by means of a local connection.

The Oracle database connects to the gateway instance (Oracle Database Gateway for DRDA) by means of Oracle Net or by means of local connections (or by one of each - any combination is possible).

The gateway instance connects through the network to the DRDA server.

The purpose of this figure is to show that the Oracle Database Gateway for DRDA can connect an Oracle database to a non-Oracle database. Connection options include Oracle Net, local connections, and TCP/IP links.

PKjPK<+AOEBPS/dev_apps.htm Developing Applications

4 Developing Applications

This chapter provides information that is specific to the 11.2 release of the Oracle Database Gateway for DRDA. This chapter contains the following sections:

4.1 Gateway Appearance to Application Programs

An application that is written to access information in a DRDA database interfaces with an Oracle database. When developing applications, keep the following information in mind:

  • You must define the DRDA database to the application by using a database link that is defined in the Oracle database. Your application should specify tables that exist on a DRDA database by using the name that is defined in the database link. For example, assume that a database link is defined so that it names the DRDA database link DRDA, and also assume that an application needs to retrieve data from an Oracle database and from the DRDA database. Use the following SQL statement joining two tables together in your application:

    SELECT EMPNO, SALARY
    FROM EMP L, EMPS@DRDA R
    WHERE L.EMPNO = R.EMPNO
    

    In this example, EMP is a table on an Oracle database, and EMPS is a table on a DRDA server. You can also define a synonym or a view on the DRDA server table, and access the information without the database link suffix.

  • You can read and write data to a defined DRDA database. SELECT, INSERT, UPDATE, and DELETE are all valid operations.

  • A single transaction can write to one DRDA database and to multiple Oracle databases.

  • Single SQL statements, using JOINs, can refer to tables in multiple Oracle databases, in multiple DRDA databases, or in both.

4.1.1 Fetch Reblocking

Oracle database supports fetch reblocking with the HS_RPC_FETCH_REBLOCKING parameter.

When the value of this parameter is set to ON (the default), the array size for SELECT statements is determined by the HS_RPC_FETCH_SIZE value. The HS_RPC_FETCH_SIZE parameter defines the number of bytes sent with each buffer from the gateway to the Oracle database. The buffer may contain one or more qualified rows from the DRDA server. This feature can provide significant performance enhancements, depending on your application design, installation type, and workload.

The array size between the client and the Oracle database is determined by the Oracle application. Refer to Oracle Database Gateway Installation and Configuration Guide for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64 or Oracle Database Gateway Installation and Configuration Guide for Microsoft Windows , depending on your platform, for more information.

4.2 Using Oracle Stored Procedures with the Gateway

The gateway stored procedure support is an extension of Oracle stored procedures. An Oracle stored procedure is a schema object that logically groups together a set of SQL and other PL/SQL programming language statements to perform a specific task. Oracle stored procedures are stored in the database for continued use. Applications use standard Oracle PL/SQL to call stored procedures.

Oracle stored procedures can be located in a local instance of Oracle database and in a remote instance. Figure 4-1 illustrates two stored procedures: oraproc1 is a procedure stored in the ORA1 Oracle instance, and oraproc2 is a procedure stored in the ORA2 Oracle instance.

Figure 4-1 Calling Oracle Stored Procedures in a Distributed Oracle Environment

Description of Figure 4-1 follows
Description of "Figure 4-1 Calling Oracle Stored Procedures in a Distributed Oracle Environment "

To maintain location transparency in the application, a synonym can be created:

CREATE SYNONYM oraproc2 FOR oraproc2@ora2;

After this synonym is created, the application no longer needs to use the database link specification to call the stored procedure in the remote Oracle instance.

In Figure 4-1, the second statement in oraproc1 is used to access a table in the ORA2 instance. In the same way, Oracle stored procedures can be used to access DB2 tables through the gateway.

4.3 Using DRDA Server Stored Procedures with the Gateway

The procedural feature of the gateway enables invocation of native DRDA server stored procedures. After the stored procedure is defined to the DRDA server, the gateway is able to use the existing DRDA server definition to run the procedure. The gateway does not require special definitions to call the DB2 stored procedure. Standard Oracle PL/SQL is used by the Oracle application to run the stored procedure.

In Figure 4-2, an Oracle application calls the empproc stored procedure that is defined to the DRDA server (for example, DB2 UDB for z/OS).

Figure 4-2 Running DRDA Server Stored Procedures

Description of Figure 4-2 follows
Description of "Figure 4-2 Running DRDA Server Stored Procedures"

From the perspective of the application, running the DB2 stored procedure is no different from invoking a stored procedure at a remote Oracle database instance.

4.3.1 Oracle Application and DRDA Server Stored Procedure Completion

For an Oracle application to call a DB2 stored procedure, it is first necessary to create the DB2 stored procedure on the DB2 system by using the procedures documented in the IBM reference document for DB2 SQL.

After the stored procedure is defined in DB2, the gateway is able to access the data using a standard PL/SQL call. For example, an employee name, John Smythe, is passed to the DB2 stored procedure REVISE_SALARY. The DB2 stored procedure retrieves the salary value from the DB2 database in order to calculate a new yearly salary for John Smythe. The revised salary that is returned as result is used to update the EMP table of Oracle database:

DECLARE
  INPUT VARCHAR2(15);
  RESULT NUMBER(8,2);
BEGIN
  INPUT := 'JOHN SMYTHE';
  REVISE_SALARY@DB2(INPUT, RESULT);
  UPDATE EMP SET SAL = RESULT WHERE ENAME = INPUT;
END;

When the gateway receives a call to run a stored procedure on the DRDA server, it first does a lookup of the procedure name in the server catalog. The information that defines a stored procedure is stored in different forms on each DRDA server. For example, DB2 UDB for iSeries uses the tables QSYS2.SYSPROCS and QSYS2.SYSPARMS. The gateway has a list of known catalogs to search, depending on the DRDA server that is being accessed.

The search order of the catalogs is dependent on whether the catalogs support Location designators (such as LUNAME in SYSIBM.SYSPROCEDURES), and authorization or owner IDs (such as AUTHID in SYSIBM.SYSPROCEDURES or OWNER in SYSIBM.SYSROUTINES).

Some DRDA servers allow blank or public authorization qualifiers. If the DRDA server that is currently connected supports this form of qualification, then the gateway will apply those naming rules when searching for a procedure name in the catalog.

The matching rules will first search for a public definition, and then an owner qualified procedure name. For more detailed information, refer to the IBM reference document for DB2 SQL.

4.3.2 Procedural Feature Considerations with DB2

The following are special considerations for using the procedural feature with the gateway:

  • PL/SQL records cannot be passed as parameters when invoking a DB2 stored procedure.

  • The gateway supports the GENERAL and DB2SQL linkage conventions of DB2 stored procedures. Both linkage conventions require that the parameters that are passed to and from the DB2 stored procedure cannot be null.

4.3.3 Result Sets and Stored Procedures

The Oracle Database Gateway for DRDA provides support for stored procedures that return result sets. By default, all stored procedures and functions do not return a result set to the user. To enable result sets, set the HS_FDS_RESULTSET_SUPPORT parameter in the initialization parameter file.


See Also:

Appendix B, "Initialization Parameters" for information about editing the initialization parameter file and the HS_FDS_RESULTSET_SUPPORT parameter. For further information about Oracle support for result sets in non-Oracle databases see Oracle Database Heterogeneous Connectivity User's Guide.


Note:

If you set the HS_FDS_RESULTSET_SUPPORT gateway initialization parameter, you must change the syntax of the procedure execute statement for all existing stored procedures or errors will occur.

When accessing stored procedures with result sets through the Oracle Database Gateway for DRDA, you will be in the sequential mode of Heterogeneous Services. The gateway returns the following information to Heterogeneous Services during procedure description:

  • All the input arguments of the remote stored procedure

  • None of the output arguments

  • One out argument of type ref cursor (corresponding to the first result set returned by the stored procedure)

Client programs have to use the virtual package function DBMS_HS_RESULT_SET.GET_NEXT_RESULT_SET to get the ref cursor for subsequent result sets. The last result set returned is the out argument from the procedure.

The limitations of accessing result sets are as follows:

  • Result sets returned by a remote stored procedure have to be retrieved in the order in which they were placed on the wire.

  • On execution of a stored procedure, all result sets returned by a previously executed stored procedure will be closed, regardless of whether the data has been completely retrieved or not.

In the following example, the UDB stored procedure is executed to fetch the contents of the EMP and DEPT tables from UDB:

CREATE PROCEDURE REFCURPROC (IN STRIN VARCHAR(255), OUT STROUT VARCHAR(255) ) 
  RESULT SETS 3  LANGUAGE SQL 
BEGIN
  DECLARE TEMP CHAR (20); 
 DECLARE C1 CURSOR WITH RETURN TO CALLER FOR 
      SELECT * FROM TKHOEMP; 
  DECLARE C2 CURSOR WITH RETURN TO CALLER FOR 
     SELECT * FROM TKHODEPT; 
 OPEN C1; 
 OPEN C2; 
 SET STROUT = STRIN; 
 END

4.3.3.1 OCI Program Fetching from Result Sets in Sequential Mode

The following example shows OCI program fetching from result sets in sequential mode:

OCIEnv *ENVH;
OCISvcCtx *SVCH;
OCIStmt *STMH;
OCIError *ERRH;
OCIBind *BNDH[3];
OraText arg1[20];
OraText arg2[255];
OCIResult *rset;
OCIStmt *rstmt;
ub2 rcode[3];
ub2 rlens[3];
sb2 inds[3];
OraText *stmt = (OraText *) "begin refcurproc@UDB(:1,:2,:3); end;";
OraText *n_rs_stm = (OraText *)
  "begin :ret := DBMS_HS_RESULT_SET.GET_NEXT_RESULT_SET@UDB; end;";
 
/* Prepare procedure call statement */
 
/* Handle Initialization code skipped */
OCIStmtPrepare(STMH, ERRH, stmt, strlen(stmt), OCI_NTV_SYNTAX, OCI_DEFAULT);
 
/* Bind procedure arguments */
inds[0] = 0;
strcpy((char *) arg1, "Hello World");
rlens[0] = strlen(arg1);
OCIBindByPos(STMH, &BNDH[0], ERRH, 1, (dvoid *) arg1, 20, SQLT_CHR,
             (dvoid *) &(inds[0]), &(rlens[0]), &(rcode[0]), 0, (ub4 *) 0, 
             OCI_DEFAULT);
 
inds[1] = -1;
OCIBindByPos(STMH, &BNDH[1], ERRH, 1, (dvoid *) arg2, 20, SQLT_CHR,
             (dvoid *) &(inds[1]), &(rlens[1]), &(rcode[1]), 0, (ub4 *) 0, 
             OCI_DEFAULT);
 
inds[2] = 0;
rlens[2] = 0;
OCIDescriptorAlloc(ENVH, (dvoid **) &rset, OCI_DTYPE_RSET, 0, (dvoid **) 0);
OCIBindByPos(STMH, &BNDH[2], ERRH, 2, (dvoid *) rset, 0, SQLT_RSET,
             (dvoid *) &(inds[2]), &(rlens[2]), &(rcode[2]),
             0, (ub4 *) 0, OCI_DEFAULT);
 
/* Execute procedure */
OCIStmtExecute(SVCH, STMH, ERRH, 1, 0, (CONST OCISnapshot *) 0,
               (OCISnapshot *) 0, OCI_DEFAULT);
 
/* Convert result set to statement handle */
OCIResultSetToStmt(rset, ERRH);
rstmt = (OCIStmt *) rset;
 
/* After this the user can fetch from rstmt */
/* Issue get_next_result_set call to get handle to next_result set */
/* Prepare Get next result set procedure call */
 
OCIStmtPrepare(STMH, ERRH, n_rs_stm, strlen(n_rs_stm), OCI_NTV_SYNTAX,
               OCI_DEFAULT);
 
/* Bind return value */
OCIBindByPos(STMH, &BNDH[1], ERRH, 1, (dvoid *) rset, 0, SQLT_RSET,
             (dvoid *) &(inds[1]), &(rlens[1]), &(rcode[1]),
             0, (ub4 *) 0, OCI_DEFAULT);
 
/* Execute statement to get next result set*/
OCIStmtExecute(SVCH, STMH, ERRH, 1, 0, (CONST OCISnapshot *) 0,
               (OCISnapshot *) 0, OCI_DEFAULT);
 
/* Convert next result set to statement handle */
OCIResultSetToStmt(rset, ERRH);
rstmt = (OCIStmt *) rset;
 
/* Now rstmt will point to the second result set returned by the
remote stored procedure */
 
/* Repeat execution of get_next_result_set to get the output arguments */

4.3.3.2 PL/SQL Program Fetching from Result Sets in Sequential Mode

Assume that the table LOC_EMP is a local table exactly like the UDB EMP table. The same assumption applies for LOC_DEPT. OUTARGS is a table with columns corresponding to the out arguments of the SQL Server stored procedure.

create or replace package rcpackage is  type RCTYPE is ref cursor;end rcpackage;/
declare
  rc1 rcpackage.rctype;
  rec1 loc_emp%rowtype;
  rc2 rcpackage.rctype;
  rec2 loc_dept%rowtype;
  rc3 rcpackage.rctype;
  rec3 outargs%rowtype;
  out_arg varchar2(255);
 
begin
 
  -- Execute procedure
  out_arg := null;
  refcurproc@UDB('Hello World', out_arg, rc1);
 
  -- Fetch 20 rows from the remote emp table and insert them into loc_emp
  for i in 1 .. 20 loop
    fetch rc1 into rec1;
    insert into loc_emp (rec1.empno, rec1.ename, rec1.job,
    rec1.mgr, rec1.hiredate, rec1.sal, rec1.comm, rec1.deptno);
  end loop;
 
  -- Close ref cursor
  close rc1;
 
  -- Get the next result set returned by the stored procedure
  rc2 := dbms_hs_result_set.get_next_result_set@UDB;
 
  -- Fetch 5 rows from the remote dept table and insert them into loc_dept
  for i in 1 .. 5 loop
    fetch rc2 into rec2;
    insert into loc_dept values (rec2.deptno, rec2.dname, rec2.loc);
  end loop;
 
  --Close ref cursor
  close rc2;
 
  -- Get the output arguments from the remote stored procedure
  -- Since we are in sequential mode, they will be returned in the
  -- form of a result set
  rc3 := dbms_hs_result_set.get_next_result_set@UDB;
 
  -- Fetch them and insert them into the outarguments table
  fetch rc3 into rec3;
  insert into outargs (rec3.outarg, rec3.retval);
 
  -- Close ref cursor
  close rc3;
 
end;
/

4.4 Database Link Behavior

A connection to the gateway is established through a database link when it is first used in an Oracle database session. In this context, a connection refers to both the connection between the Oracle database and the gateway and to the DRDA network connection between the gateway and the target DRDA database. The connection remains established until the Oracle database session ends. Another session or user can access the same database link and get a distinct connection to the gateway and DRDA database.

4.5 Oracle Database SQL Construct Processing

One of the most important features of the Oracle Database Gateways products is providing SQL transparency to the user and to the application programmer. Foreign SQL constructs can be categorized into four areas:

  • Compatible

  • Translated

  • Compensated

  • Native semantics

4.5.1 Compatible SQL Functions

Oracle database automatically forwards compatible SQL functions to the DRDA database, where SQL constructs with the same syntax and meaning are on both Oracle database and the DRDA database. These SQL constructs are forwarded unmodified. All of the compatible functions are column functions. Functions that are not compatible are either translated to an equivalent DRDA SQL function or are compensated (post-processed) by Oracle database after the data is returned from the DRDA database.

4.5.2 Translated SQL Functions

Translated functions have the same meaning but different names between the Oracle database and the DRDA database. But all applications must use the Oracle function name. These SQL constructs that are supported with different syntax (different function names) by the DRDA database, are automatically translated by the Oracle database and then forwarded to the DRDA database. Oracle database changes the function name before sending it to the DRDA database, in a manner that is transparent to your application.

4.5.3 Compensated SQL Functions

Some advanced SQL constructs that are supported by Oracle database may not be supported in the same manner, by the DRDA database. Compensated functions are those SQL functions that are either not recognized by the DRDA server or are recognized by the DRDA server but the semantics of the function are interpreted differently when comparing the DRDA server with the Oracle database. If a SELECT statement containing one of these functions is passed from the Oracle database to the gateway, then the gateway removes the function before passing the SQL statement to the DRDA server. The gateway passes the selected DRDA database rows to Oracle database. Oracle database applies the function.

4.5.3.1 Post-Processing

Oracle database can compensate for a missing or incompatible function by automatically excluding the incompatible SQL construct from the SQL request that is forwarded to the DRDA database. Oracle database then retrieves the necessary data from the DRDA database and applies the function. This process is known as post-processing.

The gateway attempts to pass all SQL functions to DRDA databases. However when a DRDA database does not support a function that is represented in the computation, the gateway changes that function. For example, if a program runs the following query against a DB2 UDB for z/OS database:

SELECT COS(X_COOR) FROM TABLE_X;

Because the database does not support many of the COS functions, the gateway changes the query to the following:

SELECT X_COOR FROM TABLE_X;

All data in the X_COOR column of TABLE_X is passed from the DB2 UDB for z/OS database to the Oracle database. After the data is moved to the Oracle database, the COS function is performed.

If you are performing operations on large amounts of data that are stored in a DRDA database, then keep in mind that some functions require post-processing.

4.5.4 Native Semantic SQL Functions

Some SQL functions that are normally compensated may also be overridden, through the Native Semantics facility. If a SQL function has been enabled for Native Semantics, then the function may be passed on to the DRDA database for processing, instead of being compensated. The SQL function is then processed natively in the DRDA database. Refer to "Native Semantics" for more information.

4.5.5 DB2 UDB for z/OS SQL Compatibility

Table 4-1 describes how Oracle database and the gateway handle SQL functions for a DB2 UDB for z/OS.

Table 4-1 SQL Compatibility, by Oracle SQL function

 -

Oracle SQL FunctionCompatibleTranslatedCompensatedNative Semantics Candidate

ABS

 -

 -

Yes

Yes

ACOS

Yes

Yes

ADD_MONTHS

 -

 -

Yes

 


ASCII

 -

Yes

Yes

ASIN

 -

-

Yes

Yes

ATAN

 -

Yes

Yes

ATAN2

 -

Yes

Yes

AVG

Yes

-

 -

BITAND

-

-

Yes

Yes

CAST

 -

Yes

Yes

CEIL

 CEILING

-

Yes

CHARTOROWID

 -

 -

Yes

 -

CHR

 -

 -

Yes

Yes

CONCAT

Yes

 -

 -

 -

CONVERT

 -

 -

Yes

Yes

COS

 -

 -

Yes

Yes

COSH

-

Yes

Yes

COUNT(*)

Yes

 -

 -

 -

COUNT (DISTINCT colname)

Yes

-

-

-

COUNT (ALL colname)

Yes

-

-

COUNTCOL

COUNT (column)

Yes

-

-

COUNTCOL

DECODE

 -

-

Yes

Yes

DUMP

 -

 -

Yes

Yes

EXP

 -

 -

Yes

Yes

FLOOR

 Yes

 -

-

Yes

GREATEST

 -

 -

Yes

Yes

HEXTORAW

 -

 -

Yes

Yes

INITCAP

 -

 -

Yes

Yes

INSTR

 -

 -

Yes

Yes

INSTRB

-

 -

Yes

Yes

LAST_DAY

 -

 -

Yes

LEAST

 -

 -

Yes

Yes

LENGTH

 -

 -

Yes

Yes

LENGTHB

 -

 -

Yes

Yes

LN

 -

 -

Yes

Yes

LOG

 -

 -

Yes

Yes

LOWER

Yes

 -

-

LCASE

LPAD

 -

 -

Yes

Yes

LTRIM

 -

 -

Yes

Yes

MAX

Yes

-

 -

 -

MIN

Yes

 -

 -

-

MOD

 -

 -

Yes

Yes

MONTHS_BETWEEN

 -

 -

Yes

 -

NEW_TIME

 -

 -

Yes

 -

NEXT_DAY

 -

 -

Yes

 -

NLS_INITCAP

 -

 -

Yes

Yes

NLS_LOWER

 -

 -

Yes

Yes

NLS_UPPER


 -

Yes

Yes

NLSSORT

 -

 -

Yes

Yes

NVL

 


VALUE

 


 


NVL2

-

 -

Yes

Yes

POWER

 -

 -

Yes

Yes

RAWTOHEX

 -

 -

Yes

Yes

REPLACE

 -

 -

Yes

Yes

REVERSE

 -

 -

Yes

Yes

ROUND

 -

 -

Yes

Yes

ROWIDTOCHAR

 -

 -

Yes

 -

RPAD

-

 -

Yes

Yes

RTRIM

 -

 -

Yes

Yes

SIGN

 -

 -

Yes

Yes

SIN

 -

 -

Yes

Yes

SINH

-

 -

Yes

Yes

SOUNDEX


 -

Yes

 -

SQRT

 -

 -

Yes

Yes

STDDEV

 -

-

Yes

Yes

SUBSTR

 -

 -

Yes

Yes

SUBSTRB

 -

 -

Yes

Yes

SUM

Yes

 -

 -

 -

SYSDATE

 -

 -

Yes

 


TAN

 -

 -

Yes

Yes

TANH

 -

 -

Yes

Yes

TO_CHAR

 -

 -

Yes

 -

TO_DATE

 -

 -

Yes

 -

TO_MULTI_BYTE

 -

 -

Yes

 -

TO_NUMBER

 -

DECIMAL

 -

Yes

TO_SINGLE_BYTE

 -

 -

Yes

 -

TRANSLATE

 -

Yes

Yes

TRIM

 -

STRIP

Yes

Yes

TRUNC

 -

 -

Yes

Yes

UID

 -

 -

Yes

 -

UPPER

 Yes

 -

-

UCASE

USER

 -

 -

Yes

 -

USERENV

 -

 -

Yes

 -

VARIANCE

 -

 -

Yes

Yes

VSIZE

 -

 -

Yes

Yes


4.5.6 DB2 UDB for Unix, Linux, and Windows Compatibility

Table 4-2 describes how Oracle database and the gateway handle SQL functions for a DB2/UDB database.

Table 4-2 DB2 UDB for Unix, Linux, and Windows Compatibility, by Oracle SQL Function

Oracle SQL FunctionCompatibleTranslatedCompensatedNative Semantics Candidate

ABS

Yes

 -

 -

Yes

ACOS

 -

 -

Yes

Yes

ADD_MONTHS

 -

 -

Yes

 -

ASCII

 -

 -

Yes

Yes

ASIN

 -

 -

Yes

Yes

ATAN

 -

 -

Yes

Yes

ATAN2

 -

 -

Yes

Yes

AVG

Yes

 -

 -

 -

BITAND

-

-

Yes

Yes

CAST

 -

 -

Yes

Yes

CEIL

-

 CEILING

 -

Yes

CHARTOROWID

 -

 -

Yes

 -

CHR

Yes

 -

 -

Yes

CONCAT

Yes

 -

 -

 -

CONVERT

 -

 -

Yes

Yes

COS

Yes

 -

 -

Yes

COSH

 -

 -

Yes

Yes

COUNT(*)

Yes

 -

 -

 -

COUNT (DISTINCT colname)

Yes

-

-

-

COUNT (ALL colname)

Yes

-

-

COUNTCOL

COUNT (column)

Yes

-

-

COUNTCOL

DECODE

 -

 -

Yes

Yes

DUMP

 -

 -

Yes

Yes

EXP

Yes

 -

 -

Yes

FLOOR

Yes

 -

 -

Yes

GREATEST

 -

 -

Yes

Yes

HEXTORAW

 -

 -

Yes

Yes

INITCAP

 -

 -

Yes

Yes

INSTR

 -

 -

Yes

Yes

INSTRB

 -

 -

Yes

Yes

LAST_DAY

-

 -

Yes

 -

LEAST

 -

 -

Yes

Yes

LENGTH

 -

 -

Yes

Yes

LENGTHB

-

 -

Yes

Yes

LN

Yes

 -

 -

Yes

LOG

 -

 -

Yes

Yes

LOWER

Yes

-

 -

LCASE

LPAD

 


 -

Yes

Yes

LTRIM

 -

 -

Yes

Yes

MAX

Yes

 -

 -

 -

MIN

Yes

 -

 -

 -

MOD

Yes

 -

 -

Yes

MONTHS_BETWEEN

 -

 -

Yes

 -

NEW_TIME

 -

 -

Yes

 -

NEXT_DAY

Yes

 -

Yes

 -

NLS_INITCAP

 -

 -

Yes

Yes

NLS_LOWER

 -

-

Yes

Yes

NLS_UPPER

 


 


Yes

Yes

NLSSORT

 -

 -

Yes

Yes

NVL

 -

VALUE

 -

 -

NVL2

 -

 -

Yes

Yes

POWER

Yes

 -

 -

Yes

RAWTOHEX

 -

 -

Yes

Yes

REPLACE

Yes

 -

 -

Yes

REVERSE

 -

 -

Yes

Yes

ROUND

Yes

 -

 -

Yes

ROWIDTOCHAR

 


 -

Yes

 -

RPAD

 


 


Yes

Yes

RTRIM

 -

 -

Yes

Yes

SIGN

Yes

 -

 -

Yes

SIN

Yes

 -

 -

Yes

SINH

 -

-

Yes

Yes

SOUNDEX

 -

 -

Yes

 -

SQRT

Yes

-

 -

Yes

STDDEV

 -

 -

Yes

Yes

SUBSTR

 -

 -

Yes

Yes

SUBSTRB

 -

 -

Yes

Yes

SUM

Yes

 -

 -

 -

SYSDATE

 -

 -

Yes

 -

TAN

Yes

 -

 -

Yes

TANH

 -

 -

Yes

Yes

TO_CHAR

 -

 -

Yes

 -

TO_DATE

 -

 -

Yes

 -

TO_MULTI_BYTE

 -

-

Yes

 -

TO_NUMBER

-

DECIMAL

 -

Yes

TO_SINGLE_BYTE

 -

 -

Yes

 -

TRANSLATE

 -

-

Yes

Yes

TRIM

 -

 -

Yes

Yes

TRUNC

Yes

-

 -

Yes

UID

 -

 -

Yes

 -

UPPER

Yes

-

 -

UCASE

USER

-

 -

Yes

 -

USERENV

-

-

Yes

 -

VARIANCE

-

 -

Yes

Yes

VSIZE

-

 -

Yes

Yes


4.5.7 DB2 UDB for iSeries Compatibility

Table 4-3 describes how Oracle database and the gateway handle SQL functions for a DB2 UDB for iSeries database.

Table 4-3 DB2 UDB for iSeries Compatibility, by Oracle SQL Function

Oracle SQL FunctionCompatibleTranslatedCompensatedNative Semantics Candidate

ABS

 -

ABSVAL

-

Yes

ACOS

 -

 -

Yes

Yes

ADD_MONTHS

 -

 -

Yes

 -

ASCII

 -

 -

Yes

Yes

ASIN

 -

 -

Yes

Yes

ATAN

 -

 -

Yes

Yes

ATAN2

 -

 -

Yes

Yes

AVG

Yes

 -

 -

 -

BITAND

-

-

Yes

Yes

CAST

 -

 -

Yes

Yes

CEIL

 -

 CEILING

-

Yes

CHARTOROWID

 -

-

Yes

-

CHR

 -

 -

Yes

Yes

CONCAT

Yes

 -

 -

 -

CONVERT

 -

 -

Yes

Yes

COS

Yes

 -

 -

Yes

COSH

Yes

 -

 -

Yes

COUNT(*)

Yes

 -

 -

 -

COUNT (DISTINCT colname)

Yes

-

-

-

COUNT (ALL colname)

Yes

-

-

COUNTCOL

COUNT (column)

Yes

-

-

COUNTCOL

DECODE

 -

 -

Yes

Yes

DUMP

 -

 -

Yes

Yes

EXP

Yes

 -

 -

Yes

FLOOR

 Yes

 -

-

Yes

GREATEST

 -

 -

Yes

Yes

HEXTORAW

 -

 -

Yes

Yes

INITCAP

 -

 -

Yes

Yes

INSTR

 -

 -

Yes

Yes

INSTRB

 -

 -

Yes

Yes

LAST_DAY

-

 -

Yes

 -

LEAST

 -

 -

Yes

Yes

LENGTH

 -

 -

Yes

Yes

LENGTHB

 -

 -

Yes

Yes

LN

Yes

 -

 -

Yes

LOG

 -

 -

Yes

Yes

LOWER

 Yes

 -

No

LCASE

LPAD

 -

 -

Yes

Yes

LTRIM

 -

 -

Yes

Yes

MAX

Yes

-

-

-

MIN

Yes

 -

 v

 -

MOD

 -

 -

Yes

Yes

MONTHS_BETWEEN

 -

 -

Yes

 


NEW_TIME

 -

 -

Yes

 


NEXT_DAX

-

 -

Yes

 


NLS_INITCAP

 -

 -

Yes

Yes

NLS_LOWER

 -

 -

Yes

Yes

NLS_UPPER

 -

 -

Yes

Yes

NLSSORT

 -

 -

Yes

Yes

NVL

 -

VALUE

 -

 -

NVL2

 -

 -

Yes

Yes

POWER

 -

 --

Yes

Yes

RAWTOHEX

 -

 -

Yes

Yes

REPLACE

 -

 -

Yes

Yes

REVERSE

 -

 -

Yes

Yes

ROUND

 -

 -

Yes

Yes

ROWIDTOCHAR

 -

 -

Yes

 -

RPAD

 -

 -

Yes

Yes

RTRIM

 -

 -

Yes

Yes

SIGN

 -

 -

Yes

Yes

SIN

Yes

 -

 -

Yes

SINH

Yes

 -

 -

Yes

SOUNDEX

 -

 -

Yes

-

SQRT

Yes

-

 -

Yes

STDDEV

Yes

 v

 -

Yes

SUBSTR

 -

 -

Yes

Yes

SUBSTRB

 -

 -

Yes

Yes

SUM

Yes

 -

 -

 -

SYSDATE

 -

 -

Yes

 -

TAN

Yes

 -

 -

Yes

TANH

Yes

 -

 -

Yes

TO_CHAR

 -

 -

Yes

 -

TO_DATE

 -

 -

Yes

 -

TO_MULTI_BYTE

 -

 -

Yes

 -

TO_NUMBER

 -

 DECIMAL

-

Yes

TO_SINGLE_BYTE

 -

 -

Yes

 -

TRANSLATE

 -

 -

Yes

Yes

TRIM

 -

 -

Yes

Yes

TRUNC

 -

 -

Yes

Yes

UID

 -

 -

Yes

 -

UPPER

 -

TRANSLATE

 -

UCASE

USER

 -

 -

Yes

 -

USERENV

 -

 -

Yes

 -

VARIANCE

 -

VAR

 -

Yes

VSIZE

 -

 -

Yes

Yes


4.6 Native Semantics

Some of the advanced SQL constructs that are supported by Oracle database may not be supported in the same manner by the DRDA database. In this case, the Oracle database compensates for the missing or incompatible functionality by post-processing the DRDA database data with Oracle database functionality


See Also:

"Oracle Database SQL Construct Processing" for more information

This feature provides maximum transparency, but may impact performance. In addition, new versions of a particular DRDA database may implement previously unsupported functions or capabilities, or they may change the supported semantics as to make them more compatible with Oracle database functions.

Some of DRDA servers also provide support for user-defined functions. The user may choose to implement Oracle database functions natively in the DRDA database. This enables the DRDA server to pass the function to the underlying database implementation (for example, DB2). Native Semantics provides a method of enabling specific capabilities to be processed natively by the DRDA server.

Native Semantics Considerations

Various considerations must be taken into account when enabling the Native Semantic feature of a particular function because Native Semantics has advantages and disadvantages, which are typically a trade-off between transparency and performance.

  • One such consideration is the transparency of data coercions. Oracle database provides coercion (implicit data conversion) for many SQL functions. This means that if the supplied value for a particular function is not correct, then Oracle database will coerce the value (change it to the correct value type) before processing it. However, with the Native Semantic feature enabled, the value, exactly as provided, will be passed to the DRDA server for processing. In many cases, the DRDA server will not be able to coerce the value to the correct type and will generate an error.

  • Another consideration involves the compatibility of parameters to a particular SQL function. For instance, Oracle database implementation of SUBSTR allows negative values for the string index, whereas most DRDA server implementations of SUBSTR do not allow negative values for the string index. However, if the application is implemented to invoke SUBSTR in a manner that is compatible with the DRDA server, then the function will behave the same in either Oracle database or the DRDA server.

  • Another consideration is that the processing of a function at the DRDA server may not be desirable due to resource constraints in that environment.

Refer to the "HS_FDS_CAPABILITY" for details on enabling or disabling these capabilities. Refer to the Oracle Database SQL Language Reference for Oracle database format of the following capabilities.

4.6.1 SQL Functions That Can Be Enabled

The following list contains SQL functions that are disabled (OFF) by default. They can be enabled (turned ON) as an option:

Table 4-4 List of SQL Functions That Can Be Enabled

Function NameFunction NameFunction NameFunction Name

ABS

ACOS

ASCII

ASIN

ATAN

ATAN2

BITAND

CAST

CEIL

CHR

CONVERT

COS

COSH

COUNTCOL

DECODE

DUMP

EXP

FLOOR

GREATEST

HEXOTRAW

INITCAP

INSTR

INSTRB

LEAST

LENGTH

LENGTHB

LN

LOG

LOWER

LPAD

LTRIM

MOD

NLS_INITCAP

NLS_UPPER

NLS_LOWER

NLSSORT

NVL2

POWER

RAWTOHEX

REPLACE

REVERSE

ROUND

RPAD

RTRIM

SIGN

SIN

SINH

SQRT

STDDEV

SUBSTR

SUBSTRB

TAN

TANH

TO_NUMBER

TRANSLATE

TRIM

TRUNC

UPPER

VARIANCE

VSIZE


4.6.2 SQL Functions That Can Be Disabled

The following SQL functions are enabled (ON) by default:

  • GROUPBY

  • HAVING

  • ORDERBY

  • WHERE

ORDERBY controls sort order, which may differ at various sort locations. For example, with ORDERBY ON, a DB2 sort would be based on Extended Binary Coded Decimal Interchange Code (EBCDIC) sorting order, whereas with ORDERBY OFF, an Oracle database sort would be based on ASCII sorting order.

The other three functions, GROUPBY, HAVING, and WHERE, can take additional processing time. If you need to minimize the use of expensive resources, then you should choose the settings of these functions so that the processing is performed with cheaper resource. The above listed functions can also be disabled.

4.6.3 SQL Set Operators and Clauses

The WHERE and HAVING clauses are compatible for all versions of the DRDA server. This means that these clauses are passed unchanged to the DRDA server for processing. Whether clauses GROUP BY and ORDER BY are passed to the DRDA server, or compensated by Oracle database, is determined by the Native Semantics Parameters (see the previous section).

The set operators UNION and UNION ALL are compatible for all versions of the DRDA server, meaning that they are passed unchanged to the DRDA server for processing. The set operators INTERSECT and MINUS are compensated on all versions of the DRDA server except DB2/UDB. For DB2/UDB, INTERSECT is compatible and MINUS is translated to EXCEPT.

4.7 DRDA Data type to Oracle Data type Conversion

To move data between applications and the database, the gateway binds data values from a host variable or literal of a specific data type to a data type understood by the database. Therefore, the gateway maps values from any version of the DRDA server into appropriate Oracle data types before passing these values back to the application or Oracle tool.

Table 4-5 lists the data type mapping and restrictions. The DRDA server data types that are listed in the table are general. Refer to documentation for your DRDA database for restrictions on data type size and value limitations.

Table 4-5 Data Type Mapping and Restrictions

DRDA server
Oracle ExternalCriteria

CHAR(N)

CHAR(N)

< = 2000

VARCHAR (N)

VARCHAR2(N)

LONG

< = 4000

4000 < N < = 32740

LONG VARCHAR(N)

VARCHAR2(N)

< = 4000

LONG VARCHAR(N)

LONG

4000 < N < = 32740

CHAR(N) FOR BIT DATA

RAW(N)

< = 255

VARCHAR(N) FOR BIT DATA

RAW(N)

1 < = N < = 255

VARCHAR(N) FOR BIT DATA

LONG RAW(N)

255 < N < = 32740

LONG VARCHAR(N) FOR BIT DATA

RAW(N)

1 < = < = 255

LONG VARCHAR(N) FOR BIT DATA

LONG RAW(N)

255 < N < = 32740

DATE

DATE

Refer to Performing Date and Time Operations

TIME

CHAR(8)

See Performing Date and Time Operations

TIMESTAMP

CHAR(26)

See Performing Date and Time Operations

GRAPHIC

CHAR(2N)

N <= 1000

VARGRAPHIC

VARCHAR2(2N)

LONG

N <= 2000

2000 <= N <= 16370

LONG VARGRAPHIC

VARCHAR2(2N)

LONG

N <= 2000

2000 <= N <= 16370

Floating Point Single

FLOAT(24)

n/a

Floating Point Double

FLOAT(53)

n/a

Decimal (P, S)

NUMBER(P,S)

n/a

CLOB

LONG

n/a

BLOB

LONG RAW(N)

n/a

DBLOB

LONG

n/a

SMALLINT

NUMBER(5)

n/a

INTEGER

NUMBER(10)

n/a


4.7.1 Performing Character String Operations

The gateway performs all character string comparisons, concatenations, and sorts using the data type of the referenced columns, and determines the validity of character string values passed by applications using the gateway. The gateway automatically converts character strings from one data type to another and converts between character strings and dates when needed.

Frequently, DRDA databases are designed to hold non-character binary data in character columns. Applications executed on DRDA systems can generally store and retrieve data as though it contained character data. However, when an application accessing this data runs in an environment that uses a different character set, inaccurate data may be returned.

With the gateway running on the host, character data retrieved from a DB2 UDB for iSeries or DB2 UDB for z/OS host is translated from EBCDIC to ASCII. When character data is sent to DB2 UDB for iSeries or DB2 UDB for z/OS from the host, ASCII data is translated to EBCDIC. When the characters are binary data in a character column, this translation causes the application to receive incorrect information or errors. To resolve these errors, character columns on DB2 UDB for iSeries or DB2 UDB for z/OS that hold non-character data must be created with the FOR BIT DATA option. In the application, the character columns holding non-character data should be processed using the Oracle data types RAW and LONG RAW. The DESCRIBE information for a character column defined with FOR BIT DATA on the host always indicates RAW or LONG RAW.

4.7.2 Converting Character String Data types

The gateway binds character string data values from host variables as fixed-length character strings. The bind length is the length of the character string data value. The gateway performs this conversion on every bind.

The DRDA VARCHAR data type can be from 1 to 32740 bytes in length. This data type is converted to an Oracle VARCHAR2 data type if it is between 1 and 2000 characters in length. If it is between 2000 and 32740 characters in length, then it is converted to an Oracle LONG data type.

The DRDA VARCHAR data type can be no longer than 32740 bytes, which is much shorter than the maximum size for the Oracle LONG data type. If you define an Oracle LONG data type larger than 32740 bytes in length, then you receive an error message when it is mapped to the DRDA VARCHAR data type.

4.7.3 Performing Graphic String Operations

DB2 GRAPHIC data types store only double-byte string data. Sizes for DB2 GRAPHIC data types typically have maximum sizes that are half that of their character counterparts. For example, the maximum size of a CHAR may be 255 characters, whereas the maximum size of a GRAPHIC may be 127 characters.

Oracle database does not have a direct matching data type, and the gateway therefore converts between Oracle character data types to DB2 Graphic data types. Oracle database character data types may contain single, mixed, or double-byte character data. The gateway converts the string data into appropriate double-byte-only format depending upon whether the target DB2 column is a Graphic type and whether Gateway Initialization parameters are set to perform this conversion. For more configuration information, refer to Appendix B, "Initialization Parameters".

4.7.4 Performing Date and Time Operations

The implementation of date and time data differs significantly in IBM DRDA databases and Oracle database. Oracle database has a single date data type, DATE, which can contain both calendar date and time of day information.

IBM DRDA databases support the following three distinct date and time data types:

DATE is the calendar date only.

TIME is the time of day only.

TIMESTAMP is a numerical value combining calendar date and time of day with microsecond resolution in the internal format of the IBM DRDA database.

4.7.4.1 Processing TIME and TIMESTAMP Data

There is no built-in mechanism that translates the IBM TIME and TIMESTAMP data to Oracle DATE data. An application must process TIME data types to the Oracle CHAR format with a length of eight bytes. An application must process the TIMESTAMP data type in the Oracle CHAR format with a length of 26 bytes.

An application reads TIME and TIMESTAMP functions as character strings and converts or subsets portions of the string to perform numerical operations. TIME and TIMESTAMP values can be sent to a DRDA server as character literals or bind variables of the appropriate length and format.

4.7.4.2 Processing DATE Data

Oracle and IBM DATE data types are mapped to each other. If an IBM DATE is queried, then it is converted to an Oracle DATE with a zero (midnight) time of day. If an Oracle DATE is processed against an IBM DATE column, then the date value is converted to the IBM DATE format, and any time value is discarded.

Character representations of dates are different in Oracle format and IBM DRDA format. When an Oracle application SQL statement contains a date literal, or conveys a date using a character bind variable, the gateway must convert the date to an IBM DRDA compatible format.

The gateway does not automatically recognize when a character value is being processed against an IBM DATE column. Applications are required to distinguish character date values by enclosing them with Oracle TO_DATE function notation. For example, if EMP is a synonym or view that accesses data on an IBM DRDA database, then you should not use the following SQL statement:

SELECT * FROM EMP WHERE HIREDATE = '03-MAR-81'

you should use the following:

SELECT * FROM EMP WHERE HIREDATE = TO_DATE('03-MAR-81')

In a programmatic interface program that uses a character bind variable for the qualifying date value, you must use this SQL statement:

SELECT * FROM EMP WHERE HIREDATE = TO_DATE(:1)

The above SQL notation does not affect SQL statement semantics when the statement is executed against an Oracle database table. The statement remains portable across Oracle and IBM DRDA-accessed data stores.

Any date literal other than insert value is checked to match the Oracle NLS_DATE_FORMAT before sending to DB2 for processing. TG4DB2 v10.2 does not check to match the NLS_DATE_FORMAT format. If such compatibility is desired, then you need to specify NODATECHK/ON value as part of HS_FDS_CAPABILITY parameter. You can then use any DB2 acceptable date formats:

  • YYYY-MM-DD (ISO/JIS)

  • DD.MM.YYYY (European)

  • MM/DD/YYYY (USA)

For example:

SELECT * FROM EMP WHERE HIREDATE = '1981-03-03'

The TO_DATE requirement also does not pertain to input bind variables that are in Oracle date 7-byte binary format. The gateway recognizes such values as dates. For DB2 UDB for z/OS, if you install the gateway supplied DATE EXIT, then you can also use two additional Oracle date formats: DD-MON-RR and DD-MON-YYYY

4.7.4.3 Performing Date Arithmetic

The following forms of SQL expression generally do not work correctly with the gateway:

date + number 
number + date 
date - number 
date1 - date2 

The date and number addition and subtraction (date + number,number + date,date - number) forms are sent through to the DRDA server, where they are rejected. The supported servers do not permit number addition or subtraction with dates.

Because of differing interpretations of date subtraction in the supported servers, subtracting two dates (date1 - date2) gives results that vary by server.


Note:

Avoid date arithmetic expressions in all gateway SQL until date arithmetic problems are resolved.

4.7.5 Dates

Date handling has two categories: 

  • Two-digit year dates, which are treated as occurring 50 years before or 50 years after the year 2000.

  • Four-digit year dates, which are not ambiguous with regard to the year 2000.

Use one of the following methods to enter twenty-first century dates:

  • The TO_DATE function

    Use any date format including a four-character year field. Refer to the Oracle Database SQL Language Reference for the available date format string options.

    For example, TO_DATE('2008-07-23', 'YYYY-MM-DD') can be used in any SELECT, INSERT, UPDATE, or DELETE statement.

  • The NLS_DATE_FORMAT parameter

    ALTER SESSION SET NLS_DATE_FORMAT should be used to set the date format used in SQL.

4.7.6 NLS_DATE_FORMAT Support

The following table lists the four patterns that can be used for the NLS_DATE_FORMAT in ALTER SESSION SET NLS_DATE_FORMAT:

DB2 Date FormatPatternExample
EURDD.MM.YYYY30.10.1994
ISOYYYY-MM-DD1994-10-30
JISYYYY-MM-DD1994-10-30
USAMM/DD/YYYY10/30/1994

The Oracle database default format of 'DD-MON-YY' is not permitted with DB2.

The following example demonstrates how to enter and select date values in the twenty-first century:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
INSERT INTO EMP (HIREDATE) VALUES ('2008-07-23');
SELECT * FROM EMP WHERE HIREDATE = '2008-07-23';
UPDATE EMP SET HIREDATE = '2008-07-24'
   WHERE HIREDATE = '2008-07-23';
DELETE FROM EMP WHERE HIREDATE = '2008-07-24';

4.7.7 Oracle TO_DATE Function

The Oracle TO_DATE function is preprocessed in SQL INSERT, UPDATE, DELETE, and SELECT WHERE clauses. TO_DATE functions in SELECT result lists are not preprocessed.

The TO_DATE function is often needed to provide values to update or compare with date columns. Therefore, the gateway replaces the information included in the TO_DATE clause with an acceptable value before the SQL statement is sent to DB2.

Except for the SELECT result list, all TO_DATE functions are preprocessed and turned into values that are the result of the TO_DATE function. Only TO_DATE(literal) or TO_DATE(:bind_variable) is permitted. Except in SELECT result lists, the TO_DATE(column_name) function format is not supported.

The preprocessing of the Oracle TO_DATE functions into simple values is useful in an INSERT VALUES clause because DB2 does not allow functions in the VALUES clause. In this case, DB2 receives a simple value in the VALUES list. All forms of the TO_DATE function (with one, two, or three operands) are supported.

4.7.8 Performing Numeric data type Operations

IBM versions of the DRDA server perform automatic conversions to the numeric data type of the destination column (such as integer, double-precision floating point, or decimal). The user has no control over the data type conversion, and this conversion can be independent of the data type of the destination column in the database.

For example, if PRICE is an integer column of the PRODUCT table in an IBM DRDA database, then the update shown in the following example inaccurately sets the price of an ice cream cone to $1.00 because the IBM DRDA server automatically converts a floating point to an integer:

UPDATE PRODUCT 
SET PRICE = 1.50 
WHERE PRODUCT_NAME = 'ICE CREAM CONE    '; 

Because PRICE is an integer, the IBM DRDA server automatically converts the decimal data value of 1.50 to 1.

4.7.9 Mapping the COUNT Function

Oracle database supports the following four operands for the COUNT function:

  • COUNT(*)

  • COUNT(DISTINCT colname)

  • COUNT(ALL colname)

  • COUNT(colname)

Some DRDA servers do not support all forms of COUNT, specifically COUNT(colname) and COUNT(ALL colname). In those cases the COUNT function and its arguments are translated into COUNT(*). This may not yield the desired results, especially if the column being counted contains NULLs.

For those DRDA servers that do not support the above forms, it may be possible to achieve equivalent functionality by adding a WHERE clause. For example,

SELECT COUNT(colname) FROM table@dblink WHERE colname IS NOT NULL 

or

SELECT COUNT(ALL colname) FROM table@dblink WHERE colname IS NOT NULL

You can also use native semantics to indicate support for all COUNT functions with the following parameter in your gateway initialization file:

HS_FDS_CAPABILITY=(COUNTCOL=YES)

Refer to Chapter 2, "SQL Limitations" for known DRDA servers that do not support all forms of COUNT.

4.7.10 Performing Zoned Decimal Operations

A zoned decimal field is described as packed decimal on Oracle database. However, an Oracle application such as a Pro*C program can insert into a zoned decimal column using any supported Oracle numeric data type. The gateway converts this number into the most suitable data type. Data can be fetched from a DRDA database into any Oracle data type, provided that it does not result in a loss of information.

4.8 Passing Native SQL Statements through the Gateway

The passthrough SQL feature enables an application developer to send a SQL statement directly to the DRDA server without the statement being interpreted by Oracle database. DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE SQL passthrough statements that are supported by the gateway are limited to nonqueries (INSERT, UPDATE, DELETE, and DDL statements) and cannot contain bind variables. The gateway can run native SQL statements using DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE.

DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE is a built-in gateway function. This function receives one input argument and returns the number of rows affected by the SQL statement. For data definition language (DDL) statements, the function returns zero.

DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE are reserved names of the gateway and are used specifically for running native SQL.

The 11.2 release of Oracle Database Gateway for DRDA enables retrieval of result sets from queries issued with passthrough. The syntax is different from the DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE function. Refer to "Retrieving Results Sets Through Passthrough" for more information.

4.8.1 Processing DDL Statements through Passthrough

As noted above, SQL statements that are processed through the DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE function are not interpreted by the Oracle database. As a result, the Oracle database will not know if such statements are making any modifications to the DRDA server. This means that unless you keep the cached information of the Oracle database up to date after changes to the DRDA server, the database may continue to rely upon inaccurate or outdated information in subsequent queries within the same session.

An example of this occurs when you alter the structure of a table by either adding or removing a column. When an application references a table through the gateway (for example, when you perform a query on it), the Oracle database caches the table definition. Now, suppose that within the same session, the application subsequently alters the table's form, by using DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE to add a column. Then, the next reference to the table by the application will return the old column definitions of the table and will ignore the table's new column. This is because the Oracle database did not process the statement and, so, has no knowledge of the alteration. Because the database does not know of the alteration, it has no reason to requery the table form, and, so, it will use the already-cached form to handle any new queries.

In order for the Oracle database to acquire the new form of the table, the existing session with the gateway must be closed and a new session must be opened. This can be accomplished in either of two ways:

  • By ending the application session with the Oracle database and starting a new session after modifications have been made to the DRDA server; or

  • By running the ALTER SESSION CLOSE DATABASE LINK command after making any modifications to the DRDA server.

Either of the above actions will void the cached table definitions and will force the Oracle database to acquire new definitions on the next reference.

4.8.2 Using DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE

To run a passthrough SQL statement using DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE, use the following syntax:

number_of_rows = DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@dblink ('native_DRDA_sql');

where:

number_of_rows is a variable that is assigned the number of rows affected by the passthrough SQL completion. For DDL statements, a zero is returned for the number of rows affected.

dblink is the name of the database link used to access the gateway.

native_DRDA_sql is a valid nonquery SQL statement (except CONNECT, COMMIT, and ROLLBACK). The statement cannot contain bind variables. The DRDA server rejects native SQL statements that cannot be dynamically prepared. The SQL statement passed by the DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE function must be a character string. For more information regarding valid SQL statements, refer to the SQL Reference for the particular DRDA server.

4.8.2.1 Examples

  1. Insert a row into a DB2 table using DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE:

    DECLARE
      num_rows integer;
    BEGIN
    num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@dblink
    ('INSERT  INTO SCOTT.DEPT VALUES (10,''PURCHASING'',''PHOENIX'')');
    END;
    /
    
  2. Create a table in DB2 using DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE:

    DECLARE
      num_rows integer;
    BEGIN
      num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@dblink
      ('CREATE TABLE MYTABLE (COL1 INTEGER, COL2 INTEGER, COL3 CHAR(14),
      COL4 VARCHAR(13))');
    END;
    /
    

4.8.3 Retrieving Results Sets Through Passthrough

Oracle Database Gateway for DRDA provides a facility to retrieve results sets from a SELECT SQL statement entered through passthrough. Refer to Oracle Database Heterogeneous Connectivity User's Guide for additional information.

4.8.3.1 Example

DECLARE
  CRS binary_integer;
  RET binary_integer;
  VAL VARCHAR2(10)
BEGIN
  CRS:=DBMS_HS_PASSTHROUGH.OPEN_CURSOR@gtwlink;
  DBMS_HS_PASSTHROUGH.PARSE@gtwlink(CRS,'SELECT NAME FROM PT_TABLE');
BEGIN
  RET:=0;
  WHILE (TRUE)
  LOOP
    RET:=DBMS_HS_PASSTHROUGH.FETCH_ROW@gtwlink(CRS,FALSE);
    DBMS_HS_PASSTHROUGH.GET_VALUE@gtwlink(CRS,1,VAL);
    INSERT INTO PT_TABLE_LOCAL VALUES(VAL);
  END LOOP;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      BEGIN
        DBMS_OUTPUT.PUT_LINE('END OF FETCH');
        DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@gtwlink(CRS);
      END;
    END;  
END;
/ 

4.9 Oracle Data Dictionary Emulation on a DRDA Server

The gateway optionally augments the DRDA database catalogs with data dictionary views modeled on the Oracle data dictionary. These views are based on the dictionary tables in the DRDA database, presenting that catalog information in views familiar to Oracle users. The views created during the installation of the gateway automatically limit the data dictionary information presented to each user based on the privileges of that user.

4.9.1 Using the Gateway Data Dictionary

The gateway data dictionary views provide users with an Oracle-like interface to the contents and use of the DRDA database. Oracle products require some of these views. The gateway supports the DB2 UDB for z/OS, DB2 UDB for iSeries, and DB2/UDB catalog views.

You can query the gateway data dictionary views to see the objects in the DRDA database and to determine the authorized users of the DRDA database. The Oracle Database Gateway for DRDA supports many Oracle catalog views. Refer to Appendix A for descriptions of Oracle DB2 catalog views. These views are completely compatible with the gateway.

4.9.2 Using the DRDA Catalog

Each DRDA database has its own catalog tables and views, which you might find useful. Refer to the appropriate IBM documentation for descriptions of these catalogs.

PKbwFEPK<+A OEBPS/toc.ncx3 Oracle® Database Gateway for DRDA User's Guide, 11g Release 2 (11.2) Cover Table of Contents List of Figures List of Tables Oracle Database Gateway for DRDA User's Guide, 11g Release 2 (11.2) Preface Introduction Release Information Using the Oracle Database Gateway for DRDA Developing Applications Error Messages, Diagnosis, and Reporting Oracle DB2 Data Dictionary Views Initialization Parameters Index Copyright PK2qv 8 3 PK<+AOEBPS/content.opfs Oracle® Database Gateway for DRDA User's Guide, 11g Release 2 (11.2) en-US E12014-03 Oracle Corporation Oracle Corporation Oracle® Database Gateway for DRDA User's Guide, 11g Release 2 (11.2) 2012-01-23T19:16:42Z Provides users with transparent access to DB2. PKxՖxsPK<+A OEBPS/lof.htm1 List of Figures PKpXPK<+AOEBPS/dcommon/prodbig.gif GIF87a!!!)))111BBBZZZsss{{ZRRcZZ!!1!91)JB9B9)kkcJJB991ssc絽Zcc!!{祽BZc!9B!c{!)c{9{Z{{cZB1)sJk{{Z{kBsZJ91)Z{!{BcsRsBc{9ZZk甽kBkR!BZ9c)JJc{!))BZks{BcR{JsBk9k)Zck!!BZ1k!ZcRBZcZJkBk1Z9c!R!c9kZRZRBZ9{99!R1{99R{1!1)c1J)1B!BJRkk{ƽ絵ތkk絵RRs{{{{JJsssBBkkk!!9ss{{ZZssccJJZZRRccRRZZ))cBBJJ99JJ!!c11991199Z11!c!!))Z!!!1BRck{)!cJBkZRZ,HP)XRÇEZ֬4jJ0 @ "8pYҴESY3CƊ@*U:lY0_0#  5tX1E: C_xޘeKTV%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((?l:ϊw "{{-3j3%{sj~2= 7 ~MڅKrHb|P3 r=Ҁ +Ş/$iu7=q2dԂxn⸷9$l]H #WI񯄴;\[ݚD8C3p&0U9^AnK vI+!I8>5(zqj03Y.X ,@85ߛ8>pq8=} \xmm常8` $Q@$v7zwp]ɝA GX;y_]覮O&4 SPtY.X),@84U=7Vuv K4,$g{@<+uqtiGw3; I@ORմn5MBp%8'ƫ%u6uBJrHRN2@ϸ J(9i[[mh=kO}7ߗgEe^%tk56v@DrF@b2ϱ7zwp]ɝA G@(/zhzhZG$e8?.v:fxoSUԙ Iƒ (b+xV+{O+8fv'$(ryᵷX$/$0UE$xsQvqX]wk&vMDlppAXt[?BywwNՋ=2K--cFI TpO ռW4x䍃+sǟƞĺ43$K ܢgiսis=칎pTH>r*VZ8fWh[$a9S#PʎyᵷX$/$0UE$xsRWntoYi.FZث"nrsWr8 7ĺp^N]IX.@ IH\?<1LnoldXPk.d}D򿵵[;>_-q# *gvgdH$F TwZݾhQlX Q@(KjK[b GEchNrr01EjPEPEPEPEPEPEPEPEPEPEPEP_§FװWf_|68`SgI*m$עw?P7fIF 3(%E##lxjmGeow%1GswB9W sT|绒K6z!eAۆe% Ӝg>%6kWТ;dV*9vXNxyW-%׷o2>h>_Ny5E|?R}C:O(Etqw73CK} ?ϷyQOg-<~wm˝wǺԓtI" *fLnIN.F33lZwl%BrpH ``zA7'-٧iFR/)D7x[KÍoK5;͍6qj ʹzN8 oSռ'ݻfrsg,GL/ Njad&Yq%H9/q'%_CzSm+%'ze֟2Kw2s[!`_OQ3P ~,ŧh5HynNYIm `uS}Cxim5jM'I%fX*3|odnA@pGP#[z;eK^(#/ HB31t($.ljn<$m=\)@27'p<ēIYcŐFG^AO#sj:^5pcz੒ݷʁ$x *ڏ'B;o \ p$u .xAb0Ms:{{HุXUr`:bj_'-lF3>ُ'8ϙ~ M^麏.#K+Ds)GRX&s8<>;y ۭ Z|VKm^TW{H6y#8= yGT^iW cO+Nnn@w5CT0`ιx XEiB"vQwT8h4~ A9aX&FxqYu Ɣp'զ t9ҀZi>-'-oM2/K)h"012<6gh7w8:ՔKM+ݾU.70 `^@?#_t{cshĐܧsُ`;{:;9-婁?~@6*z?$Ơq#Ӣ]GRK n#lX]݀N8gIj:_Yle~ݾEBy$ ]ǂ|O ,u^g<3n>s=;7_V=6{)uG$ 2yF~peiMh\T Tr:99=gWxZX̗֙w2Mq#yÃrĸ$Y>_ U=ƓJzVUH!Jn_pF| W!?l=$ٳ~3w8k/Fz] wg F.G] q,&&kvJvo8Ͻz մnTϷr<3x$r+o6R:C!ˑrރs(@^x:Ŧkm (|w@ wQK~ 1%ƥ,,&V æf!&9th ~ښIaN9qc/>hSxo'XÚapZ%<%MR]ތo)Y"! .U(϶?s}h?to1ۣHW=/E- obKͱ,3 (>x N=I9YA\ #W^n#TUQ}NJJɐgo5cwEf,u93r077p6yo%8um7\ݯ:>˦8P"ڣ7:<$]_=KJ8`r)>j)$,M{dP' ZF6A\A1PKC&xRo |>-ۈ#g `A 9n u۟|+%A˪˹.}lUULfnn ⷂ|;gF{U/H|Þ¾%OQ<;z+ȐęC,;"i9q\g<5lz"ΦL1̯,OxF}/Ӯ>}=[ͼ#<[p`r9_⎿g#z|9yv..!ĉC#0pV( *mt2\ŧq}g*RoޭI U88 (((((((((((( ~Ig;Wsнr:nn^ic9vK` aW(89 |>war#s«j܋,5m" {Vi6@HNLztP~~!ӞWղvLH#r' 0Fx5ῇ~%}H,hL b:9/]c)G 8jhz\ kw9$28 -.S62:uŠӿ?K>/#{ٳng9~gn{M.}Ȁ f+Ws[=:WaEs?#HI2lqߔFqtsK5;hld?FpA"Q@=CD29Gbq^hѴGT,R_:o58b@ۦ:4;IgӨ1J.ѺD!'AQ{ׄ|+xo4}.IWNY+|QEG<[oqsA*92<Gn%;yfE(ڻ(5[z} ;XV%-2B3}\+ï^k$#PXDžm{Q;?>Kγ5|yE랕Eׄ|Ux/5 Y'~- lWQEc{º,ͮAe}򀗓Y$8Qx[F׵.S|7]|ʜH^[PEPEPEPEPEPEPEPEPEPEPEPEPi?!NwWܖKi3xT1 v7{?럔~PTz {?x^(Mԥ1@ѦÄm5,7nU< O5|Cqo,rdaA9O㭍Ji%MF2,dvO<_IF,$y$s@wx>gkj?qi6푓y9۞bY_~jmoe7 "gqprƿ Gneukx"+2чj>#i6q/.K3RPT`!\1,( I/n-.^9#b"b#A5~ 73޽OY՚y^nRh hdSRGFpJ8t];_{S"iZK{s#27̼dvz=($n$'6$;01N7to5G ^I YOpږ[/P8ѤbTWWO4 .hSEM̀}f灷$(<7/KusǷw^ Je?(dHPrw`o7KKq|vWzaExX־9:ɦ"lN⬬K)%v.0PQ|OUO4R:5ef U=@=OCZVօpjʫ(EpÿNyW~m}յ-7^wc;jqIk3D|N R2ǰT>/~.—2Љe}hc X4Ʃx^fYC>TsےuWΞ|c麎ۻjxP%2GEg$`(9;^_ kmnL%q;~flg=h/gơr+;wpld w*27dv1&6֏{_wlm'b8'/NN@+⏊R'6:s1n;#'"$s}|/쎋s1޸gK\+g 7_jWhr#D]R fBv=HD.WFB6R3*C L-$ew-nqf5m6gFEKy2u*H#8>8_Ht/x҉+i .L˰j0$ffۼnf\  ͒ݟ|9iI<< r@' ~EԖCit_m (xW_)%$B(H|/m^k3d>s*rrrO8?ZPq/^ ӥQQ{{̙F%T+';BY:>fP*vgv B1Z/h.&:eQq(6!Hʓ1[M$Ue)d$}אG4i/S\gK4n>guu+K(FGd ;|j hrZD̞X 2-2 ^i~t=iZi$>\~ `0B1uX2ʟt,$P W`tm9[ ռG4I#C+ q=g}E"[7~KCc*e$0P|M|?Lw6ca ꩒0װj`v4*pnau87>^t6g:&.' W MWJ43S6Ka (Kr_YceqHbbߚj A|Q7SY6c%U!e K}<*IU Rћӊ<' ZsY趞W3y&e' 8&>x_ÿ 뚟5-{3kiF~U ?J/k;\{>c=< a00`zU xn>$K[]vg9 Տjتzc5s:#' "rxN5rUiw6w X8 A@_^./4 @;~_^7Pm}7ZWݭrɰ* .@RXKWwO mA”L8.䞾Wq?^ ӚEݦy3(,8PI4Wez!iddg9x[*wJd^ x!(T)$r(eu#x 1@~V3up^ƿ|!! nC\8Gs[YwwW^WyyvmylN:U}g}E"[7~KCc*e$0Pc^T*'*g?0 A5(iHK3I'VVᅅr]|_>a?qj.9Dw6g h~z79$X]ZFfH).F72s]%_XhQ]O-ȒkCK)$f0v76zCuo-QRHPF Ab xellb.`tf$ =ׂIXywRDKu,$N'Hp0yi}ŭim=춎if@NXrZ%~/x:۱ &6 p)HwE@$灌צPE))x\cٽ 0j* =w IaY?TU>UNXv#Aeom!A@_$:DuxI熿k??ji?+k6:WFMR8dz o|ⶊItSxg ;cerHw,u/QoLx38ی~0@wJ*\a*w3^??ïͼngk8X]JA8%ch~71k9±; nP RFppF@fosQ^oS:ϋy^}=AW< 2Տ^@)35ƕHy7:q }zz5?wyWZ}>7;F$EPExu|.o+즞&HpUpqkCk6$hWـ$+X(((((((}aggiݬ AS’yBN (gd0F#E$G$Պ((((((((((}ox]LIڋ%ct|ig$ȸZH@ສג:zX_ "h%$E [pAj iw6L|KX32A= @]/Ti|M/[n`w˄#n<8v>%xQ~ ZھE*gQFR~-Ip 뺕Ư ~YRf}u!pPvT'%d\:|5w.'.z12+HX|梖$ 994~DmZ6I0y$ v.p=kx_mkz/XkoxwSntb8™263Ƞ]oVxM޻nI1\ 8#,U^nkM`^[A pU< [{J$DԌA+<CiMHjeY1듞QEr:֗= ߟ6L6a#-=cbe<{o2yZRX)І睪8l|:Dž~=f0>Gvi8$qyĘk = b%OF_˟(ώ^}vb6s}8+s_.~{[O#Ąd7 sq EP?O5 `jEE^@InQtyZ襮ow:< $_ K@Q@x+x}5]R-# er wq|Dq^EO C_a#ah>fpCûYww7C}rX'qE'O`xj ?exO?jO|:QWٌ>S:7QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEy6۝ogvQ@~_;-G7QDm`7%}>bpp#?4hsim/ ̂$('imtz͆ dW5,N>YT$(w,n/DWWyHFqYqX1Q@~_|PռihZ-yx s?4hsim/ ̂$('imtz͆ dW5,N>YT$(w,n/DWWyHFqYqX1Q@_σVߊz?u&g2|#kF l9r[."-R5AҳVBN܌ײQ@ܾ })$K(mXvkN G^a|G41?e-H<(ߩ (=5Pg 2B88㟄_5kv-/w :R8!@Ey+/ikw⦅;˳ OJآ ,Ro94"ZSHr%ܼ)P[$ ˪swP7??Xk(cl1 ge's~)qM{wz=WIf("*bUOAֽ"=7V['RGkn)l`3}{g6X\]y=qIs&wLʠ9$䑞SW(#MNK;ڭݬ "6#*g|$&f&7<6czB@g6_g;q׽hhZg''inv2qg5Ex^=Z5\i~>Ikf1\V`q=j sװQ@gW}4ltU8g@?;^\Y>8:%2s?*Tq/J (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKlQppPK<+AOEBPS/dcommon/contbig.gif`GIF87a!!!111999BBBJJJRRRccckkksss{{{skk{{ZRRRJJƽ{sZRJRJB91)kcZB9)sskZRJ1޽ƽ{{ssskkkcƵZZRccZRRJJJB{BB9991ssckkZccR))!RRB!!JJ1))99!11ƌ)1R)k֔)s1RZJR{BJs9R1J!11J1J9k{csZk!1J!)cBR9J1B)91B!cRs{!)s!){1B!k!s!{ksksckckZc9B)1!)!)BJ9B1919έƌ!!)JJcZZ{!!!1RR{JJsBBkJJ{!!9BB{1!!J9)!!Z!!c1!!kR!!s9Z!BckJs)19!!c!!ZRZ,H rrxB(Kh" DժuICiи@S z$G3TTʖ&7!f b`D 0!A  k,>SO[!\ *_t  Exr%*_}!#U #4 & ֩3|b]L ]t b+Da&R_2lEٱZ`aC)/яmvUkS r(-iPE Vv_{z GLt\2s!F A#葡JY r|AA,hB}q|B`du }00(䡆<pb,G+oB C0p/x$…– ]7 @2HFc ) @AD \0 LHG',(A` `@SC)_" PH`}Y+_|1.K8pAKMA @?3҄$[JPA)+NH I ,@8G0/@R T,`pF8Ѓ)$^$ DDTDlA@ s;PKPK<+AOEBPS/dcommon/darbbook.cssPKPK<+A!OEBPS/dcommon/O_signature_clr.JPG"(JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?O '~MQ$Vz;OlJi8L%\]UFjޙ%ԯS;rA]5ފ<׈]j7Ouyq$z'TQuw7Ŀ KX߁M2=S'TQt?.5w'97;~pq=" ~k?`'9q6 E|yayM^Om'fkC&<5x' ?A?Zx'jß={=SßM gVC.5+Hd֪xc^)Җufz{Cީ|D Vkznq|+Xa+{50rx{|OG.OϞ~f/ xxX[2H )c+#jpUOZYX\=SG ߨC|K@;_߆'e?LT?]:?>w ڔ`D^So~xo[Ӡ3i7B:Q8 Vc-ďoi:FM292~y_*_闱YN\Fr=xZ3鳎OwW_QEzW~c]REeaSM}}Hӏ4&.E]u=gMѠ+mF`rNn$w9gMa꺢nTuhf2Xv>އ a(Û6߭?<=>z'TQuw7Ŀ KX߁M2=S'TQt?.5Kko\.8S$TOX߀Gw?Zx汴X)C7~.i6(Щ=+4{mGӭ¸-]&'t_kV*I<1)4thtIsqpQJ+> \m^[aJ5)ny:4o&QEnyAEPEEss 72,PDۢ׃K W{Wjr+wگ iM/;pd?~&?@;7E4gv8 $l'z'TQuw7Ŀ Gֱ=ɿ&G?. iR(5W*$|?w᫼gkmIbHe/_t>tg%y.l}N5[]+Mk0ĠeHdPrsst'UiC,y8`V%9ZIia|ܪvi מYG,o}+kk{YbyIeb*sAtի82zWoEK5z*o-eo;n(P u-I)4Š(HQEQEQEQEhz(X/Đ?}Bk˩ ݏrk0]4>8XzV? }6$}d^F>nU K ?Bտk_9׾x~w'ߞ  uDŽtL ؈5c-E/"|_Oo.IH쐍=i*Iw5(ںw?t5s.)+tQ2dUt5Vĺ.jZ"@IRrZƅY4ߡ_;}ų(KyQf1Aǵt?sZg+?F5_oQR&Dg߿]6FuRD u>ڿxl7?IT8'shj^=.=J1rj1Wl$얲cPx;E,p$֟ˏkw qg"45(ǛkV/=+ũ)bYl~K#˝J_כ5&\F'I#8/|wʾ_Xj Q:os^T1.M_|TO.;?_  jF?g N 8nA2F%i =qW,G=5OU u8]Rq?wr'˻S+۾.ܼ 87Q^elo/T*?L|ۚ<%<,/v_OKs B5f/29n0=zqQq(ª=VX@*J(э(f5qJN_EVǞQEOuoѕOuoa5}gO?:߂8Wא|cڽ~]N&O( (<]>͠@VQ=^~U ̴m&\խ5i:}|}r~9՝f}_>'vVֲ$~^f30^in{\_.O F8to}?${φ|#x^#^n~w=~k~?'KRtO.㌡h![3Zu*ٷճ(ԟ]z_/W1(ԟ]v~g|Yq<ז0 ; b8֮s,w9\?uEyStKaª@\,)) (!EPEPEPEPEPzѧts{v>C/"N6`d*J2gGӧWqBq_1ZuΓ\X]r?=Ey88Mp&pKtO-"wR2 K^-Z< \c>V0^@O7x2WFjs<׻kZ(<Т(OFw/6$1[:ޯԯ#q~4|,LVPem=@=YLUxӃV}AUbcUB.Ds5*kٸAeG>PJxt͝ b88?*$~@ׯD VkraiJs}Q.20x&mXξ,Z]“A-J#`+-E/"<]\a'tZGy.(|lދ~gMK OZdxDŽU9T6ϯ^<Ϡt5CZ]].t۫S=s`ڳ%8iVK:nqe+#<.T6U>zWoy3^I {F?J~=G}k)K$$;$de8*G Uӟ4Ocºw}|]4=ݣ\x$ʠms?q^ipw\"ȿPs^Z Q_0GڼU.t}ROM[G#]8wٞ ӫ87}Cgw vHȩBM55vof =A_٭`Ygx[6 P,5}>蚊(0(+?>+?> k|TuXq6_ +szk :u_ Z߶Ak_U}Jc2u/1[_»ݸG41-bሬ۴}}Eȹפ_c?5gi @cL\L<68hF_Ih>X4K7UТ sMj =J7CKo>Օ5s:߀t ~ηaٿ?|gdL8+gG%o?x`دOqȱwc¨&TW_V_aI=dpG!wu۞սZ1yL50$(l3(:~'ַo A}a3N*[0ǭ HKQV}G@֜$ 9of$ArNqUOgË05#m?D)^_h//5_/<?4}Jį+GkpG4"$ r| >S4Ђ"S 1%R:ȝ 8;PKPz PK<+AOEBPS/dcommon/feedback.gif7GIF89a'%(hp|fdx?AN5:dfeDGHɾTdQc`g*6DC\?ؘ||{;=E6JUՄfeA= >@,4`H.|`a (Q 9:&[|ځ,4p Y&BDb,!2@, $wPA'ܠǃ@CO~/d.`I @8ArHx9H75j L 3B/` P#qD*s 3A:3,H70P,R@ p!(F oԥ D;"0 ,6QBRɄHhI@@VDLCk8@NBBL2&pClA?DAk%$`I2 #Q+l7 "=&dL&PRSLIP)PɼirqМ'N8[_}w;PK-PK<+AOEBPS/dcommon/booklist.gifGIF89a1޵֥΄kZ{Jk1Rs!BZ)B),@I9Z͓Ca % Dz8Ȁ0FZЌ0P !x8!eL8aWȠFD(~@p+rMS|ӛR$ v "Z:]ZJJEc{*=AP  BiA ']j4$*   & 9q sMiO?jQ = , YFg4.778c&$c%9;PKː5PK<+AOEBPS/dcommon/cpyr.htm1 Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2012, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in prerelease status:

This documentation is in prerelease status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Oracle Logo

PKN61PK<+AOEBPS/dcommon/masterix.gif.GIF89a1ޜΌscJk1Rs!Bc1J),@IS@0"1 Ѿb$b08PbL,acr B@(fDn Jx11+\%1 p { display: none; } /* Class Selectors */ .ProductTitle { font-family: sans-serif; } .BookTitle { font-family: sans-serif; } .VersionNumber { font-family: sans-serif; } .PrintDate { font-family: sans-serif; font-size: small; } .PartNumber { font-family: sans-serif; font-size: small; } PKeӺ1,PK<+AOEBPS/dcommon/larrow.gif#GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШtpHc`  өb[.64ꑈ53=Z]'yuLG*)g^!8C?-6(29K"Ĩ0Яl;U+K9^u2,@@ (\Ȱ Ë $P`lj 8x I$4H *(@͉0dа8tA  DсSP v"TUH PhP"Y1bxDǕ̧_=$I /& .)+ 60D)bB~=0#'& *D+l1MG CL1&+D`.1qVG ( "D2QL,p.;u. |r$p+5qBNl<TzB"\9e0u )@D,¹ 2@C~KU 'L6a9 /;<`P!D#Tal6XTYhn[p]݅ 7}B a&AƮe{EɲƮiEp#G}D#xTIzGFǂEc^q}) Y# (tۮNeGL*@/%UB:&k0{ &SdDnBQ^("@q #` @1B4i@ aNȅ@[\B >e007V[N(vpyFe Gb/&|aHZj@""~ӎ)t ? $ EQ.սJ$C,l]A `8A o B C?8cyA @Nz|`:`~7-G|yQ AqA6OzPbZ`>~#8=./edGA2nrBYR@ W h'j4p'!k 00 MT RNF6̙ m` (7%ꑀ;PKl-OJPK<+AOEBPS/dcommon/index.gifGIF89a1޵ΥΥ{sc{BZs,@IM" AD B0 3.R~[D"0, ]ШpRNC  /& H&[%7TM/`vS+-+ q D go@" 4o'Uxcxcc&k/ qp zUm(UHDDJBGMԃ;PK(PK<+AOEBPS/dcommon/bookbig.gif +GIF89a$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9B!& Imported from GIF image: bookbig.gif,$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9BH`\Ȑ:pظа"A6DBH,V@Dڹ'G"v Æ ܥ;n;!;>xAܽ[G.\rQC wr}BŊQ A9ᾑ#5Y0VȒj0l-GqF>ZpM rb ;=.ސW-WѻWo ha!}~ْ ; t 53 :\ 4PcD,0 4*_l0K3-`l.j!c Aa|2L4/1C`@@md;(H*80L0L(h*҇҆o#N84pC (xO@ A)J6rVlF r  fry†$r_pl5xhA+@A=F rGU a 1х4s&H Bdzt x#H%Rr (Ѐ7P`#Rщ'x" #0`@~i `HA'Tk?3!$`-A@1l"P LhʖRG&8A`0DcBH sq@AXB4@&yQhPAppxCQ(rBW00@DP1E?@lP1%T` 0 WB~nQ@;PKGC PK<+AOEBPS/dcommon/rarrow.gif/GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШLlԸ NCqWEd)#34vwwpN|0yhX!'+-[F 'n5 H $/14w3% C .90" qF 7&E "D mnB|,c96) I @0BW{ᢦdN p!5"D`0 T 0-]ʜ$;PKJV^PK<+AOEBPS/dcommon/mix.gifkGIF89aZZZBBBJJJkkk999sss!!!111cccֽ{{{RRR)))猌ƭ{s{sks!,@@pH,B$ 8 t:<8 *'ntPP DQ@rIBJLNPTVEMOQUWfj^!  hhG H  kCúk_a Ǥ^ h`B BeH mm  #F` I lpǎ,p B J\Y!T\(dǏ!Gdˆ R53ټ R;iʲ)G=@-xn.4Y BuU(*BL0PX v`[D! | >!/;xP` (Jj"M6 ;PK枰pkPK<+AOEBPS/dcommon/doccd_epub.jsM /* Copyright 2006, 2012, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2012.3.17 */ function addLoadEvent(func) { var oldOnload = window.onload; if (typeof(window.onload) != "function") window.onload = func; else window.onload = function() { oldOnload(); func(); } } function compactLists() { var lists = []; var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) lists.push(ul[i]); var ol = document.getElementsByTagName("ol"); for (var i = 0; i < ol.length; i++) lists.push(ol[i]); for (var i = 0; i < lists.length; i++) { var collapsible = true, c = []; var li = lists[i].getElementsByTagName("li"); for (var j = 0; j < li.length; j++) { var p = li[j].getElementsByTagName("p"); if (p.length > 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PK<+AOEBPS/dcommon/toc.gifGIF89a1ΥΥ{c{Z{JkJk1Rk,@IK% 0| eJB,K-1i']Bt9dz0&pZ1o'q(؟dQ=3S SZC8db f&3v2@VPsuk2Gsiw`"IzE%< C !.hC IQ 3o?39T ҍ;PKv I PK<+AOEBPS/dcommon/topnav.gifGIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)-'KR$&84 SI) XF P8te NRtHPp;Q%Q@'#rR4P fSQ o0MX[) v + `i9gda/&L9i*1$#"%+ ( E' n7Ȇ(,҅(L@(Q$\x 8=6 'נ9tJ&"[Epljt p#ѣHb :f F`A =l|;&9lDP2ncH R `qtp!dȐYH›+?$4mBA9 i@@ ]@ꃤFxAD*^Ŵ#,(ε  $H}F.xf,BD Z;PK1FAPK<+AOEBPS/dcommon/bp_layout.css# @charset "utf-8"; /* bp_layout.css Copyright 2007, Oracle and/or its affiliates. All rights reserved. */ body { margin: 0ex; padding: 0ex; } h1 { display: none; } #FOOTER { border-top: #0d4988 solid 10px; background-color: inherit; color: #e4edf3; clear: both; } #FOOTER p { font-size: 80%; margin-top: 0em; margin-left: 1em; } #FOOTER a { background-color: inherit; color: gray; } #LEFTCOLUMN { float: left; width: 50%; } #RIGHTCOLUMN { float: right; width: 50%; clear: right; /* IE hack */ } #LEFTCOLUMN div.portlet { margin-left: 2ex; margin-right: 1ex; } #RIGHTCOLUMN div.portlet { margin-left: 1ex; margin-right: 2ex; } div.portlet { margin: 2ex 1ex; padding-left: 0.5em; padding-right: 0.5em; border: 1px #bcc solid; background-color: #f6f6ff; color: black; } div.portlet h2 { margin-top: 0.5ex; margin-bottom: 0ex; font-size: 110%; } div.portlet p { margin-top: 0ex; } div.portlet ul { list-style-type: none; padding-left: 0em; margin-left: 0em; /* IE Hack */ } div.portlet li { text-align: right; } div.portlet li cite { font-style: normal; float: left; } div.portlet li a { margin: 0px 0.2ex; padding: 0px 0.2ex; font-size: 95%; } #NAME { margin: 0em; padding: 0em; position: relative; top: 0.6ex; left: 10px; width: 80%; } #PRODUCT { font-size: 180%; } #LIBRARY { color: #0b3d73; background: inherit; font-size: 180%; font-family: serif; } #RELEASE { position: absolute; top: 28px; font-size: 80%; font-weight: bold; } #TOOLS { list-style-type: none; position: absolute; top: 1ex; right: 2em; margin: 0em; padding: 0em; background: inherit; color: black; } #TOOLS a { background: inherit; color: black; } #NAV { float: left; width: 96%; margin: 3ex 0em 0ex 0em; padding: 2ex 0em 0ex 4%; /* Avoiding horizontal scroll bars. */ list-style-type: none; background: transparent url(../gifs/nav_bg.gif) repeat-x bottom; } #NAV li { float: left; margin: 0ex 0.1em 0ex 0em; padding: 0ex 0em 0ex 0em; } #NAV li a { display: block; margin: 0em; padding: 3px 0.7em; border-top: 1px solid gray; border-right: 1px solid gray; border-bottom: none; border-left: 1px solid gray; background-color: #a6b3c8; color: #333; } #SUBNAV { float: right; width: 96%; margin: 0ex 0em 0ex 0em; padding: 0.1ex 4% 0.2ex 0em; /* Avoiding horizontal scroll bars. */ list-style-type: none; background-color: #0d4988; color: #e4edf3; } #SUBNAV li { float: right; } #SUBNAV li a { display: block; margin: 0em; padding: 0ex 0.5em; background-color: inherit; color: #e4edf3; } #SIMPLESEARCH { position: absolute; top: 5ex; right: 1em; } #CONTENT { clear: both; } #NAV a:hover, #PORTAL_1 #OVERVIEW a, #PORTAL_2 #OVERVIEW a, #PORTAL_3 #OVERVIEW a, #PORTAL_4 #ADMINISTRATION a, #PORTAL_5 #DEVELOPMENT a, #PORTAL_6 #DEVELOPMENT a, #PORTAL_7 #DEVELOPMENT a, #PORTAL_11 #INSTALLATION a, #PORTAL_15 #ADMINISTRATION a, #PORTAL_16 #ADMINISTRATION a { background-color: #0d4988; color: #e4edf3; padding-bottom: 4px; border-color: gray; } #SUBNAV a:hover, #PORTAL_2 #SEARCH a, #PORTAL_3 #BOOKS a, #PORTAL_6 #WAREHOUSING a, #PORTAL_7 #UNSTRUCTURED a, #PORTAL_15 #INTEGRATION a, #PORTAL_16 #GRID a { position: relative; top: 2px; background-color: white; color: #0a4e89; } PK3( # PK<+AOEBPS/dcommon/bookicon.gif:GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ޭ{{ZRRcZZRJJJBB)!!skRB9{sν{skskcZRJ1)!֭ƽ{ZZRccZJJBBB999111)JJ9BB1ZZB!!ﭵBJJ9BB!!))Jk{)1!)BRZJ{BsR!RRJsJ!J{s!JsBkks{RsB{J{c1RBs1ZB{9BJ9JZ!1BJRRs!9R!!9Z9!1)J19JJRk19R1Z)!1B9R1RB!)J!J1R)J119!9J91!9BkksBBJ119BBR!))9!!!JB1JJ!)19BJRZckތ1)1J9B,H*\hp >"p`ƒFF "a"E|ժOC&xCRz OBtX>XE*O>tdqAJ +,WxP!CYpQ HQzDHP)T njJM2ꔀJ2T0d#+I:<жk 'ꤱF AB @@nh Wz' H|-7f\A#yNR5 /PM09u UjćT|q~Yq@&0YZAPa`EzI /$AD Al!AAal 2H@$ PVAB&c*ؠ p @% p-`@b`uBa l&`3Ap8槖X~ vX$Eh`.JhAepA\"Bl, :Hk;PKx[?:PK<+AOEBPS/dcommon/conticon.gif^GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ZRR޽{{ssskkkcccZ991ccRZZBBJJZck)19ZcsBJZ19J!k{k)Z1RZs1!B)!J91{k{)J!B!B911)k{cs!1s!9)s!9!B!k)k1c!)Z!R{9BJcckZZcBBJ99B119{{!!)BBRBBZ!))999R99Z!!999c1!9!)19B1)!B9R,  oua\h2SYPa aowwxYi 9SwyyxxyYSd $'^qYȵYvh ч,/?g{н.J5fe{ڶyY#%/}‚e,Z|pAܠ `KYx,ĉ&@iX9|`p ]lR1khٜ'E 6ÅB0J;t X b RP(*MÄ!2cLhPC <0Ⴁ  $4!B 6lHC%<1e H 4p" L`P!/,m*1F`#D0D^!AO@..(``_؅QWK>_*OY0J@pw'tVh;PKp*c^PK<+AOEBPS/dcommon/blafdoc.cssL@charset "utf-8"; /* Copyright 2002, 2011, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2011.10.7 */ body { font-family: Tahoma, sans-serif; /* line-height: 125%; */ color: black; background-color: white; font-size: small; } * html body { /* http://www.info.com.ph/~etan/w3pantheon/style/modifiedsbmh.html */ font-size: x-small; /* for IE5.x/win */ f\ont-size: small; /* for other IE versions */ } h1 { font-size: 165%; font-weight: bold; border-bottom: 1px solid #ddd; width: 100%; } h2 { font-size: 152%; font-weight: bold; } h3 { font-size: 139%; font-weight: bold; } h4 { font-size: 126%; font-weight: bold; } h5 { font-size: 113%; font-weight: bold; display: inline; } h6 { font-size: 100%; font-weight: bold; font-style: italic; display: inline; } a:link { color: #039; background: inherit; } a:visited { color: #72007C; background: inherit; } a:hover { text-decoration: underline; } a img, img[usemap] { border-style: none; } code, pre, samp, tt { font-family: monospace; font-size: 110%; } caption { text-align: center; font-weight: bold; width: auto; } dt { font-weight: bold; } table { font-size: small; /* for ICEBrowser */ } td { vertical-align: top; } th { font-weight: bold; text-align: left; vertical-align: bottom; } ol ol { list-style-type: lower-alpha; } ol ol ol { list-style-type: lower-roman; } td p:first-child, td pre:first-child { margin-top: 0px; margin-bottom: 0px; } table.table-border { border-collapse: collapse; border-top: 1px solid #ccc; border-left: 1px solid #ccc; } table.table-border th { padding: 0.5ex 0.25em; color: black; background-color: #f7f7ea; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } table.table-border td { padding: 0.5ex 0.25em; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } span.gui-object, span.gui-object-action { font-weight: bold; } span.gui-object-title { } p.horizontal-rule { width: 100%; border: solid #cc9; border-width: 0px 0px 1px 0px; margin-bottom: 4ex; } div.zz-skip-header { display: none; } td.zz-nav-header-cell { text-align: left; font-size: 95%; width: 99%; color: black; background: inherit; font-weight: normal; vertical-align: top; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-header-link { font-size: 95%; } td.zz-nav-button-cell { white-space: nowrap; text-align: center; width: 1%; vertical-align: top; padding-left: 4px; padding-right: 4px; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-button-link { font-size: 90%; } div.zz-nav-footer-menu { width: 100%; text-align: center; margin-top: 2ex; margin-bottom: 4ex; } p.zz-legal-notice, a.zz-legal-notice-link { font-size: 85%; /* display: none; */ /* Uncomment to hide legal notice */ } /*************************************/ /* Begin DARB Formats */ /*************************************/ .bold, .codeinlinebold, .syntaxinlinebold, .term, .glossterm, .seghead, .glossaryterm, .keyword, .msg, .msgexplankw, .msgactionkw, .notep1, .xreftitlebold { font-weight: bold; } .italic, .codeinlineitalic, .syntaxinlineitalic, .variable, .xreftitleitalic { font-style: italic; } .bolditalic, .codeinlineboldital, .syntaxinlineboldital, .titleinfigure, .titleinexample, .titleintable, .titleinequation, .xreftitleboldital { font-weight: bold; font-style: italic; } .itemizedlisttitle, .orderedlisttitle, .segmentedlisttitle, .variablelisttitle { font-weight: bold; } .bridgehead, .titleinrefsubsect3 { font-weight: bold; } .titleinrefsubsect { font-size: 126%; font-weight: bold; } .titleinrefsubsect2 { font-size: 113%; font-weight: bold; } .subhead1 { display: block; font-size: 139%; font-weight: bold; } .subhead2 { display: block; font-weight: bold; } .subhead3 { font-weight: bold; } .underline { text-decoration: underline; } .superscript { vertical-align: super; } .subscript { vertical-align: sub; } .listofeft { border: none; } .betadraft, .alphabetanotice, .revenuerecognitionnotice { color: #e00; background: inherit; } .betadraftsubtitle { text-align: center; font-weight: bold; color: #e00; background: inherit; } .comment { color: #080; background: inherit; font-weight: bold; } .copyrightlogo { text-align: center; font-size: 85%; } .tocsubheader { list-style-type: none; } table.icons td { padding-left: 6px; padding-right: 6px; } .l1ix dd, dd dl.l2ix, dd dl.l3ix { margin-top: 0ex; margin-bottom: 0ex; } div.infoboxnote, div.infoboxnotewarn, div.infoboxnotealso { margin-top: 4ex; margin-right: 10%; margin-left: 10%; margin-bottom: 4ex; padding: 0.25em; border-top: 1pt solid gray; border-bottom: 1pt solid gray; } p.notep1 { margin-top: 0px; margin-bottom: 0px; } .tahiti-highlight-example { background: #ff9; text-decoration: inherit; } .tahiti-highlight-search { background: #9cf; text-decoration: inherit; } .tahiti-sidebar-heading { font-size: 110%; margin-bottom: 0px; padding-bottom: 0px; } /*************************************/ /* End DARB Formats */ /*************************************/ @media all { /* * * { line-height: 120%; } */ dd { margin-bottom: 2ex; } dl:first-child { margin-top: 2ex; } } @media print { body { font-size: 11pt; padding: 0px !important; } a:link, a:visited { color: black; background: inherit; } code, pre, samp, tt { font-size: 10pt; } #nav, #search_this_book, #comment_form, #comment_announcement, #flipNav, .noprint { display: none !important; } body#left-nav-present { overflow: visible !important; } } PKʍPK<+AOEBPS/dcommon/rightnav.gif&GIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)- $CҠҀ ! D1 #:aS( c4B0 AC8 ְ9!%MLj Z * ctypJBa H t>#Sb(clhUԂ̗4DztSԙ9ZQҀEPEPEPEPEPEPEPM=iԍP Gii c*yF 1׆@\&o!QY00_rlgV;)DGhCq7~..p&1c:u֫{fI>fJL$}BBP?JRWc<^j+χ5b[hֿ- 5_j?POkeQ^hֿ1L^ H ?Qi?z?+_xɔŪ\썽O]χ>)xxV/s)e6MI7*ߊޛv֗2J,;~E4yi3[nI`Ѱe9@zXF*W +]7QJ$$=&`a۾?]N T䏟'X)Ɣkf:j |>NBWzYx0t!* _KkoTZ?K Gc+UyڹgNuh^iSo5{\ܹ3Yos}.>if FqR5\/TӮ#]HS0DKu{($"2xִ{SBJ8=}Y=.|Tsц2UЫ%.InaegKo z ݎ3ֹxxwM&2S%';+I',kW&-"_¿_ Vq^ܫ6pfT2RV A^6RKetto^[{w\jPZ@ޢN4/XN#\42j\(z'j =~-I#:q[Eh|X:sp* bifp$TspZ-}NM*B-bb&*xUr#*$M|QWY ~p~- fTED6O.#$m+t$˙H"Gk=t9r娮Y? CzE[/*-{c*[w~o_?%ƔxZ:/5𨴟q}/]22p qD\H"K]ZMKR&\C3zĽ[PJm]AS)Ia^km M@dК)fT[ijW*hnu Ͳiw/bkExG£@f?Zu.s0(<`0ֹoxOaDx\zT-^ѧʧ_1+CP/p[w 9~U^[U<[tĽwPv[yzD1W='u$Oeak[^ |Gk2xv#2?¹TkSݕ| rݞ[Vi _Kz*{\c(Ck_܏|?u jVڔ6f t?3nmZ6f%QAjJf9Rq _j7Z-y.pG$Xb]0')[_k;$̭?&"0FOew7 z-cIX岛;$u=\an$ zmrILu uٞ% _1xcUW%dtÀx885Y^gn;}ӭ)場QEQ@Q@Q@Q@Q@Q@!4xPm3w*]b`F_931˜[ן+(> E ly;<;MF-qst+}DH @YKlLmؤciN<|]IU)Lw(8t9FS(=>og<\Z~u_+X1ylsj'eՃ*U3`C!N9Q_WܱhKc93^ua>H ƕGk=8~e#_?{ǀe-[2ٔ7;=&K挑5zsLdx(e8#{1wS+ΝVkXq9>&yஏh$zq^0~/j@:/«Vnce$$uoPp}MC{$-akH@ɫ1O !8R9s5ԦYmϧ'OUṡ5T,!Ԛ+s#1Veo=[)g>#< s)ƽُA^䠮ωFUj(ǩ|N3Jڷ睁ϱuږZYGOTsI<&drav?A^_f׻B$,O__ԿC`it{6>G׈C~&$y؎v1q9Sc1fH[ѽ>,gG'0'@Vw,BO [#>ﱺg5ΒFVD%Yr:O5 Tu+O멃]ی38Ze}R&ѝ_xzc1DXgس;<,_,{ƽY'AS#oF.M#~cBuEx7G+Y)(5q+GCV;qF+CLQ)qEC&6z𿊘z}?&w=+)??&\g{;V??׻xGœdٿ׼-Nc')3K]N)iLTӿCdb7Q^a N sd>Fz[0S^s'Zi 77D}kWus ab~~H(>.fif9,~|Jk;YN3H8Y(t6Q݉k͇_÷Z+2߄&[ +Tr^藺97~c܎=[f1RrBǓ^kEMhxYVm<[џ6| kqbѱ| YA{G8p?\UM7Z66 g1U1igU69 u5Pƪ:VVZC=[@ҹ¨$kSmɳО\vFz~i3^a Osŧυ9Q}_3 όO{/wgoet39 vO2ea;Ύ7$U#?k+Ek&dpzbӱ+TaB0gN{[N7Gי}U7&@?>Fz~E!a@s ?'67XxO*!?qi]֏TQN@tI+\^s8l0)2k!!iW8F$(yOּT.k,/#1:}8uT˾+5=O/`IW G֯b.-<= HOm;~so~hW5+kS8s.zwE| ?4ӿw/K N 9?j(#0UT` Wzw}:_*9m>󑓀F?ELzv=8q:=WgJ`nDr Zе<ֹ](Q@Q@Q@Q@Q@Q@Q@Q@ 'IdC0EYJVcMty_~u+Sw-aO n<[YJgL#6i g5ЖDZ14cʝ!!\/M}/_AYR__>oC? _?7_G#RERW쏞KB}JxGSkǕA pƱơP m]hwB7U$Zq M95"3q1ioATߚ{g.t uu2k=;h#YB= fgS :TdLԃ!44mFK{Hrd^7oz|BVr<{)6AXգV»|>*/hS܏z͆OM=Εq (s|s׊LKQI :9NJ)P+!ʣoAF>+=@I}"x/}۠1aנc¹4emC:>p_xWKX` >R3_S½èųp3޺u3N e یbmͺ<_ mnݮ1Op?Gm)Qb%N585'%Ahs\6yw!"&Ɨ._wk)}GP;Z!#\"< *oƾ\)}N>"լ/~]Lg}pBG X?<zZ#x69S=6) jzx=y9O&>+e!!? ?s~k5Gʏ)?*ce7Ox~k5􇔾Q/e7/Ԑ#3OgNC0] ;_FiRl>Q.g>!%k#ú:Kn'&}?U@\pџPtp)v<{_i}Oվֲ3XIYIx~b<D?(=_JXH=bbi=Oh?_ C_O)}oW쏜? %Ƶ;-RYFi`wۭ{ϖZMtQ$"c_+ԃx1*0b;ԕ݋ESQEQEQEQEQEQEQEQEQEQZ(1F)h1K@XLRE&9P (bf{RӨ&)PEPEPbԴPGKZ(iإbn(:A%S0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKje88PK<+AOEBPS/dcommon/help.gif!GIF89a1εֵ֜֜{kZsBc{,@ )sƠTQ$8(4ʔ%ŌCK$A HP`$h8ŒSd+ɡ\ H@%' 6M HO3SJM /:Zi[7 \( R9r ERI%  N=aq   qƦs *q-n/Sqj D XZ;PKއ{&!PK<+AOEBPS/app_initparam.htm Initialization Parameters

B Initialization Parameters

The Oracle database initialization parameters in the init.ora file are distinct from gateway initialization parameters. Set the gateway parameters in the initialization parameter file using an agent-specific mechanism, or set them in the Oracle data dictionary using the DBMS_HS package. The gateway initialization parameter file must be available when the gateway is started. Changes made to the initialization parameters only take effect in the next gateway session.

This appendix contains a list of the gateway initialization parameters that can be set for each gateway and their description. It also describes the initialization parameter file syntax. It includes the following sections:

B.1 Initialization Parameter File Syntax

The syntax for the initialization parameter file is as follows:

  1. The file is a sequence of commands.

  2. Each command should start on a separate line.

  3. End of line is considered a command terminator (unless escaped with a backslash).

  4. If there is a syntax error in an initialization parameter file, none of the settings take effect.

  5. Set the parameter values as follows:

    [SET][PRIVATE] parameter=value
    

    Where:

    parameter is an initialization parameter name. It is a string of characters starting with a letter and consisting of letters, digits and underscores. Initialization parameter names are case sensitive.

    value is the initialization parameter value. It is case-sensitive. An initialization parameter value is either:

    1. A string of characters that does not contain any backslashes, white space or double quotation marks (")

    2. A quoted string beginning with a double quotation mark and ending with a double quotation mark. The following can be used inside a quoted string:

      • backslash (\) is the escape character

      • \n inserts a new line

      • \t inserts a tab

      • \" inserts a double quotation mark

      • \\ inserts a backslash

      A backslash at the end of the line continues the string on the next line. If a backslash precedes any other character then the backslash is ignored.

    For example, to enable tracing for an agent, set the HS_FDS_TRACE_LEVEL initialization parameter as follows:

    HS_FDS_TRACE_LEVEL=ON
    

    SET and PRIVATE are optional keywords. You cannot use either as an initialization parameter name. Most parameters are needed only as initialization parameters, so you usually do not need to use the SET or PRIVATE keywords. If you do not specify either SET or PRIVATE, the parameter is used only as an initialization parameter for the agent.

    SET specifies that, in addition to being used as an initialization parameter, the parameter value is set as an environment variable for the agent process. Use SET for parameter values that the drivers or non-Oracle system need as environment variables.

    PRIVATE specifies that the initialization parameter should be private to the agent and should not be uploaded to the Oracle database. Most initialization parameters should not be private. If, however, you are storing sensitive information like a password in the initialization parameter file, then you may not want it uploaded to the server because the initialization parameters and values are not encrypted when uploaded. Making the initialization parameters private prevents the upload from happening and they do not appear in dynamic performance views. Use PRIVATE for the initialization parameters only if the parameter value includes sensitive information such as a username or password.

    SET PRIVATE specifies that the parameter value is set as an environment variable for the agent process and is also private (not transferred to the Oracle database, not appearing in dynamic performance views or graphical user interfaces).

B.3 Initialization Parameter Description

The following sections describe all the initialization file parameters that can be set for gateways.

B.3.1 HS_CALL_NAME

PropertyDescription
Default valueNone
Range of valuesNot applicable

Specifies the remote functions that can be referenced in SQL statements. The value is a list of remote functions and their owners, separated by semicolons, in the following format:

[owner_name.]function_name
 

For example:

owner1.A1;owner2.A2;A3 

If an owner name is not specified for a remote function, the default owner name becomes the user name used to connect to the remote database (specified when the Heterogeneous Services database link is created or taken from user session if not specified in the DB link).

The entries for the owner names and the function names are case-sensitive.

B.3.2 HS_DB_DOMAIN

PropertyDescription
Default valueWORLD
Range of values1 to 199 characters

Specifies a unique network sub-address for a non-Oracle system. The HS_DB_DOMAIN initialization parameter is similar to the DB_DOMAIN initialization parameter, described in the Oracle Database Reference. The HS_DB_DOMAIN initialization parameter is required if you use the Oracle Names server. The HS_DB_NAME and HS_DB_DOMAIN initialization parameters define the global name of the non-Oracle system.


Note:

The HS_DB_NAME and HS_DB_DOMAIN initialization parameters must combine to form a unique address in a cooperative server environment.

B.3.3 HS_DB_INTERNAL_NAME

PropertyDescription
Default value01010101
Range of values1 to 16 hexadecimal characters

Specifies a unique hexadecimal number identifying the instance to which the Heterogeneous Services agent is connected. This parameter's value is used as part of a transaction ID when global name services are activated. Specifying a nonunique number can cause problems when two-phase commit recovery actions are necessary for a transaction.

B.3.4 HS_DB_NAME

PropertyDescription
Default valueHO
Range of values1 to 8 characters

Specifies a unique alphanumeric name for the data store given to the non-Oracle system. This name identifies the non-Oracle system within the cooperative server environment. The HS_DB_NAME and HS_DB_DOMAIN initialization parameters define the global name of the non-Oracle system.

B.3.5 HS_DESCRIBE_CACHE_HWM

PropertyDescription
Default value100
Range of values1 to 4000

Specifies the maximum number of entries in the describe cache used by Heterogeneous Services. This limit is known as the describe cache high water mark. The cache contains descriptions of the mapped tables that Heterogeneous Services reuses so that it does not have to re-access the non-Oracle data store.

If you are accessing many mapped tables, increase the high water mark to improve performance. Increasing the high water mark improves performance at the cost of memory usage.

B.3.6 HS_LANGUAGE

PropertyDescription
Default valueSystem-specific
Range of valuesAny valid language name (up to 255 characters)

Provides Heterogeneous Services with character set, language, and territory information of the non-Oracle data source. The value must use the following format:

language[_territory.character_set]

Note:

The globalization support initialization parameters affect error messages, the data for the SQL Service, and parameters in distributed external procedures.

B.3.6.1 Character Sets

Ideally, the character sets of the Oracle database and the non-Oracle data source are the same. In almost all cases, HS_LANGUAGE should be set exactly the same as Oracle database character set for optimal character set mapping and performance. If they are not the same, Heterogeneous Services attempts to translate the character set of the non-Oracle data source to the Oracle database character set, and back again. The translation can degrade performance. In some cases, Heterogeneous Services cannot translate a character from one character set to another.


Note:

The specified character set must be a superset of the operating system character set on the platform where the agent is installed.

As more Oracle databases and non-Oracle databases use Unicode as database character sets, it is preferable to also run the gateway in Unicode character set. To do so, you must set HS_LANGUAGE=AL32UTF8. However, when the gateway runs on Windows, the Microsoft ODBC Driver Manager interface can exchange data only in the double-byte character set, UCS2. This results in extra ratio expansion of described buffer and column sizes. Refer to HS_FDS_REMOTE_DB_CHARSET for instruction on how to adjust to correct sizes.

B.3.6.2 Language

The language component of the HS_LANGUAGE initialization parameter determines:

  • Day and month names of dates

  • AD, BC, PM, and AM symbols for date and time

  • Default sorting mechanism

Note that Oracle does not determine the language for error messages for the generic Heterogeneous Services messages (ORA-25000 through ORA-28000). These are controlled by the session settings in the Oracle database.

B.3.6.3 Territory

The territory clause specifies the conventions for day and week numbering, default date format, decimal character and group separator, and ISO and local currency symbols. Note that the level of globalization support between the Oracle database and the non-Oracle data source depends on how the gateway is implemented.

B.3.7 HS_LONG_PIECE_TRANSFER_SIZE

PropertyDescription
Default value64 KB
Range of valuesAny value up to 2 GB

Sets the size of the piece of LONG data being transferred. A smaller piece size means less memory requirement, but more round-trips to fetch all the data. A larger piece size means fewer round-trips, but more of a memory requirement to store the intermediate pieces internally. Thus, the initialization parameter can be used to tune a system for the best performance, with the best trade-off between round-trips and memory requirements, and network latency or response time.

B.3.8 HS_OPEN_CURSORS

PropertyDescription
Default value50
Range of values1 to the value of OPEN_CURSORS initialization parameter of Oracle database

Defines the maximum number of cursors that can be open on one connection to a non-Oracle system instance.

The value never exceeds the number of open cursors in the Oracle database. Therefore, setting the same value as the OPEN_CURSORS initialization parameter in the Oracle database is recommended.

B.3.9 HS_RPC_FETCH_REBLOCKING

PropertyDescription
Default valueON
Range of valuesOFF or ON

Controls whether Heterogeneous Services attempts to optimize performance of data transfer between the Oracle database and the Heterogeneous Services agent connected to the non-Oracle data store.

The following values are possible:

  • OFF disables reblocking of fetched data so that data is immediately sent from agent to server.

  • ON enables reblocking, which means that data fetched from the non-Oracle system is buffered in the agent and is not sent to the Oracle database until the amount of fetched data is equal or higher than the value of HS_RPC_FETCH_SIZE initialization parameter. However, any buffered data is returned immediately when a fetch indicates that no more data exists or when the non-Oracle system reports an error.

B.3.10 HS_RPC_FETCH_SIZE

PropertyDescription
Default value50000
Range of values1 to 10000000

Tunes internal data buffering to optimize the data transfer rate between the server and the agent process.

Increasing the value can reduce the number of network round-trips needed to transfer a given amount of data, but also tends to increase data bandwidth and to reduce latency as measured between issuing a query and completion of all fetches for the query. Nevertheless, increasing the fetch size can increase latency for the initial fetch results of a query, because the first fetch results are not transmitted until additional data is available.

B.3.11 HS_TRANSACTION_MODEL

PropertyDescription
Default ValueCOMMIT_CONFIRM
Range of ValuesCOMMIT_CONFIRM, READ_ONLY, READ_ONLY_AUTOCOMMIT, SINGLE_SITE, SINGLE_SITE_AUTOCOMMIT

Specifies the type of transaction model that is used when the non-Oracle database is updated by a transaction.

The following values are possible:

  • COMMIT_CONFIRM provides read and write access to the non-Oracle database and allows the gateway to be part of a distributed update. To use the commit-confirm model, the following items must be created in the non-Oracle database:

    • Transaction log table. The default table name is HS_TRANSACTION_LOG. A different name can be set using the HS_FDS_TRANSACTION_LOG parameter. The transaction log table must be granted SELECT, DELETE, and INSERT privileges set to public.

    • Recovery account. The account name is assigned with the HS_FDS_RECOVERY_ACCOUNT parameter.

    • Recovery account password. The password is assigned with the HS_FDS_RECOVERY_PWD parameter.

      COMMIT_CONFIRM does not apply to Oracle Database Gateway for ODBC. The default value for Oracle Database Gateway for ODBC is SINGLE_SITE.

  • READ_ONLY provides read access to the non-Oracle database.

  • READ_ONLY_AUTOCOMMIT provides read access to the non-Oracle database that do not have logging.

  • SINGLE_SITE provides read and write access to the non-Oracle database. However, the gateway cannot participate in distributed updates.

  • SINGLE_SITE_AUTOCOMMIT provides read and write access to the non-Oracle database that do not have logging. Any update is committed immediately, and the gateway cannot participate in distributed updates.

B.3.12 IFILE

PropertyDescription
Default valueNone
Range of valuesValid parameter file names

Use the IFILE initialization parameter to embed another initialization file within the current initialization file. The value should be an absolute path and should not contain environment variables. The three levels of nesting limit do not apply.

B.3.13 HS_FDS_CONNECT_INFO

PropertyDescription
Default ValueNone
Range of ValuesNot applicable

HS_FDS_CONNECT_INFO that describes the connection to the non-Oracle system.

The default initialization parameter file already has an entry for this parameter. The syntax for HS_FDS_CONNECT_INFO for the gateways are as follows:

HS_FDS_CONNECT_INFO=IP_address:Port_number/Database_name,Type

Where IP_address is the hostname or IP address of the DB2 DRDA server

Port_number is the port number of the DB2 DRDA server.

Database_name is the database name of the DB2 server

Type (case insensitive) is one of the following:

  • ZOS (DB2 UDB for z/OS),

  • IOS (DB2 UDB for iSeries), or

  • LUW (DB2 UDB for Linux, Unix, or Windows)

This release of gateway can support IPv6. If IPv6 address format is to be specified, you would need to wrap square brackets around the IPv6 specification to indicate the separation from the port number.

For example,

HS_FDS_CONNECT_INFO=[2001:0db8:20C:F1FF:FEC6:38AF]:1300/DB2M,ZOS

B.3.14 HS_FDS_RECOVERY_ACCOUNT

PropertyDescription
Default ValueRECOVER
Range of valuesAny valid user ID

Specifies the name of the recovery account used for the commit-confirm transaction model. An account with user name and password must be set up at the non-Oracle system. For more information about the commit-confirm model, see the HS_TRANSACTION_MODEL parameter.

For DRDA, HS_FDS_RECOVERY_ACCOUNT specifies the user ID that is used by the gateway if a distributed transaction becomes in doubt. This user ID must have execute privileges on the package and must be defined to the IBM database.

If a distributed transaction becomes in doubt, then the Oracle database determines the status of the transaction by connecting to the IBM database, using the HS_FDS_RECOVERY_ACCOUNT. If this parameter is missing, then the gateway attempts to connect to a user ID of ORARECOV.

The name of the recovery account is case-sensitive.

B.3.15 HS_FDS_RECOVERY_PWD

PropertyDescription
Default ValueRECOVER
Range of valuesAny valid password

Specifies the password of the recovery account used for the commit-confirm transaction model set up at the non-Oracle system. For more information about the commit-confirm model, see the HS_TRANSACTION_MODEL parameter.

HS_FDS_RECOVERY_PWD is used with the HS_FDS_RECOVERY_ACCOUNT. The recovery user connects to the IBM database if a distributed transaction is in doubt.

The name of the password of the recovery account is case-sensitive.

B.3.16 HS_FDS_FETCH_ROWS

PropertyDescription
Default Value100
Range of ValuesAny integer between 1 and 1000
SyntaxHS_FDS_FETCH_ROWS=num

HS_FDS_FETCH_ROWS specifies the fetch array size. This is the number of rows to be fetched from the non-Oracle database and to return to Oracle database at one time. This parameter will be affected by the HS_RPC_FETCH_SIZE and HS_RPC_FETCH_REBLOCKING parameters.

B.3.17 HS_FDS_TRACE_LEVEL

PropertyDescription
Default ValueOFF
Range of valuesOFF, ON, DEBUG

Specifies whether error tracing is turned on or off for gateway connectivity.

The following values are valid:

  • OFF disables the tracing of error messages.

  • ON enables the tracing of error messages that occur when you encounter problems. The results are written by default to a gateway log file in LOG directory where the gateway is installed.

  • DEBUG enables the tracing of detailed error messages that can be used for debugging.

B.3.18 HS_FDS_TRANSACTION_LOG

PropertyDescription
Default ValueHS_TRANSACTION_LOG
Range of ValuesAny valid table name

Specifies the name of the table created in the non-Oracle system for logging transactions. For more information about the transaction model, see the HS_TRANSACTION_MODEL parameter.

B.3.19 HS_IDLE_TIMEOUT

PropertyDescription
Default Value0 (no timeout)
Range of Values0-9999 (minutes)
SyntaxHS_IDLE_TIMEOUT=num

This feature is only available for Oracle Net TCP protocol.

When there is no activity for a connected gateway session for this specified time period, the gateway session would be terminated automatically with pending update (if any) rolled back.

B.3.20 HS_FDS_MBCS_TO_GRAPHIC

PropertyDescription
Default ValueFALSE
Range of ValuesFALSE|TRUE
SyntaxHS_FDS_MBCS_TO_GRAPHIC={FALSE|TRUE}

If set to TRUE, any single-byte character meant to insert to DB2 (var)graphic column would be converted to equivalent double-byte value before the insert operation.

B.3.21 HS_FDS_GRAPHIC_TO_MBCS

PropertyDescription
Default ValueFALSE
Range of ValuesFALSE|TRUE
SyntaxHS_FDS_GRAPHIC_TO_MBCS={FALSE|TRUE}

If set to TRUE, any double-byte characters in DB2 (var)graphic column that can have equivalent single-byte equivalent would be translated to equivalent single-byte before sending to the user.

B.3.22 HS_FDS_TIMESTAMP_MAPPING

PropertyDescription
Default ValueCHAR
Range of ValuesCHAR|TIMESTAMP
SyntaxHS_FDS_TIMESTAMP_MAPPING={CHAR|TIMESTAMP}

If set to CHAR (default), DB2 timestamp would be mapped to CHAR(26). If set to TIMESTAMP, DB2 timestamp would be mapped to Oracle timestamp.

B.3.23 HS_FDS_QUOTE_IDENTIFIER

PropertyDescription
Default ValueTRUE
Range of ValuesTRUE|FALSE
SyntaxHS_FDS_QUOTE_IDENTIFIER={FALSE|TRUE}

By default, the gateway will quote identifiers if the FDS supports it. However, we give the user the ability to overwrite the behavior.

B.3.24 HS_FDS_CAPABILITY

PropertyDescription
Default ValueNone
Range of ValuesRefer to Table 4-4, "List of SQL Functions That Can Be Enabled"
SyntaxHS_FDS_CAPABILITY= {FUNCTION/{ON|OFF|SKIP}},...

If the HS_FDS_CAPABILITY is set to ON then the specified function will be sent to DB2 for processing. In other words, post processing will be not needed for that function.

If the HS_FDS_CAPABILITY is set to OFF then the specified function will be not be sent to DB2 for processing. In other words, it will be post processed.

If the HS_FDS_CAPABILITY is set to SKIP then the specified function will be stripped from the SQL statement sent to DB2. In other words the function will be ignored.

B.3.25 HS_FDS_ISOLATION_LEVEL

PropertyDescription
Default ValueCHG for DB2 UDB for iSeries, CS for DB2 UDB for z/OS, DB2/UDB
Range of Values{CHG|CS|RR|ALL|NC}
SyntaxHS_FDS_ISOLATION_LEVEL={CHG|CS|RR|ALL|NC}

HS_FDS_ISOLATION_LEVEL specifies the isolation level that is defined to the package when it is created. All SQL statements that are sent to the remote DRDA database are executed with this isolation level. Isolation level seriously affects performance of applications. Use caution when specifying an isolation level other than the default. For information on isolation levels, refer to your IBM database manuals.

The following table lists the isolation levels and their descriptions. The levels are specified in ascending order of control, with CHG having the least reliable cursor stability and RR having the most. Note that higher stability uses more resources on the server and can lock those resources for extended periods.

Table B-1 Isolation Levels and Their Descriptions

LevelDescription

CHG

Change (default for DB2 UDB for iSeries)

CS

Cursor Stability (default for DB2 UDB for Linux, Unix, and Windows, and DB2 UDB for z/OS)

RR

Repeatable Read

ALL

ALL

NC

No Commit


B.3.26 HS_FDS_PACKAGE_COLLID

PropertyDescription
Default ValueORACLEGTW
Range of ValuesAn alphanumeric string 1 to 18 characters in length
SyntaxHS_FDS_PACKAGE_COLLID=collection_id

HS_FDS_PACKAGE_COLLID specifies the package collection ID. Note that in DB2 UDB for iSeries, the collection ID is actually the name of an AS/400 library.


Note:

Any change to this parameter will cause a new package to be implicitly bound by the gateway. For DB2 for UDB iSeries, prior to attempting a connection, one should use the iSeries SQL command CREATE SCHEMA or CREATE COLLECTION to create an iSeries library with the name as specified for HS_FDS_PACKAGE_COLLID. This COLLECTION or SCHEMA should be created under the id specified in the CONNECT TO phrase of the Oracle SQL command CREATE DATABASE LINK.

B.3.27 HS_NLS_LENGTH_SEMANTICS

PropertyDescription
Default ValueBYTE
Range of valuesBYTE | CHAR
SyntaxHS_NLS_LENGTH_SEMANTICS = { BYTE R| CHAR }

This release of gateway has Character Semantics functionality equivalent to the Oracle Database Character Semantics, that is, NLS_LENGTH_SEMANTICS. When HS_NLS_LENGTH_SEMANTICS is set to CHAR, the (VAR)CHAR columns of UDB database are to be interpreted as having CHAR semantics. The only situation the gateway does not honor the HS_NLS_LENGTH_SEMANTICS=CHAR setting is when both Oracle database and the gateway are on the same multi-byte character set

B.3.28 HS_KEEP_REMOTE_COLUMN_SIZE

PropertyDescription
Default ValueOFF
Range of ValuesOFF | LOCAL | REMOTE | ALL
SyntaxHS_KEEP_REMOTE_COLUMN_SIZE = OFF | LOCAL |REMOTE |ALL
Parameter typeString

HS_KEEP_REMOTE_COLUMN_SIZE specifies whether to suppress ratio expansion when computing the length of (VAR)CHAR datatypes during data conversion from UDB database to the gateway, and then to the Oracle database. When it is set to REMOTE, the expansion is suppressed between the non-Oracle database to the gateway. When it is set to LOCAL, the expansion is suppressed between the gateway and Oracle database. When it is set to ALL, the expansion is suppressed from the non-Oracle database to the Oracle database.

When the parameter is set, the expansion is suppressed when reporting the remote column size, calculating the implicit resulting buffer size, and instantiating in the local Oracle database. This has effect only for remote column size from the non-Oracle database to Oracle database. If the gateway runs on Windows and HS_LANGUAGE=AL32UTF8, then you must not specify this parameter, as it would influence other ratio related parameter operation. It has no effect for calculating ratio for data moving from Oracle database to non-Oracle database through gateway during INSERT, UPDATE, or DELETE.

B.3.29 HS_FDS_RESULTSET_SUPPORT

PropertyDescription
Default ValueFALSE
Range of valuesTRUE | FALSE
SyntaxHS_FDS_RESULTSET_SUPPORT = { TRUE | FALSE }

Enables result sets to be returned from stored procedures. By default, all stored procedures do not return a result set to the user.


Note:

If you set this initialization parameter, you must do the following:
  • Change the syntax of the procedure execute statement for all existing stored procedures, to handle result sets.

  • Work in the sequential mode of Heterogeneous Services.


B.3.30 HS_FDS_REMOTE_DB_CHARSET

PropertyDescription
Default ValueNone
Range of valuesNot applicable
SyntaxHS_FDS_REMOTE_DB_CHARSET

This parameter is valid only when HS_LANGUAGE is set to AL32UTF8 and the gateway runs on Windows. As more Oracle databases and non-Oracle databases use Unicode as database character sets, it is preferable to also run the gateway in Unicode character set. To do so, you must set HS_LANGUAGE=AL32UTF8. However, when the gateway runs on Windows, the Microsoft ODBC Driver Manager interface can exchange data only in the double-byte character set, UCS2. This results in extra ratio expansion of described buffer and column sizes. To compensate, the gateway can re-adjust the column size if HS_FDS_REMOTE_DB_CHARSET is set to the corresponding non-Oracle database character set. For example, HS_FDS_REMOTE_DB_CHARSET=KO16KSC5601.

B.3.31 HS_FDS_SUPPORT_STATISTICS

PropertyDescription
Default ValueTRUE
Range of values{TRUE|FALSE}
SyntaxHS_FDS_SUPPORT_STATISTICS= {TRUE|FALSE}

We gather statistics from the non-Oracle database by default. You can choose to disable the gathering of remote database statistics by setting the HS_FDS_SUPPORT_STATISTICS parameter to FALSE.

B.3.32 HS_FDS_RSET_RETURN_ROWCOUNT

PropertyDescription
Default ValueFALSE
Range of values{TRUE|FALSE}
SyntaxHS_FDS_RSET_RETURN_ROWCOUNT= {TRUE|FALSE}

When set to TRUE, the gateway returns the row counts of DML statements that are executed inside a stored procedure. The row count is returned as a single row, single column result set of type signed integer.

When set to FALSE, the gateway skips the row counts of DML statements that are executed inside a stored procedure. This is the default behavior, and it is the behavior of 11.1 and older gateways.

B.3.33 HS_FDS_AUTHENTICATE_METHOD

PropertyDescription
Default ValueCLEARTEXT
Range of values{CLEARTEXT|ENCRYPT|ENCRYPT_BOTH|CLIENT|KERBEROS}
SyntaxHS_FDS_AUTHENTICATE_METHOD= {CLEARTEXT|ENCRYPT|ENCRYPT_BOTH|CLIENT|KERBEROS}

Specifies the way in which user ID and password are sent to the remote DB2 server and authenticated. Valid values are:

  • CLEARTEXT : user ID and password are sent in clear text to server (default).

  • ENCRYPT : password is sent encrypted to server.

  • ENCRYPT_BOTH : user ID and password are sent encrypted to server.

  • CLIENT : user ID is validated on the client side instead of by the server.

  • KERBEROS : uses Kerberos to authenticate user ID.

B.3.34 HS_FDS_ENCRYPT_SESSION

PropertyDescription
Default ValueNONE
Range of valuesNONE|SSL|DB2}
SyntaxHS_FDS_ENCRYPT_SESSION = {NONE|SSL|DB2}

Specifies the way the session to DB2 is encrypted. Valid values are:

  • NONE : data session is not encrypted (default).

  • SSL : Use SSL to encrypt data session (supported only by DB2 for iSeries).

  • DB2 : Use DB2 encryption protocol for data session (supported only by DB2 for LUW and DB2 for z/OS, and can be used only when authentication is CLEARTEXT, ENCRYPT, or ENCRYPT_BOTH).

B.3.35 HS_FDS_TRUSTSTORE_FILE

PropertyDescription
Default Valuenone
Range of valuespath to truststore file
SyntaxHS_FDS_TRUSTSTORE_FILE = path to truststore file

Specifies the path that specifies the location of the truststore file. The truststore file contains a list of the valid Certificate Authorities (CAs) that are trusted by the client machine for SSL server authentication.

B.3.36 HS_FDS_TRUSTSTORE_PASSWORD

PropertyDescription
Default Valuenone
Range of valuespassword
SyntaxHS_FDS_TRUSTSTORE_PASSWORD= password

Specifies the password required to access the truststore.

B.3.37 HS_FDS_SQLLEN_INTERPRETATION

PropertyDescription
Default Value64
Range of values{64|32}
SyntaxHS_FDS_SQLLEN_INTERPRETATION= {64|32}

This parameter is only valid for 64 bit platforms. ODBC standard specifies SQLLEN (of internal ODBC construct) being 64 bit on 64 bit platforms, but some ODBC driver managers and drivers violate this convention, and implement it as 32 bit. In order for the gateway to compensate their behavior, you need to specify HS_FDS_SQLLEN_INTERPRETATION=32 if you use these types of driver managers and driver.

PKS+RRPK<+A OEBPS/toc.htma Table of Contents

Contents

List of Figures

List of Tables

Title and Copyright Information

Preface

1 Introduction

2 Release Information

3 Using the Oracle Database Gateway for DRDA

4 Developing Applications

5 Error Messages, Diagnosis, and Reporting

A Oracle DB2 Data Dictionary Views

B Initialization Parameters

Index

PK|yaaPK<+AOEBPS/rel_info.htmK Release Information

2 Release Information

This chapter describes release information specific to the 11g release of the Oracle Database Gateway for DRDA. It includes the following sections:

2.1 Product Set

The following product components are included in the product installation media:

  • Oracle Database Gateway for DRDA, release 11.2

  • Oracle Net, release 11.2

2.2 Changes and Enhancements

The following sections describe the changes and enhancements unique to the 11g release of the gateway:

2.2.1 Gateway Password Encryption Tool

The Gateway Password Encryption tool (g4drpwd) has been replaced by a generic feature that is now part of Heterogeneous Services. Refer to Chapter 15, "Security Considerations" in Oracle Database Gateway Installation and Configuration Guide for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64 or Oracle Database Gateway Installation and Configuration Guide for Microsoft Windows for details.

2.2.2 CHAR Semantics

This feature allows the gateway to optionally run in CHAR Semantics mode. Rather than always describing UDB CHAR columns as CHAR(n BYTE), this feature describes them as CHAR(n CHAR) and VARCHAR(n CHAR).

2.2.3 Multi-byte Character Sets Ratio Suppression

This feature optionally suppresses the ratio expansion from UDB database to Oracle database involving multi-byte character set.

2.2.4 IPv6 Support

Besides full IPv6 support between Oracle databases and the gateway, IPv6 is also supported between this gateway and UDB databases.

2.2.5 Gateway Session IDLE Timeout

You can optionally choose to terminate long idle gateway sessions automatically with the gateway parameter HS_IDLE_TIMEOUT.

2.2.6 Result Sets and Stored Procedures

This release provides support for UDB stored procedures, which return result sets.

2.4 Known Problems

The problems that are documented in the following section are specific to the Oracle Database Gateway for DRDA, and are known to exist in this release of the product. If you have any questions or concerns about these problems, contact Oracle Support Services.

A current list of problems is available online. Contact your local Oracle office for information about accessing this online information.

2.5 Known Restrictions

The following restrictions are known to exist for the products in the 11g release. Restrictions are not scheduled to change in future releases. Refer to Chapter 4, "Developing Applications", for information or limitations when developing your applications.

2.5.1 DB2 Considerations

The following considerations exist in the 11g release:

2.5.1.1 DD Basic Tables and Views

The owner of DD basic tables and views is OTGDB2. This cannot be changed.

2.5.1.2 SUBSTR Function Post-Processed

The SUBSTR function can be used with the Oracle database in ways that are not compatible with a DRDA server, such as DB2 UDB for z/OS. Therefore, the SUBSTR function is post-processed. However, it is possible to allow the server to process it natively using the "Native Semantics" feature. Refer to Chapter 4, "Developing Applications", for details.

2.5.1.3 Data type Limitations

Refer to "DRDA Data type to Oracle Data type Conversion" for detailed information about data types

2.5.1.4 Null Values and Stored Procedures

Null values are not passed into, or returned from, calls to stored procedures through the gateway.

2.5.1.5 String Concatenation of Numbers

DB2 Universal Database does not support string concatenation of numbers. For example,

SELECT 2||2 FROM table@dblink

is not allowed.

2.5.1.6 GLOBAL_NAMES Initialization Parameter

If GLOBAL_NAMES is set to TRUE in the Oracle database INIT.ORA file, then in order to be able to connect to the gateway, you must specify the Heterogeneous Services (HS) initialization parameter, HS_DB_DOMAIN, in the Gateway Initialization Parameter file to match the value of the DB_DOMAIN parameter of the Oracle database. Refer to Oracle Database Gateway Installation and Configuration Guide for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64 or Oracle Database Gateway Installation and Configuration Guide for Microsoft Windows , depending on your platform, for more information.

2.5.1.7 DRDA Package and DB2 considerations

The gateway utilizes a package for statement execution. This package will be implicitly bound upon the first time the gateway connects to the target DB2 system. Ensure that the user ID connecting to the DB2 system has the necessary privileges to bind a package. Refer to Oracle Database Gateway Installation and Configuration Guide for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64 or Oracle Database Gateway Installation and Configuration Guide for Microsoft Windows , depending on your platform, for more information.

2.5.1.8 Date Arithmetic

In general, the following types of SQL expression forms do not work correctly with the gateway because of DB2 limitations:

date + number
number + date
date - number
date1 - date2

DB2 does not allow number addition or subtraction with date data types. The date and number addition and subtraction (date + number, number + date, date - number) forms are sent through to the DB2 where they are rejected.

Also, DB2 does not perform date subtraction consistently. When you subtract two dates (date1 - date2), differing interpretations of date subtraction in DB2 cause the results to vary by server.


Note:

Avoid date arithmetic expressions in all gateway SQL expressions until date arithmetic problems are resolved.

2.5.1.9 Row Length Limitation

Because of a restriction of the DRDA architecture, rows with aggregate length exceeding 32 KB in DRDA representation cannot be stored or retrieved.

2.5.1.10 LONG Data type in SQL*Plus

SQL*Plus cannot fetch LONG columns from the Oracle Database Gateway for DRDA.

2.5.1.11 Stored Procedures and Transaction Integrity

IBM DB2 has introduced a feature called Commit on Return for stored procedures. This feature allows DB2 to perform an automatic commit after a stored procedure runs successfully. This feature is enabled when the procedure is created. To ensure data integrity, the Oracle Database Gateway for DRDA does not support this feature in a heterogeneous environment. When attempting to call a stored procedure that has this feature enabled, through the gateway, the gateway will return an error, ORA-28526 or PLS-00201 (identifier must be declared).

2.5.2 SQL Limitations

The SQL limitations for Oracle Database Gateway for DRDA are described in the following sections:

2.5.2.1 Oracle SQL Command INSERT

When copying data from an Oracle database to a DRDA server the Oracle SQL command INSERT is not supported. The SQL*Plus COPY command must be used. Refer to Section 3.8, "Copying Data from Oracle Database to DRDA Server", for more information.

2.5.2.2 Oracle ROWID Column

The DB2 ROWID column is not compatible with the Oracle ROWID column. Because the ROWID column is not supported, the following restrictions apply:

  • UPDATE and DELETE are not supported with the WHERE CURRENT OF CURSOR clause. To update or delete a specific row through the gateway, a condition style WHERE clause must be used. (Bug No. 205538)

    When UPDATE and DELETE statements are used in precompiler and PL/SQL programs, they rely internally on the Oracle ROWID function.

  • Snapshots between Oracle database and DB2 are not supported.

    Snapshots rely internally on the Oracle ROWID column.

2.5.2.3 Oracle Bind Variables

Oracle bind variables become SQL parameter markers when used with the gateway. Therefore, the bind variables are subject to the same restrictions as SQL parameter markers.

For example, the following statements are not allowed:

WHERE :x IS NULL 
WHERE :x = :y 

2.5.2.4 CONNECT BY Is Not Supported

Oracle Database Gateway for DRDA does not support CONNECT BY in SELECT statements.

2.5.2.5 CALLBACK links

Oracle Database Gateway for DRDA does not support CALLBACK links. Trying a CALLBACK link with the gateway will return the following error message:

ORA-02025: All tables in the SQL statement must be at the remote database
PKiKKPK<+AOEBPS/using.htmq_ Using the Oracle Database Gateway for DRDA

3 Using the Oracle Database Gateway for DRDA

Using the Oracle Database Gateway for DRDA involves connecting to the corresponding gateway system and the remote DRDA database associated with the gateway. This chapter also describes how to process and use database links. It contains the following sections:

3.1 DRDA Gateway Features

This section describes the following DRDA gateway features:

3.1.1 CHAR Semantics

This feature allows the gateway to optionally run in CHAR Semantics mode. Rather than always describing UDB CHAR columns as CHAR(n BYTE), this feature describes them as CHAR(n CHAR) and VARCHAR(n CHAR). The concept is similar to Oracle database CHAR Semantics. You need to specify HS_NLS_LENGTH_SEMANTICS=CHAR gateway parameter to activate this option. Refer to Appendix B for more detail.

3.1.2 Multi-byte Character Sets Ratio Suppression

This feature optionally suppresses the ratio expansion from UDB database to Oracle database involving multi-byte character set. By default, Oracle Database Gateway for DRDA assumes the worst ratio to prevent data being truncated or insufficient buffer size situation. However, if you have specific knowledge of your UDB database and do not want the expansion to occur, you can specify HS_KEEP_REMOTE_COLUMN_SIZE parameter to suppress the expansion. Refer to Appendix B for more detail.

3.1.3 IPv6 Support

Besides full IPv6 support between Oracle databases and the gateway, IPv6 is also supported between this gateway and UDB database. Refer to the HS_FDS_CONNECT_INFO parameter in Appendix B for more detail.

3.1.4 Gateway Session IDLE Timeout

You can optionally choose to terminate long idle gateway sessions automatically with the gateway parameter HS_IDLE_TIMEOUT. Specifically, when a gateway session is idle for more than the specified time limit, the gateway session is terminated with any pending update rolled back

3.2 Processing a Database Link

The database and application administrators of a distributed database system are responsible for managing the database links that define paths to the Oracle Database Gateway for DRDA. The tasks are as follows:

3.2.1 Creating Database Links

To create a database link and define a path to a remote database, use the CREATE DATABASE LINK statement. The CONNECT TO clause specifies the remote user ID and password to use when creating a session in the remote database. The USING clause points to a tnsnames.ora connect descriptor.


Note:

If you do not specify a user ID and a password in the CONNECT TO clause, then the Oracle database user ID and password are used.

The following example creates a database link to access information in the DRDA server:

CREATE PUBLIC DATABASE LINK dblink 
CONNECT TO userid IDENTIFIED BY password  
USING 'tns_name_entry';

where:

dblink is the complete database link name.

user id is the user ID used to establish a session in the remote database. This user ID must be a valid DRDA server user ID. It must be authorized to any table or file on the DRDA server that is referenced in the SQL commands. Length restrictions on user IDs are dependent on the authorization system used by the DRDA server. In many cases this limit is eight characters, but in other cases, it may be longer. See DB2 platform documentation for limitations.

password is the password used to establish a session in the remote database. This password must be a valid DRDA server password. Length restrictions on passwords are dependent on the authorization system used by the DRDA server. In many cases this limit is eight characters, but in other cases, it may be longer. See DB2 platform documentation for limitations.

tns_name_entry specifies the Oracle Net connect descriptor used to identify the gateway.

Guidelines for Database Links

Database links are active for the duration of a gateway session. If you want to close a database link during a session, then use the ALTER SESSION CLOSE DATABASE LINK dblink statement.

3.2.2 Dropping Database Links

You can drop a database link with the DROP DATABASE LINK statement. For example, to drop the public database link named DBLINK, use the statement:

DROP PUBLIC DATABASE LINK dblink;

Note:

A database link should not be dropped if it is required to resolve an in-doubt distributed transaction. Refer to Oracle Database Administrator's Guide for additional information about dropping database links.


See Also:

Oracle Database Administrator's Guide for additional information about dropping database links

3.2.3 Examining Available Database Links

The data dictionary of each database stores the definitions of all the database links in that database. The USER_DB_LINKS data dictionary view shows the privately defined database links, that is, those accessible to the current Oracle user. The ALL_DB_LINKS data dictionary views show all accessible (public and private) database links.

3.2.4 Limiting the Number of Active Database Links

You can limit the number of connections from a user process to remote databases with the parameter OPEN_LINKS. This parameter controls the number of remote connections that any single user process can concurrently use with a single SQL statement. Refer to Oracle Database Reference for additional information about limiting the number of active database links.

3.3 Accessing the Gateway

To access the gateway, complete the following steps on the Oracle database:

  1. Login to the Oracle Database

  2. Create a database link to the DRDA Database

  3. Retrieve data from the DRDA Database

Login to the Oracle Database

Login to the Oracle database to access the gateway

Create a database link to the DRDA Database

For example, use:

CREATE PUBLIC DATABASE LINK DRDA
CONNECT TO ORADRDA IDENTIFIED BY oracle_pw 
USING 'tns_name_entry' 

Retrieve data from the DRDA Database

This query fetches the TABLE table in the schema SECURE, using the name ORADRDA as the DRDA server user profile. The ORADRDA user profile must have the appropriate privileges on the DRDA server to access the SECURE.TABLE files:

SELECT * FROM SECURE.TABLE@DRDA

The following is an example of the error messages that are displayed if insufficient privileges are displayed:

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Oracle][ODBC DB2 Wire Protocol driver][UDB DB2 for Windows, UNIX, and
Linux]ORADRDA DOES NOT HAVE PRIVILEGE TO PERFORM OPERATION SELECT ON THIS
OBJECT SECURE.TABLE.
ORA-02063: preceding 2 lines from DRDA

3.4 Accessing i5/OS File Members

Access to i5/OS files and file members is not specifically controlled by DRDA or the gateway. However, DB2 UDB for iSeries uses a naming convention that implies that the file member name is the same as the name of the file being addressed. For example, accessing schema.table implies that table is the file name and also that table is the file member name being accessed.

To access file members with names that differ from the associated file name, you must create a view within the file so that DB2 UDB for iSeries can reference the correct file member.

One method for creating this view involves issuing the i5/OS command Create Logical File (CRTLF). This action creates a logical association between the file name and the file member name.


See Also:

For additional information, refer to the i5/OS Command Language (CL) documentation or to the DB2 UDB for iSeries SQL reference document.

3.5 Using the Synonym Feature

You can provide complete data, location, and network transparency by using the synonym feature of Oracle database. When a synonym is defined, the user need not know the underlying table or network protocol being used. A synonym can be public, which means it is available to all Oracle users. A synonym can also be defined as private, available only to the user who created it. Refer to Oracle Database Reference for details on the synonym feature.

The following statement creates a system-wide synonym for the EMP file in the DRDA server with ownership of ORACLE:

CREATE PUBLIC SYNONYM EMP FOR ORACLE.EMP@DRDA

3.6 Performing Distributed Queries

The Oracle Database Gateway technology enables the execution of distributed queries that join data in an Oracle database and in DRDA servers and data from any other data store for which Oracle provides a gateway. These complex operations can be completely transparent to the users requesting the data.

The following example joins data between an Oracle database, DB2 UDB for z/OS, and a DRDA server:

SELECT o.custname, p.projno, e.ename, sum(e.rate*p.hours)
FROM orders@DB2 o, EMP@ORACLE7 e, projects@DRDA p
WHERE o.projno = p.projno 
AND p.empno = e.empno
GROUP BY o.custname, p.projno, e.ename

A combination of views and synonyms, using the following SQL statements, keeps the process of distributed queries transparent to the user:

CREATE SYNONYM orders for orders@DB2;
CREATE SYNONYM PROJECTS for PROJECTS@DRDA;
CREATE VIEW details (custname,projno,ename,spend)
AS 
SELECT o.custname, p.projno, e.ename, sum(e.rate*p.hours)
FROM orders o, EMP e, projects p
WHERE o.projno = p.projno
AND p.empno = e.empno
GROUP BY o.custname, p.projno, e.ename

The following SQL statement retrieves information from these three data stores in one command:

SELECT * FROM DETAILS;

The results of this command are:

CUSTNAME   PROJNO     ENAME      SPEND
---------  ---------  ---------  ---------
ABC Co.    1         Jones      400
ABC Co.    1         Smith      180
XYZ Inc.   2         Jones      400
XYZ Inc.   2         Smith      180

3.6.1 Two-Phase Commit Processing

To fully participate in a two-phase commit transaction, a server must support the PREPARE TRANSACTION statement. The PREPARE TRANSACTION statement ensures that all participating databases are prepared to COMMIT or to ROLLBACK a specific unit of work.

Oracle database supports the PREPARE TRANSACTION statement. Any number of Oracle database can participate in a distributed two-phase commit transaction. The PREPARE TRANSACTION statement is performed automatically when a COMMIT is issued explicitly by an application or implicitly at the normal end of the application.

The gateway does not support the PREPARE TRANSACTION statement. This limits the two-phase commit protocol when the gateway participates in a distributed transaction. The gateway becomes the commit focal point site of a distributed transaction. The gateway is configured as commit/confirm, so it is always the commit point site, regardless of the commit point strength setting. The gateway commits the unit of work after verifying that all Oracle databases in the transaction have successfully committed their work. The gateway must coordinate the distributed transaction so that only one gateway can participate in a two-phase commit transaction.

Two-phase commit transactions are recorded in the HS_TRANSACTION_LOG table (see the initialization parameter HS_FDS_TRANSACTION_LOG), which is created during installation. This table is created when the o2pc.sql script is run. The owner of this table also owns the package. Refer to "DRDA Gateway Package Binding Considerations" on Oracle Database Gateway Installation and Configuration Guide for AIX 5L Based Systems (64-Bit), HP-UX Itanium, Solaris Operating System (SPARC 64-Bit), Linux x86, and Linux x86-64 or Oracle Database Gateway Installation and Configuration Guide for Microsoft Windows, depending on your platform, for more information.

3.6.2 Distributed DRDA Transactions

Because the HS_TRANSACTION_LOG table is used to record the status of a gateway transaction, this table must be in at the database where the DRDA update takes place. Therefore, all updates that take place over the gateway must be local to the IBM database.


Note:

Updates to the HS_TRANSACTION_LOG table cannot be part of an IBM distributed transaction.

For additional information about the two-phase commit process, refer to Oracle Database Administrator's Guide.

3.7 Replicating in a Heterogeneous Environment

Oracle Database Gateway for DRDA provides a number of options for replicating Oracle and non-Oracle data throughout the enterprise.

Oracle Database Triggers

When updates are made to Oracle database, synchronous copies of Oracle and non-Oracle data can be maintained automatically by using Oracle database triggers.

Oracle Snapshots

Oracle Database Gateway for DRDA can use the Oracle snapshot feature to automatically replicate non-Oracle data into Oracle database. The complete refresh capability of Oracle snapshot can be used to propagate a complete copy or a subset of the non-Oracle data into Oracle database at user-defined intervals.

3.8 Copying Data from Oracle Database to DRDA Server

The COPY command enables you to copy data from Oracle database to a DRDA server. The Oracle SQL INSERT command is not supported. If you use the INSERT command:

INSERT INTO DRDA_table SELECT * FROM local_table

then the following message is displayed:

ORA-2025: All tables in the SQL statement must be at the remote database

To copy data from your Oracle database to the DRDA server, use:

COPY FROM username/password@connect_identifier - 
INSERT destination_table -  
USING query 

For example, to select all rows from the local Oracle EMP table, insert them into the EMP table on the DRDA server, and commit the transaction, use:

COPY FROM scott/tiger@ORACLE -
INSERT scott.EMP@DRDA -
USING SELECT * FROM EMP

The SQL*Plus COPY command supports APPEND, CREATE, INSERT, and REPLACE commands. However, INSERT is the only command supported when copying to the DRDA server. For more information about the COPY command, refer to SQL*Plus User's Guide and Reference.

3.9 Copying Data from DRDA Server to Oracle Database

The CREATE TABLE command enables you to copy data from a DRDA server to Oracle database. To create a table on your Oracle database and to insert rows from a DRDA server table, use:

CREATE TABLE table_name 
AS query 

A SQL INSERT into an Oracle table can be done selecting data from the gateway as follows:

INSERT INTO local_table SELECT * FROM drda_table

The following example creates the table EMP in your local Oracle database and inserts the rows from the EMP table on the DRDA server:

CREATE TABLE EMP
AS SELECT * FROM scott.EMP@DRDA

Alternatively, you can use the SQL*Plus COPY command to copy data from a DRDA server to Oracle database. For more information about the COPY command, refer to SQL*Plus User's Guide and Reference.

3.10 Tracing SQL Statements

SQL statements issued through the gateway can be changed before reaching the DRDA database. These changes are made to make the format acceptable to the gateway or to make Oracle SQL compatible with DRDA server SQL. Oracle database and the gateway can change the statements depending on the situation.

For various reasons, you might need to assess whether the gateway has altered the statement correctly or whether the statement could be rewritten to improve performance. SQL tracing is a feature that allows you to view the changes made to a SQL statement by the Oracle database or the gateway.

SQL tracing reduces gateway performance. Use tracing only when testing and debugging your application. Do not enable SQL tracing when the application is running in a production environment. For more information about enabling SQL tracing, refer to the section on "SQL Tracing and the Gateway" in Chapter 5, "Error Messages, Diagnosis, and Reporting".

PKqqPK<+AOEBPS/errors.htm, Error Messages, Diagnosis, and Reporting

5 Error Messages, Diagnosis, and Reporting

This chapter provides information about error messages and error codes specific to the Oracle Database Gateway for DRDA. It contains the following sections:

5.1 Interpreting Gateway Error Messages

The gateway architecture consists of different components. Any component may detect and report an error condition while processing SQL statements that refer to one or more DRDA database tables. This means that errors can be complex, involving error codes and supporting data from multiple components. In all cases, however, the application ultimately receives a single error code or a return code.

As most gateway messages exceed the 70 character message area in the Oracle SQL Communications Area (SQLCA), the programmatic interfaces and Oracle Call Interfaces, that you use to access data through the gateway should use SQLGLM or OERHMS to view the entire text of messages. Refer to the programmer's guide to the Oracle precompilers for additional information about SQLGLM, and refer to the Oracle C++ Call Interface Programmer's Guide for additional information about OERHMS.

Errors encountered when using the gateway can originate from many sources, as follows:

  • Errors detected by the Oracle database

  • Errors detected by the gateway

  • Errors detected in the DRDA software, either on the client or server side

  • Communication errors

  • Errors detected by the server database

5.1.1 Errors Detected by the Gateway

Errors detected by the Oracle database are reported back to the application or tool with the standard ORA type message. Refer to Oracle Database Error Messages for descriptions of these errors. For example, the following error occurs when an undefined database link name is specified:

ORA-02019:  connection description for remote database not found 

Errors in the ORA-9100 to ORA-9199 range are reserved for the generic gateway layer (components of the gateway that are not specific to DRDA). Messages in this range are documented in Oracle Database Error Messages.

5.1.2 Errors Detected in the DRDA Software

Errors detected in the DRDA gateway, on the client or server side, are usually reported with error ORA-28500, followed by a gateway-specific expanded error message. There are two return codes reported in the expanded message:

  • drc specifies DRDA-specific errors.

  • grc specifies generic gateway errors detected in the DRDA layer. These errors are documented in the Oracle Database Error Messages.


Note:

Error code ORA-28500 was error code ORA-09100 prior to gateway version 8. Error code ORA-28501 was listed as ORA-09101 prior to gateway version 8.

The values in parentheses that follow the drc values are used for debugging by Oracle Support Services. The errp field indicates the program (client or server) that detected the error. If present, errmc lists any error tokens.

For example, the following error message is returned when the database name specified with the DRDA_REMOTE_NAME parameter in the initsid.ora file is not defined at the DRDA server:

ORA-28500: connection from ORACLE to non-Oracle system returned the message:

5.1.3 Errors Detected by the DRDA Server

Errors detected by the DRDA server are reported with an ORA-28500 followed by a gateway-specific expanded error message. Refer to IBM documentation for the specific database being used. Also refer to Mapped Errors in this chapter for some SQL errors that get translated.


Note:

Error code ORA-28500 was error code ORA-09100 prior to gateway version 8. Error code ORA-28501 was listed as ORA-09101 prior to gateway version 8.

For example, the following error message indicates that the DRDA server did not find the DB2 database name specified in the HS_FDS_CONNECT_INFO parameter in the initSID.ora file:

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Oracle][ODBC DB2 Wire Protocol driver]Remote Database Not Found: UNKNOWN

5.2 Mapped Errors

Some SQL errors are returned from the DRDA server and are translated to an Oracle error code. This is needed when the Oracle instance or gateway provides special handling of an error condition.

The following is an example of a translated object does not exist error:

ORA-00942: table or view does not exist
[Oracle][ODBC DB2 Wire Protocol driver][UDB DB2 for OS/390 and z/OS]PCASTRO.XXX IS AN UNDEFINED NAME.

5.3 SQL Tracing and the Gateway

When developing applications, it is often useful to be able to see the exact SQL statements that are being passed through the gateway. The following sections describe setting appropriate trace parameters and setting up the debug gateway.

5.3.1 SQL Tracing in the Oracle Database

Oracle database has a command for capturing the SQL statement that is actually sent to the gateway. This command is called EXPLAIN PLAN. The EXPLAIN PLAN command is used to determine the execution plan that Oracle database follows to execute a specified SQL statement. This command inserts a row, which describes each step of the execution plan, into a specified table. If you are using cost-based optimization, then this command also determines the cost of executing the statement. The syntax of the command is:

EXPLAIN PLAN [ SET STATEMENT_ID = 'text' ]
    [ INTO [schema.]table[@dblink] ] FOR statement 

For detailed information on this command, refer to the Oracle Database SQL Language Reference.


Note:

In most cases, EXPLAIN PLAN should be sufficient to extract the SQL statement that is actually sent to the gateway, and thus sent to the DRDA server. However, certain SQL statement form have post-processing performed on them in the gateway.

PK2,,PK<+A OEBPS/lot.htm  List of Tables PKY PK <+Aoa,mimetypePK<+AtXS:iTunesMetadata.plistPK<+AYuMETA-INF/container.xmlPK<+A[pTOOEBPS/cover.htmPK<+AүOEBPS/title.htmPK<+AJ)OEBPS/intro.htmPK<+AM_/ )OEBPS/a_db2dd.htmPK<+A6m61OEBPS/preface.htmPK<+AڨywOEBPS/index.htmPK<+AڮYYOEBPS/img/ch14_02.gifPK<+AѤ88OOEBPS/img/ch01_01.gifPK<+AjQiLiOEBPS/img/ch14_01.gifPK<+A3M]TOEBPS/img_text/ch14_01.htmPK<+Aݑ#OEBPS/img_text/ch14_02.htmPK<+AjOOEBPS/img_text/ch01_01.htmPK<+AbwFEOEBPS/dev_apps.htmPK<+A2qv 8 3 IOEBPS/toc.ncxPK<+AxՖxscUOEBPS/content.opfPK<+ApX pOEBPS/lof.htmPK<+A_ (vOEBPS/dcommon/prodbig.gifPK<+AY@ }|OEBPS/dcommon/doclib.gifPK<+AlQpp}OEBPS/dcommon/oracle-logo.jpgPK<+A7OEBPS/dcommon/contbig.gifPK<+A"OEBPS/dcommon/darbbook.cssPK<+AMά""!oOEBPS/dcommon/O_signature_clr.JPGPK<+APz  OEBPS/dcommon/feedbck2.gifPK<+A- OEBPS/dcommon/feedback.gifPK<+Aː5 OEBPS/dcommon/booklist.gifPK<+AN61j! OEBPS/dcommon/cpyr.htmPK<+A!:3.3 OEBPS/dcommon/masterix.gifPK<+AeӺ1,_5 OEBPS/dcommon/doccd.cssPK<+A7 7 OEBPS/dcommon/larrow.gifPK<+A#9 OEBPS/dcommon/indxicon.gifPK<+AS'"g< OEBPS/dcommon/leftnav.gifPK<+Ahu,= OEBPS/dcommon/uarrow.gifPK<+Al-OJ@ OEBPS/dcommon/oracle.gifPK<+A(I OEBPS/dcommon/index.gifPK<+AGC J OEBPS/dcommon/bookbig.gifPK<+AJV^T OEBPS/dcommon/rarrow.gifPK<+A枰pkW OEBPS/dcommon/mix.gifPK<+Ao"nR M Y OEBPS/dcommon/doccd_epub.jsPK<+Av I Td OEBPS/dcommon/toc.gifPK<+A r~$e OEBPS/dcommon/topnav.gifPK<+A1FA g OEBPS/dcommon/prodicon.gifPK<+A3( # j OEBPS/dcommon/bp_layout.cssPK<+Ax[?: x OEBPS/dcommon/bookicon.gifPK<+Ap*c^} OEBPS/dcommon/conticon.gifPK<+Aʍ< OEBPS/dcommon/blafdoc.cssPK<+A+&; OEBPS/dcommon/rightnav.gifPK<+Aje88 OEBPS/dcommon/oracle-small.JPGPK<+Aއ{&! OEBPS/dcommon/help.gifPK<+AS+RRY OEBPS/app_initparam.htmPK<+A|yaa & OEBPS/toc.htmPK<+AiKKو OEBPS/rel_info.htmPK<+Aqq2 OEBPS/using.htmPK<+A2,,F OEBPS/errors.htmPK<+AY  pr OEBPS/lot.htmPK99!y