下表汇总了所有驱动程序级参数及其属性:
Table 4-4 驱动程序参数和属性
1 如果 Synchronization Filter 参数不存在,则这些互斥参数中必须有一个存在。请参见同步过滤器。 2 此默认值是在运行时从描述符文件和数据库元数据动态派生的。 3 此默认值是在运行时从描述符文件动态派生的。
驱动程序参数分为以下子类别:
此参数是第三方 JDBC 驱动程序的完全限定 Java 类名。
下表列出了此参数的属性:
Table 4-5 Third-Party JDBC Driver Class Name:属性
|
属性 |
值 |
|---|---|
|
标签名称 |
jdbc-class |
|
是否必需? |
是 |
|
是否区分大小写? |
是 |
|
样本值 |
oracle.jdbc.driver.OracleDriver |
|
默认值 |
(无) |
有关支持的 Third-Party JDBC Driver Class Name 的列表,请参见JDBC 驱动程序类名。
Time Syntax 参数指定驱动程序返回的时间相关数据类型的格式。此格式可以是下列任意选项:
格式: 带符号的整数。 作为 32 位带符号的整数返回数据库的时间、日期和时戳值,并将它们映射到《时间》或《时戳》类型的 eDirectory™ 特性。
eDirectory 的时间和时戳语法由无符号 32 位整数构成,这些整数表示自 1970 年 1 月 1 日上午 12:00 (UTC) 以来经过的总秒数。 此数据类型的最大范围约为 136 年。 如果将这些语法解释为无符号整数(最初想法),则它们能够表示 1970 年至 2106 年的日期和时间并精确到秒。如果将这些语法解释为带符号的整数,则它们能够表示 1901 年至 2038 年的日期和时间并精确到秒。
此选项是默认选项。 它存在两个问题:
第二和第三个选项克服了这两个限制。
格式: 规范字符串。 作为规范字符串返回数据库的《时间》、《日期》和《时戳》值,并将它们映射到《数字字符串》类型的特性。
下表显示抽象的数据库数据类型及其相应的规范字符串表示形式:
Table 4-6 数据库类型和规范字符串表示形式
|
JDBC 数据类型 |
规范字符串格式1 |
|---|---|
|
java.sql.Time |
HHMMSS |
|
java.sql.Date |
CCYYMMDD |
|
java.sql.Timestamp |
CCYYMMDDHHMMSSNNNNNNNNN |
1 C = 世纪,Y = 年,M = 月,D = 日,H = 时,M = 分,S = 秒,N = 十亿分之一秒
在使用任意区域设置的任何平台上,将按时间顺序对这些固定长度的格式进行整理。 即使十亿分之一秒的精度会随数据库的不同而异,但是时戳的长度没有差异。
格式: Java 字符串表示形式。 以其 Java 字符串表示形式(由 toString():java.lang.String 方法返回)返回数据库的《时间》、《日期》和《时戳》值,并将它们映射到《忽略大小写/大小写精确字符串》类型的特性。
下表显示抽象的数据库数据类型及其相应的 Java 字符串表示形式:
Table 4-7 数据库类型和 Java 字符串格式
|
JDBC 数据类型 |
Java 字符串格式1 |
|---|---|
|
java.sql.Time |
hh:mm:ss |
|
java.sql.Date |
yyyy-mm-dd |
|
java.sql.Timestamp |
yyyy-mm-dd hh:mm:ss.fffffffff |
1 y = 年,m = 月,d = 日,h = 时,m = 分,s = 秒,f = 十亿分之一秒
在使用任意区域设置的任何平台上,将按时间顺序对这些固定长度的格式进行整理。 十亿分之一秒的精度和相应的时戳长度都随数据库的不同而异。
下表列出了 Time Syntax 参数的属性:
State Directory 参数指定驱动程序实例应将状态数据储存在何处。 状态数据当前用于无触发器发布。请参见无触发器发布参数。 状态数据将来可能用于储存其它状态信息。
每个驱动程序实例都有两个状态文件。 状态文件名遵循格式 jdbc_driver-instance-guid.db和jdbc_driver-instance-guid.lg。 例如,jdbc_bd2a3dd5-d571-4171-a195-28869577b87e.db 和 jdbc_bd2a3dd5-d571-4171-a195-28869577b87e.lg 都是状态文件名。 如果需要手动识别和删除驱动程序实例的状态文件,则会在启动时跟踪每个驱动程序实例的 GUID。 每次启动状态目录相同的驱动程序实例时,当前状态目录中不起作用的状态文件(属于已删除的驱动程序的状态文件)都将被删除。
下表列出了此参数的属性:
Synchronization Filter参数确定哪些数据库对象(如表和视图)是同步纲要的成员(运行时对驱动程序可见的表集/视图)。 由于添加了此参数,该驱动程序现在可以两种方式运行: 纲要兼容或纲要不兼容。
纲要不兼容方式。 如果 Synchronization Filter参数存在并设置为空时(排除所有表/视图),则驱动程序与纲要不兼容。 启动时它不检索表/视图元数据。 因此,不需要使用元数据方法。请参见Section D.0, java.sql.DatabaseMetaData Methods 。
如果与纲要不兼容,则同步纲要可以为空。 将完全忽略 Schema Name 和 Tables/Views 参数。 两者都不需要。 两者的状态可以是不存在、存在、有值或无值。请参见Schema Name和Tabel/View Names 。
在纲要不兼容方式下,该驱动程序充当嵌入式 SQL 的传递代理。 在这种状态下,标准的 XDS 事件(如《添加》、《修改》和《删除》)会被忽略。请参见在 XDS 事件中嵌入 SQL 语句。 同时,带触发器的发布或无触发器发布不再起作用。
纲要兼容方式。 如果 Synchronization Filter 参数不存在或设置为非空值(排除所有表/视图),则驱动程序与纲要兼容。 它在有限数目的表/视图上检索表/视图元数据,以简化数据同步。 可以将元数据超速缓存在(按纲要成员资格包含的)单个数据库用户拥有的所有表/视图上,或将元数据超速缓存在(按表/视图名称包含的)表/视图名称的显式列表上。 如果与纲要兼容,则驱动程序在启动时将检索数据库表/视图元数据。 有关所需元数据方法的列表,请参见Section D.0, java.sql.DatabaseMetaData Methods 。
如果与纲要兼容,Schema Name 或 Table/View Names 参数必须存在并且包含值。 由于这两个参数是互斥的,因此只能是一个参数包含值。请参见Schema Name和Tabel/View Names 。
下表列出了要求驱动程序与纲要兼容的参数。 如果驱动程序与纲要不兼容,则这些参数对驱动程序的行为不产生任何影响。
Table 4-10 与纲要相关的参数
下表列出了此参数的属性:
Schema Name 参数用于标识正在同步的数据库纲要。 数据库纲要与正在同步的表或视图的拥有者的名称相似。 例如,要同步 usr 和 grp 这两个表,而它们都属于数据库用户 idm,则可输入 idm 作为此参数的值。
如果使用该参数而不使用表/视图名称,则驱动程序将对数据库对象的名称进行隐式纲要限定。 因此,参照储存过程、函数或表名的参数不需要进行纲要限定,除非它们驻留在不同于此处指定的纲要中。 特别是 Method and Timing (Table-Local) 和 Event Log Table Name 将受到影响。请参见Tabel/View Names 、Method and Timing (Table-Local)和Event Log Table Name。
下表列出了此参数的属性:
Table 4-12 Schema Name:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
sync-schema |
|
Required? |
yes1 |
|
Case-Sensitive? |
请参见未定界标识符的大小写问题。 |
|
Sample Value |
indirect |
|
Default Value: |
(none) |
1 如果在没有使用 Synchronization Filter 参数的情况下使用 Schema Name 参数,Tabel/View Names 参数必须留空或从配置中省略。请参见同步过滤器和Tabel/View Names 。
IMPORTANT:如果使用无触发器发布,更改 Schema Name 参数的值会强制重新同步所有对象。
Include Filter Expression 参数仅在使用 Schema Name 参数时有效。请参见Schema Name。
下表列出了此参数的属性:
Tabel/View Names 参数允许通过列出要同步的逻辑数据库类的名称来创建逻辑数据库纲要。 逻辑数据库类的名称是指父表和视图的名称。 列出子表名称是错误的。
如果与不支持纲要概念的数据库(例如 MySQL)进行同步,或者数据库纲要包含大量的表或视图,并且其中只有少数几个相关,此参数尤其有用。 减小驱动程序超速缓存的表/视图定义数可以缩短启动时间以及降低运行时的内存利用率。
如果使用此参数而不使用 Schema Name,则可能需要对参照储存过程、函数或表名的其它参数进行纲要限定。 特别是 Method and Timing (Table-Local) 和 Event Log Table Name 参数将受到影响。请参见Schema Name、Method and Timing (Table-Local)和Event Log Table Name。
下表列出了此参数的属性:
Table 4-15 Table/View Names:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
sync-tables |
|
Required? |
是1 |
|
Case-Sensitive? |
请参见未定界标识符的大小写问题。 |
|
Delimiters |
分号、空格、逗号 |
|
Sample Value |
indirect.usr;indirect.grp |
|
Default Value |
(none) |
1如果此参数不与 Synchronization Filter 参数一起使用,Schema Name 参数必须留空或从配置中省略。请参见同步过滤器和Schema Name。
Use Minimal Number of Connections? 参数指定驱动程序是否应使用两个而不是三个数据库连接。
默认情况下,驱动程序使用三个连接: 一个用于订购,两个用于发布。 《发布者》通道用其两个连接之一查询事件,用另一个简化向后查询操作。
如果此参数设置为布尔值 True,则所需的数据库连接数将减至两个。 《订购者》和《发布者》通道共享其中一个连接。 该连接用于处理订购和发布向后查询事件。 另一个用于查询发布事件。
在以前的版本中,驱动程序能够通过使用单一连接来支持双向同步。 发布算法经过了重新设计,可以提高性能,支持未来事件处理,以及克服以前算法的限制,但需要增加一个连接。
Table 4-16 Use Minimal Number of Connections?:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
use-single-connection |
|
Required? |
no |
|
Default Value |
(dynamic1) |
|
Legal Values |
1, yes, true (yes) 0, no, false (no) |
|
Schema-Dependent |
False |
1 此默认值是在运行时从描述符文件动态派生的。 否则,此默认值为布尔值 False。
NOTE:将此参数设置为布尔值 True 会降低性能。
Connection Initialization Statements 参数指定连接到目标数据库后应立即执行哪些 SQL 语句(如果有)。 连接初始化语句可用于更改数据库环境和设置会话属性。 每当驱动程序(不管通过哪个通道)连接或重新连接到目标数据库时,这些语句便会执行。
下表列出了此参数的属性:
Table 4-17 Connection Initialization Statements:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
connection-init |
|
Required? |
no |
|
Case-Sensitive? |
请参见未定界标识符的大小写问题。 |
|
Delimiters |
分号 |
|
Sample Value |
USE idm;SET CHAINED OFF |
|
Default Value |
(none) |
|
Schema-Dependent |
False |
Connection Properties 参数指定鉴定属性。 对于无法通过 Authentication Context 参数指定的 JDBC URL 进行设置的属性,可使用该参数进行设置。请参见鉴定环境。
此参数的主要用途是启用第三方 JDBC 驱动程序的加密传输。 有关相关连接属性的列表,请参见Sybase Adaptive Server Enterprise JConnect JDBC 驱动程序和Oracle 瘦客户机 JDBC 驱动程序。
连接属性指定为密钥-值对。 其中的密钥指定为《=》字符左侧的值。 其中的值是《=》字符右侧的值。 可以指定多个密钥-值对,但每对必须以《;》字符分隔。
如果使用 Connection Properties 参数,便可以通过 Authentication Context 参数中或在此处指定的 JDBC URL 传递鉴定信息。请参见鉴定环境。
如果指定为连接属性,则值令牌可用作 Authentication ID 参数中指定的数据库用户名的占位符,以及 Application Password 参数中指定的口令的占位符。请参见鉴定 ID和应用程序口令。 对于用户名,令牌为 {$username}。 对于口令,令牌为 {$password}。
下表列出了此参数的属性:
JDBC Driver Descriptor Filename 参数指定要使用的第三方 JDBC描述符文件。 描述符文件名不能以下划线字符为前缀(例如,_mysql_jdriver.xml),因为这些文件名是保留的文件名。 请将描述符文件放置在以前缀《jdbc》(不区分大小写)开头的 jar 文件中(例如 JDBCCustomConfig.jar),以及 jar 文件的 com/novell/nds/dirxml/driver/jdbc/db/descriptor/driver 目录中。
下表列出了此参数的属性:
Database Descriptor Filename 参数指定要使用的数据库描述符文件。 不要在描述符文件名前缀中使用下划线字符(例如,_mysql.xml)。 这些文件名是保留的文件名。 请将描述符文件放置在以前缀《jdbc》(不区分大小写)开头的 jar 文件中(例如,JDBCCustomConfig.jar)。 同时,将描述符文件放置在 jar 文件的 com/novell/nds/dirxml/driver/jdbc/db/descriptor/db 目录中。
下表列出了此参数的属性:
Use Manual Transactions? 参数指定是使用手动事务还是使用用户定义的事务。
此参数主要用于支持与 MySQL MyISAM 表类型进行互操作,这些表类型不支持事务。
如果设置为布尔值 True,驱动程序将使用手动事务。 如果设置为布尔值 False,驱动程序执行的每个语句都将独立(自动)执行。
下表列出了此参数的属性:
Table 4-21 Use Manual Transactions?:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
use-manual-transactions |
|
Required? |
no |
|
Case-Sensitive? |
no |
|
Default Value |
(动态1) |
|
Legal Values |
1、yes、true(是) 0、no、false(否) |
|
Schema-Dependent |
False |
1 此默认值是在运行时从描述符文件和数据库元数据动态派生的。
NOTE:为确保数据完整性,请尽可能将此参数设置为布尔值 True。
Transaction Isolation Level 参数用于设置驱动程序所使用的连接的事务隔离级别。 该参数有六个值:
其中五个值对应于 java.sql 接口连接中定义的公共常量。
由于有些第三方驱动程序不支持将连接的事务隔离级别设置为 none,因此驱动程序也支持 unsupported 的其它非标准化值。 PostgreSQL 联机文档对每个隔离级别的实际意义提供了一种更合理、更简明的基本说明。(请重译!!!)
IMPORTANT:支持的隔离级别的列表随数据库的不同而异。 有关支持数据库的支持事务隔离级别列表,请参见支持的事务隔离级别。
建议使用 read committed 事务隔离级别,因为它是防止驱动程序看到未提交更改(脏读)的最低隔离级别。
下表列出了此参数的属性:
Table 4-22 Transaction Isolation Level:属性
1 此默认值是在运行时从描述符文件动态派生的。 否则,此默认值为 read committed。
Reuse Statements? 参数指定在给定的连接上,一次是有一个还是有多个 java.sql.Statement 项目处于活动状态。 请参见 java.sql.Statement。
此参数主要用于支持与 Microsoft SQL Server 2000 Driver for JDBC 进行互操作。
如果设置为布尔值 True,驱动程序将一次性分配一个 Java SQL 语句,然后重复使用该语句。 如果设置为布尔值 False,驱动程序将在每次使用语句对象时执行语句对象的分配/取消分配操作,以确保给定的连接上一次只有一个语句处于活动状态。
下表列出了此参数的属性:
Table 4-23 Reuse Statements?:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
reuse-statements |
|
Required? |
no |
|
Case-Sensitive? |
no |
|
Default Value |
(dynamic1) |
|
Legal Values |
1, yes, true (yes) 0, no, false (no) |
|
Schema-Dependent |
False |
1 此默认值是在运行时从描述符文件动态派生的。 否则,此默认值为布尔值 True。
NOTE:将此参数设置为布尔值 False 会降低性能。
Number of Returned Result Sets 参数指定可以从任意 SQL 语句返回多少个 java.sql.Result 对象。 请参见 java.sql.ResultSet。
此参数主要用于避免在评估任意 SQL 语句的结果时出现Oracle 瘦客户机 JDBC 驱动程序中所述的无限循环的情况。
下表列出了此参数的属性:
Table 4-24 Number of Returned Result Sets:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
handle-stmt-results |
|
Required? |
no |
|
Sample Value |
一 |
|
Default Value |
(dynamic1) |
|
Legal Values |
none, no (none) single, one (one) multiple, many, yes (multiple) |
|
Schema-Dependent |
False |
1 此默认值是在运行时从描述符文件动态派生的。 否则,默认值为 multiple、many 或 yes。
Enable Statement-Level Locking? 参数指定驱动程序在执行 SQL 语句以前是否显式锁定数据库资源。
下表列出了此参数的属性:
Lock Statement Generator Class 参数指定使用哪个 DBLockStatementGenerator 实现来生成为待发 SQL 语句显式锁定数据库资源必需的 SQL 语句。 驱动程序附带的 Java 文档中提供了 DBLockStatementGenerator 接口的有关信息。
下表列出了此参数的属性:
Table 4-26 Lock Statement Generator Class:属性
1 此默认值是在运行时从描述符文件动态派生的。 否则,默认值为 com.novell.nds.dirxml.driver.jdbc.db.lock.DBLockGenerator。
Enable Referential Attribute Support? 参数决定驱动程序是否识别逻辑数据库类之间的外键约束。 这些约束用于表示包容。 逻辑数据库类中的父表和子表之间的外键约束不受影响。
如果设置为布尔值 True,则外键列被解释为参照列。 如果设置为布尔值 False,则外键列被解释为非参照列。
此参数的主要用途是确保与驱动程序版本 1.0 向后兼容。 要与版本 1.0 兼容,请将此参数设置为布尔值 False。
下表列出了此参数的属性:
Enable Meta-Identifier Support? 参数决定驱动程序是否将视图列名前缀(如《pk_》和《fk_》)严格解释为元数据。 如果解释为元数据,则这样的前缀不被视为视图列名的一部分。
例如,如果启用元标识符支持,列《pk_idu》的有效列名称为《idu》,这可以防止同一视图中出现另一个具有相同有效名称的列。 如果禁用元标识符支持,列《pk_idu》的有效列名称为《pk_idu》,这允许出现另一个名称为《idu》的列。 此外,如果启用元标识符支持,主键名称为《pk_idu》的视图将与主键列名称为《idu》的表冲突。 如果禁用元标识符支持,则它们不发生冲突。
如果设置为布尔值 True,则将视图列前缀解释为元数据。 如果设置为布尔值 False,则将视图列名前缀解释为适当列名的一部分。
此参数的主要用途是确保与驱动程序版本 1.5 向后兼容。 要与版本 1.5 兼容,请将此参数设置为布尔值 False。
下表列出了此参数的属性:
Force Username Case 参数可更改鉴定到目标数据库时使用的驱动程序用户名的大小写。
此参数的主要用途在于,在 ANSI 兼容的数据库上使用 Informix JDBC 驱动程序时,支持与 Informix JDBC 驱动程序进行互操作。请参见Informix JDBC 驱动程序。
下表列出了此参数的属性:
Left Outer Join Operator 参数指定无触发器发布查询中使用的 Left Outer Join 运算符。 将来它可能还有其它用途。
下表列出了此参数的属性:
Table 4-30 Left Outer Join Operator:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
left-outer-join-operator |
|
Required? |
no |
|
Default Value |
(动态1) |
|
Legal Values |
*= (+) LEFT OUTER JOIN |
|
Schema-Dependent |
True |
1此默认值是在运行时从描述符文件动态派生的。 否则,此默认值为 LEFT OUTER JOIN。
如果设置为布尔值 True,驱动程序只调用必需的元数据方法。 如果设置为布尔值 False,驱动程序将调用必需和可选的元数据方法。 有关必需和可选元数据方法的列表,请参考java.sql.DatabaseMetaData Methods 。 多值和参照特性同步需要可选的元数据方法。
Table 4-31 Retrieve Minimal Metadata:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
minimal-metadata |
|
Required? |
no |
|
Default Value |
(动态1) |
|
Legal Values |
1、yes、true(是) 0、no、false(否) |
|
Schema-Dependent |
True |
1 此默认值是在运行时从描述符文件动态派生的。 否则,此默认值为布尔值 False。
NOTE:将此值设置为布尔值 True 可缩短启动时间和提高第三方 JDBC 驱动程序的兼容性,但会使功能减弱。
Function Return Method 参数指定如何从数据库函数检索数据。
此参数的主要用途是支持与 Informix JDBC 驱动程序进行互操作。请参见Informix JDBC 驱动程序。
如果设置为 result set,则通过结果集检索函数结果。 如果设置为 return result,则以单个标量返回值的形式检索函数结果。
Table 4-32 Function Return Method:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
function-return-method |
|
Required? |
no |
|
Default Value |
(动态1) |
|
Legal Values |
result set return value(标量返回值) |
|
Schema-Dependent |
False |
1 此默认值是在运行时从描述符文件动态派生的。
Supports Schemas in Metadata Retrieval? 参数指定在检索数据库元数据时是否应使用纲要名称。
此参数的主要用途在于,在 ANSI 兼容的数据库上使用 Informix JDBC 驱动程序时,支持与 Informix JDBC 驱动程序进行互操作。请参见Informix JDBC 驱动程序。
如果设置为布尔值 True,则使用纲要名称。 如果设置为布尔值 False,则不使用纲要名称。
Table 4-33 Supports Schemas in Metadata Retrieval?:属性
|
属性 |
值 |
|---|---|
|
Tag Name |
supports-schemas-in-metadata-retrieval |
|
Required? |
no |
|
Default Value |
(动态1) |
|
Legal Values |
1、yes、true(是) 0、no、false(否) |
|
Schema-Dependent |
False |
1 此默认值是在运行时从描述符文件动态派生的。 否则,此默认值为布尔值 True。
Sort Column Names By 参数指定如何确定不支持按列名排序的旧式数据库的列位置。
此参数的主要用途是支持与旧式数据库(如 DB2/AS400)进行互操作。
按十六进制值对列名排序可确保将驱动程序实例重定位到另一台服务器后,无需进行修改该实例仍可继续工作。 按平台或区域设置字符串整理顺序对列名排序的方式更直观,但如果将驱动程序实例重定位到另一台服务器后,可能需要更改配置。 具体而言,可能要更改日志表列顺序和复合列名顺序。 对于后一种情况,可能需要更新纲要映射策略和对象关联值。 对于前一种情况,可能必须重命名日志表列。
只要发生以下情况,就还可能要指定任何完全限定的 Java 类名:
Table 4-34 Sort Column Names By:属性
1 此默认值是在运行时从描述符文件动态派生的。 否则,此默认值为 com.novell.nds.dirxml.driver.jdbc.util.config.comp.StringByteComparator。
IMPORTANT:为某一给定配置设置此参数后,请不要更改此参数。