8.0.1 Mobile Link の推奨 ODBC ドライバ
The MobiLink server uses ODBC 3.0 to connect to the
consolidated database. The information presented here is intended to help you
choose which ODBC driver to use with your consolidated database.
In theory MobiLink should be able to use as a
consolidated database any ODBC 3.0 data source that supports the optional
ODBC functionality required by MobiLink, but in practice ODBC implementations
vary widely.
Different ODBC drivers have different capabilities, and the MobiLink server
attempts to adapt to these by querying the driver. Typically the driver also
has behavior (or bugs) that can't be detected by querying the driver. For
these we test the driver in an attempt to find viable workarounds.
Some workarounds are used for different consolidated database vendors, while
others are specific to a vendor and even a specific version.
Once we have identified a set of workarounds that are
required for a driver, we update the MobiLink server so that it recognizes
the version of the driver, and automatically associates the set of
workarounds with that version.
For some ODBC drivers, we are not able to develop viable
workarounds for all issues. In these cases, you still may be able to use the
driver if your synchronizations do not require the missing
driver functionality.
For ease of testing, and to allow MobiLink to apply
workarounds to drivers that it does not recognize, the MobiLink workarounds
can be set by the undocumented –hw command-line switch. This switch
and its associated workarounds are not documented because indiscriminate
use of workarounds could cause data corruption or software errors.
Note that after workaround sets are identified, we can make future versions
of MobiLink apply the associated hidden workaround switches
automatically.
Thus if you chose to use hidden
workarounds directly, you may not need them with newer versions of the
MobiLink server. Continued use of hidden switches with a newer MobiLink
may even cause problems or reduced performance.
Driver testing
We use two types of testing of ODBC drivers with MobiLink.
The first, referred to as MLR, is a comprehensive suite of regression tests
that exercise synchronization functionality. If some specific
MLR tests fail, the driver may still be suitable as long as your
synchronizations do not rely on the functionality that failed. For example,
if the only MLR tests that fail are for synchronization of LONG BINARY data,
then the driver may still be suitable for you if you are not using MobiLink
to synchronize LONG BINARY data.
The second type of testing, referred to as MLB, is high-load
testing involving many clients synchronizing simultaneously with a MobiLink
server running on a multi-processor computer. We have found that some drivers
will fail with multiple simultaneous connections or under high load while
running on multiple processors. In these cases, you may need to restrict
MobiLink to run on a single processor (via the -zt 1 switch) or
limit it to a single worker thread (via the -w 1 switch).
Recommended Drivers
As a result of our testing, we recommend the following ODBC
drivers for use with version 8.0.1 of the MobiLink server. Unless specified
otherwise, the recommendations refer to the Windows version of MobiLink.
The following sections list the recommended ODBC driver for
different types of consolidated database. In some cases, alternative drivers
are also listed. Click on one of the consolidated DBMS types below to see
recommended driver information for using MobiLink with that type of DBMS:
Sybase Adaptive Server Anywhere (ASA)
Sybase Adaptive Server
Enterprise (ASE)
Oracle 8, 8i & 9i
Microsoft SQL Server 7 and 2000
IBM DB2 UDB 5.2, 7.1, 7.2
Sybase Adaptive Server Anywhere (ASA)
Driver
|
Adaptive Server Anywhere 8.0
|
Version
|
8.0.1
|
Status
|
Recommended for use with MobiLink.
|
Client s/w
|
None.
|
OS
|
Win32, Solaris, Linux, AIX
|
Workarounds applied by MobiLink
|
-hwc+o+
|
Other required workarounds
|
None
|
Pros
|
All MLR and MLB tests pass.
|
Cons
|
None.
|
Notes
|
The MLR tests all pass with the ODBC driver included with ASA, and the
MLB testing shows no problems with multiple clients simultaneously
synchronizing through a MobiLink server running on a multi-processor
computer.
On Unix and Linux, make sure the directory containing the symbolic
link to your ASA ODBC driver is first in your LD_LIBRARY_PATH.
This prevents the loading of the driver manager used
by the non-ASA ODBC drivers.
The ASA ODBC driver must not be used with this driver manager.
|
ASA 6.0.4, 7.0.3, 7.0.4 and 8.0.0 drivers also work with MobiLink
without additional workarounds.
Sybase Adaptive Server Enterprise
(ASE)
Driver
|
iAnywhere Solutions 8 - Sybase ASE ODBC Driver
DataDirect Sybase Wire Protocol ODBC Driver
|
Version
|
4.00.00.34 (Win32), 4.00.00.00 (Solaris, Linux, AIX)
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
None
|
OS
|
Win32, Solaris, Linux, AIX
|
Workarounds applied by MobiLink
|
-hwf+i+j+t+v+w+A+
|
Other required workarounds
|
-hwC+
|
Pros
|
All MLR tests pass.
All MLB tests pass using statement-based uploads only.
|
Cons
|
Synchronizations with cursor-based uploads fail under heavy load.
|
Notes
|
When setting up the DSN, on Win32, check the "Enable Describe Parameter" option and select the "2-Full"
option for Prepare Method on Performance tab; on Solaris, Linux and AIX, set "OptimizePrepare=2"
and other attributes using defaults. Setting "OptimizePrepare=3" and "SelectMethod=1" together would
block ASE server.
The driver has problems calling ASE 12.5 stored procedures which have output values, but not ASE 12
stored procedures. The -hwC+ worksround solves the problem.
On Unix, the driver doesn't show the correct minor version number.
The driver name is wqase17.so and the file date is Jun 17, 2002.
The bug will be fixed in an EBF.
|
Driver
|
DataDirect Sybase Wire Protocol ODBC Driver
|
Version
|
4.10.00.30 (Win32), 4.10.00.28 (Solaris, Linux, AIX)
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
None
|
OS
|
Win32, Solaris, Linux, AIX
|
Workarounds applied by MobiLink
|
-hwf+i+j+t+v+w+A+
|
Other required workarounds
|
-hwC+
|
Pros
|
All MLR tests pass.
All MLB tests pass using statement-based uploads only.
|
Cons
|
Synchronizations with cursor-based uploads fail under heavy load.
|
Notes
|
When setting up the DSN, on Win32, check the "Enable Describe Parameter" option and select the "2-Full"
option for Prepare Method on Performance tab; on Solaris, Linux and AIX, set "OptimizePrepare=2"
and other attributes using defaults. Setting "OptimizePrepare=3" and "SelectMethod=1" together would
block ASE server.
The performance of this driver (4.1) is better than the 4.0 driver.
|
Oracle 8, 8i & 9i
We have found the greatest variability
between driver versions with Oracle's ODBC drivers. In many
cases, new bugs have appeared in subsequent versions of the
ODBC driver so if you have an Oracle ODBC driver that works
for you, then we recommend that you continue to use it. Most
Oracle produced ODBC drivers seem to have multi-threading issues.
Driver
|
iAnywhere Solutions 8 - Oracle 8, 8i & 9i
DataDirect Oracle ODBC Driver
|
Version
|
4.00.00.31 (Win32), 4.00.0000 (Solaris, Linux)
|
Status
|
Recommended for use with MobiLink
|
Client s/w
|
Net8 8.1.7.0.0, Net8 8.1.7.0.1 (Linux), Net 9.0.1.1.1
|
OS
|
Win32, Solaris, Linux
|
Workarounds applied by MobiLink
|
-hwf+i+k+w+A+
|
Other required workarounds
|
-hwC+ required for cursor based upload scripts,
-hwF+ required for Oracle 8.1.6.
|
Pros
|
Pass all MLR tests;
Passes MLB tests.
|
Cons
|
The Oracle TIMESTAMP type is not supported by this driver.
This driver has
problems with double-hyphen comments and unnecessary semicolons.
|
Notes
|
This driver is the best choice for Oracle 8, 8i & 9i.
When setting up the DSN, on Win32, don't check "Enable Static Cursors for
Long Data"; on Unix, don't set EnableStaticCursorsForLongData=1,
it will adversely affect MobiLink performance.
"Application Using Threads" should always be checked on Win32 or
"ApplicationUsingThreads=1" should be set on Unix.
On Linux, Net8 version 8.1.7.0.1 is required, plus
a patch that addresses Oracle bugs 1489496 and 1467074.
On Unix, unset the LC_MESSAGES enviroment variable or set the LC_MESSAGES=en_US.
Improper setting of LC_MESSAGES will make the driver unusable.
It's best if the character set of the Oracle client
is the same as the database server character set. If they are
different, there are many ways mentioned in Oracle documents to
avoid the problem, the simplest way is setting the NLS_LANG enviroment variable on the
client side. For example, on Unix, if the charset of consolidated database
is WE8ISO8859P1, export NLS_LANG on the command line as
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
For Oracle 8.1.6 server, the workaround -hwF+ needs to fix the script
fetching problem.
On Unix, the driver doesn't show up the correct minor version number.
The driver name is wqor817.so and the file date is Jun 17, 2002.
|
Driver
|
DataDirect Oracle Wire Protocol ODBC Driver
|
Version
|
4.00.00.32
|
Status
|
Not Recommended for use with MobiLink
|
Client s/w
|
None
|
OS
|
Win32, Solaris, Linux, AIX
|
Workarounds applied by MobiLink
|
-hwf+i+k+w+A+
|
Other required workarounds
|
None
|
Pros
|
Passes most MLR tests.
|
Cons
|
BLOB, CLOB, LONG and LONG RAW tests for the new-row and
old-row conflict-resolution scripts
(new_row_cursor, old_row_cursor,
upload_new_row_insert, upload_old_row_insert) failed.
This driver cannot handle BLOB or LONG RAW data of zero length.
|
Driver
|
Oracle ODBC Driver
|
Version
|
9.00.11.00
|
Status
|
Not recommended for use with MobiLink.
|
Client s/w
|
Oracle Net 9.0.1.1.1
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
-hwd+k+
|
Other required workarounds
|
None
|
Pros
|
Passes most MLR tests.
Passes MLB tests when run with a single MobiLink worker thread.
|
Cons
|
The Oracle TIMESTAMP type is not supported by this driver.
Fails MLB tests with conversion errors when
run with multiple MobiLink worker threads.
For statement-based uploads,
LONG and LONG RAW synchronization failed, and
the tests for zero-length BLOB and CLOB failed with a crash.
For cursor-based uploads, LONG, BLOB and CLOB conflict-resolution
tests failed.
The test for inserting the username as an extra column (or parameter)
to the new row (new_row_cursor, upload_new_row_insert)
and old row (old_row_cursor, upload_old_row_insert) scripts failed.
|
Notes
|
In DSN settings, SQLGetData
Extensions should be checked.
This driver tends to fail with multiple
simultaneous synchronizations even when running only on
a single processor. Therefore we do not recommend it.
The failure typically occurs as a conversion error
("ORA-01461 can bind a LONG value only for insert into a
LONG column" or "ORA-01460 unimplemented or unreasonable
conversion requested").
You can restrict it to work on only
one synchronization at a time by limiting the number of
MobiLink worker threads to one (via ?w 1), but this
will seriously limit throughput performance.
|
Driver
|
Oracle ODBC Driver
|
Version
|
8.0.5.8.0
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
Net8 8.0.5.0.0 or 8.0.5.0.3
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
-hwd+h+k+r+s+
|
Other required workarounds
|
?zt 1 (to restrict execution to a single processor)
|
Pros
|
Passes most MLR tests.
Passes MLB tests when run on a single processor.
|
Cons
|
Tests for zero-length string and binary values fail.
LONG and
LONG RAW synchronization tests fail when using statement-based uploads.
BLOB tests fail when using cursor-based uploads.
Fails MLB tests when run on multiple processors.
|
Notes
|
When run
under high load from multiple connections on multiple
processors, an application exception will eventually
occur in an Oracle ODBC driver DLL. Typically this
occurs as an unknown exception (0xebad0000) in
ORA805.DLL (which is called from OCI.DLL). On a
multiple-processor computer, you can restrict MobiLink
(and hence the ODBC driver) to execute on a single
processor by using the ?zt 1 MobiLink command-line
option.
|
Driver
|
Oracle ODBC Driver
|
Version
|
8.0.5.10.0
|
Status
|
Not recommended for use with MobiLink.
|
Client s/w
|
Net8 8.0.5.0.0
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
-hwd+f+h+k+p+r+s+
|
Other required workarounds
|
-hwp-q+
|
Pros
|
Passes most MLR tests.
|
Cons
|
Fails a few MLR tests with "ORA-933:
SQL command not properly ended" errors. Fails MLR
tests for LONG VARCHAR and LONG BINARY with "ORA-24801:
illegal parameter value in OCI lob function" errors.
Fails MLB tests with "option value changed" and
"Invalid attribute/option identifier <0>" errors.
|
Notes
|
We were unable to determine the
cause of the ORA-933 errors in the MLR tests.
With version 8.0.5.10.0 of the
Oracle ODBC driver, the MLB tests could not be run at
all. The tests failed from driver errors about invalid
attribute/option identifier and changed option values.
The same problem occurs with version 8.0.5.9.0 of the
Oracle ODBC driver.
We have not been able to determine a
viable workaround for these issues, but we are aware
that some customers are able to use this driver
successfully.
|
Driver
|
Oracle ODBC Driver
|
Version
|
8.1.6.2.0
|
Status
|
Not recommended for use with MobiLink.
|
Client s/w
|
Net8 8.1.6.0.0
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
None
|
Other required workarounds
|
-hwd+r+ ?s 1
|
Pros
|
Passes most MLR tests.
|
Cons
|
Fails MLR tests for LONG VARCHAR and
LONG BINARY columns.
MLR test with REAL columns
failed because values uploaded were slightly different
when downloaded. This is yet another good reason to stay away from
imprecise types like REAL.
Need to disable bulk fetching (via
?s 1). Since rows must be fetched one at a time download
performance is adversely affected.
|
Notes
|
MLB tests have not been performed
with this driver. It may have multi-threaded problems as
do all the Oracle ODBC drivers for which we have been
able to do MLB testing.
|
Driver
|
Oracle ODBC Driver
|
Version
|
8.1.7.0.0
|
Status
|
Not recommended for use with MobiLink.
|
Client s/w
|
Net8 8.1.7.0.0
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
None
|
Other required workarounds
|
-hwd+h+k+r+
|
Pros
|
Passes most MLR tests.
|
Cons
|
Fails MLR tests for LONG VARCHAR and
LONG BINARY with "ORA-24801: illegal parameter value in
OCI lob function" errors. Fails MLB tests with
"option value changed" and "Invalid attribute/option
identifier <0>" errors.
|
Notes
|
The MLB tests could not be run at all.
The tests failed from driver errors
about invalid attribute/option identifier and changed
option values.
We have not been able to determine a
viable workaround for this issue, but we are aware that
some customers are able to use this driver successfully.
|
Driver
|
Oracle ODBC Driver
|
Version
|
8.1.7.2.0
|
Status
|
Not recommended for use with MobiLink.
|
Client s/w
|
Net8 8.1.7.0.0
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
None
|
Other required workarounds
|
-hwd+h+k+n+r+
|
Pros
|
Passes most MLR tests. Passes MLB
tests when run with a single MobiLink worker thread.
|
Cons
|
Fails many MLR tests when executing
a stored procedure that is part of the setup for several
tests. Fails MLB tests with conversion errors when
run with multiple MobiLink worker threads.
|
Notes
|
Version 8.1.7.2.0 of the Oracle ODBC
driver (with Net8 8.1.7.0.0) tends to fail with multiple
simultaneous synchronizations even when running only on
a single processor. Therefore we do not recommend it.
The failure typically occurs as a conversion error
("ORA-01461 can bind a LONG value only for insert into a
LONG column" or "ORA-01460 unimplemented or unreasonable
conversion requested").
You can restrict it to work on only
one synchronization at a time by limiting the number of
MobiLink worker threads to one (via ?w 1), but this
will seriously limit throughput performance.
|
Microsoft SQL Server 7 and 2000
Important: With any
version of SQL Server, you should specify "SET NOCOUNT ON" as
the first statement in all stored procedures or SQL batches
executed via ODBC. Without this option, a "number of rows
affected" message is sent to MobiLink for each statement
executed. If you are doing a relatively large number of
inserts, updates, and select into statements, these messages
can fill network buffers resulting in data being lost
without any indication that it is being lost!
Driver
|
Microsoft SQL Server ODBC Driver
|
Version
|
3.60.03.19 (for SQL Server 7)
2000.80.194.00 (for SQL Server 2000)
|
Status
|
Recommended for use with MobiLink.
|
Client s/w
|
None
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
-hwq+e+C+ ( For MSS 2000 )
-hwq+e ( For MSS 7 )
|
Other required workarounds
|
None
|
Pros
|
Passes all MLR and MLB tests.
|
Cons
|
None
|
Notes
|
Be sure to put "SET NOCOUNT ON" at the start of all stored procedures.
For SQL Server 2000, the driver has problem with
    { call MyMSSProc(?, ?, ? ) },
using the native version
    exec MyMSSProc ?, ?, ?
instead.
The MLR tests all pass with the ODBC
drivers included with Microsoft SQL Server 7 and 2000.
|
IBM DB2 UDB 7.2, 7.1 , 5.2
Important:
Driver
|
IBM DB2 UDB ODBC driver
|
Version
|
7.01.00.65
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
DB2 UDB Client 7.01.0000 with FixPak 3 and FixPak 7
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
-hwf+h+n+u+A+
|
Other required workarounds
|
None
|
Pros
|
Passes all MLR tests using statement-based upload.
Passes most MLR tests using cursor-based upload.
Passes most MLB tests.
|
Cons
|
Cursor-based uploads of BLOB, CLOB, LONG VARCHAR and LONG VARCHAR
FOR BIT DATA fail.
|
Notes
|
It's highly recommended to use statement-based upload.
To install this driver, if your DB2 UDB client is 7.01.0000,
you need first to install FixPak3 and then to install FixPak 7;
if your DB2 UDB client is 7.02.0000, just install FixPak 7 directly.
|
Driver
|
IBM DB2 UDB 7.1 ODBC driver
|
Version
|
7.01.00.00
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
DB2 UDB Client 7.01.0000
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
-hwf+h+n+u+A+
|
Other required workarounds
|
-hwE+
|
Pros
|
Except for a LONG VARCHAR FOR BIT DATA conflict test, passes
all MLR tests using statement-based upload.
Passes most MLR tests using cursor-based upload.
Passes most MLB tests.
|
Cons
|
Only one LONG VARCHAR FOR BIT DATA test for new-row and old-row
conflict-resolution scripts fails.
Cursor-based uploads of BLOB and CLOB fail.
Tests for LONG VARCHAR and LONG VARCHAR FOR BIT DATA
fail when using the new_row_cursor or old_row_cursor scripts.
|
Notes
|
When configuring the advanced DSN settings,
choosing "As LOB data" or "As LONGVAR data" under
"Long object binary treatment" on the Data Type tab will affect
the driver behaviour for long objects. For statement-based uploads,
when "As LOB data" is chosen, all BLOB tests fail but the LONG VARCHAR
FOR BIT DATA conflict-resolution test passes; when
"As LONGVAR data" is chosen, only one LONG VARCHAR FOR BIT DATA conflict-
resolution test fails. For cursor-based uploads, when "As LOB
data" is chosen, all LONG VARCHAR and LONG VARCHAR FOR BIT DATA tests pass
with the option -hwE+, but when "As LONGVAR data" is chosen, these
tests fail. Therefore, we suggest: for statement-based uploads,
choose "As LOB data"; for cursor-based uploads, choose
"As LONGVAR data".
LONG VARCHAR and LONG VARCHAR FOR BIT DATA tests need -hwE+
for cursor-based uploads. However, -hwE+ is not necessary for
statement-based uploads.
Statement-based uploads perform better than cursor-based uploads,
especially dealing with CLOB, BLOB, LONG VARCHAR
and LONG VARCHAR FOR BIT DATA.
We suggest using statement-based scripts for these data types.
|
Driver
|
IBM DB2 UDB 5.2 ODBC driver
|
Version
|
5.02.00.00
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
DB2 UDB Client 5.02.0000
|
OS
|
Win32
|
Workarounds applied by MobiLink
|
-hwf+h+n+u+A+
|
Other required workarounds
|
-hwE+
|
Pros
|
Except for a LONG VARCHAR FOR BIT DATA conflict test, passes
all MLR tests using statement-based upload.
Passes most MLR tests using cursor-based upload.
Passes most MLB tests.
|
Cons
|
Only one LONG VARCHAR FOR BIT DATA conflict-resolution test fails.
Cursor-based uploads of BLOB and CLOB fail.
Tests for LONG VARCHAR and LONG VARCHAR FOR BIT DATA
fail when using the new_row_cursor or old_row_cursor scripts.
|
Notes
|
When configuring the advanced DSN settings,
choosing the "As LOB data" or "As LONGVAR data" item under
"Long object binary treatment" on the Data Type tab will affect
the driver behaviour for long objects. For statement-based uploads,
when "As LOB data" is chosen, all BLOB tests fail but the LONG VARCHAR
FOR BIT DATA conflict-resolution test passes; when
"As LONGVAR data" is chosen, only one LONG VARCHAR FOR BIT DATA conflict-
resolution test fails. For cursor-based uploads, when "As LOB
data" is chosen, all LONG VARCHAR and LONG VARCHAR FOR BIT DATA tests pass
with the option -hwE+, but when "As LONGVAR data" is chosen, these
tests fail. Therefore, we suggest: for statement-based uploads,
choose "As LOB data"; for cursor-based uploads, choose
"As LONGVAR data".
LONG VARCHAR and LONG VARCHAR FOR BIT DATA tests need -hwE+
for cursor-based uploads. However, -hwE+ is not necessary for
statement-based uploads.
Statement-based uploads perform better than cursor-based uploads,
especially dealing with CLOB, BLOB, LONG VARCHAR
and LONG VARCHAR FOR BIT DATA.
We suggest using statement-based scripts for these data types.
|
Driver
|
iAnywhere Solutions 8 - DB2 Wire Protocol ODBC Driver
DataDirect DB2 Wire Protocol ODBC Driver
|
Version
|
4.00.00.35
|
Status
|
Recommended for use with MobiLink with caveats.
|
Client s/w
|
None
|
OS
|
AIX
|
Workarounds applied by MobiLink
|
-hwf+h+n+u+
|
Other required workarounds
|
-hwC+ -hwE+
|
Pros
|
Passes most MLR tests.
Passes most MLB tests.
|
Cons
|
This driver doesn't support the BLOB data type.
This driver doesn't support passing literal values to
stored procedures.
This driver only supports up to 32K-length values of the CLOB data type.
Many conflict-resolution tests failed because of the error:
"L517 cursor C1 does not identify a prepared select statement".
This bug will be fixed in an EBF.
|
Notes
|
This driver has difficulties caching SQL statements.
Always use the -hwC+ workaround.
On Win32, CLOB and LONG VARCHAR tests needs -hwE+ using
cursor-based uploads, however, -hwE+ is not necessary for
statement-based uploads.
When setting up a DSN on Unix, set "DecimalPrecision=31"
and "WithHold=1"; on Win32, select "31" for "DecimalPrecision" and
check "With Hold Cursors". This driver has the bug of
freeing the prepared statments, set a big number as possible
for Dynamic Sections, this number should be bigger than
the number of rows inserted into a table. This bug will
be fixed in an EBF.
The conflict-resolution synchronization
doesn't work with cursor-based upload, an EBF will fixed
the bug. The statement-based upload is highly recommended for
this driver.
On Unix, the driver doesn't show the correct minor version number.
The driver name is wqdb217.so and the file date is Jun 17, 2002.
|
|