---
title: "数据库 URL - JDBC 驱动程序  V2.2.11 | OceanBase 文档中心"
description: "数据库 URL 数据库 URL 是字符串，用于连接到 OceanBase 数据库并实现指定功能。 OceanBase Connector/J 允许在 URL 中添加额外的连接属性，所支持的完整的 URL 语法如下： jdbc:oceanbase:hamode://host:port/databasename?[use…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*bhcER5Qvet8AAAAAAAAAAAAADiGDAQ/original) JDBC 驱动程序 V 2.2.11

# 数据库 URL

更新时间：2026-04-09 15:25:58

[编辑](https://github.com/oceanbase/connector-j-doc/edit/V2.2.11/zh-CN/300.user-guide/200.data-source-and-url/400.database-url.md)  

数据库 URL 是字符串，用于连接到 OceanBase 数据库并实现指定功能。

OceanBase Connector/J 允许在 URL 中添加额外的连接属性，所支持的完整的 URL 语法如下：

```java
jdbc:oceanbase:hamode://host:port/databasename?[username&password]&[opt1=val1&opt2=val2...]

```

OceanBase Connector/J 允许在 URL 中添加额外的连接属性。说明如下：

- 属性 `hamode` 是指高可用模式，可选的参数是 `loadbalance`。
 - 属性 `[username/password]` 为可选的用户名和密码，用于唯一标识应用程序所连接的数据库。
 - 属性 `[opt1=val1&opt2=val2...]` 为额外的连接属性，即 URL 参数。

示例如下：

```java
jdbc:oceanbase://10.xxx.xxx.xxx:1001/unittests?user=**u**@sys&password=***1**&
pool=false&useBulkStmts=true&rewriteBatchedStatements=false&useServerPrepStmts=true

```

本节主要介绍 OceanBase Connector/J 可选的 URL 参数。

## OceanBase Connector/J 特有参数

| 参数 | 描述 |
| --- | --- |
| supportLobLocator | LOB Locator 开关。默认值：`true`。 |
| useObChecksum | Checksum 开关，是 OceanBase Protocol 2.0 协议的一个配置。默认值：`true`。 |
| useOceanBaseProtocolV20 | 是否使用 OceanBase Protocol 2.0。默认值：`true`。 |
| complexDataCacheSize | ComplexData Cache 的大小。默认值：50。 |
| cacheComplexData | 是否缓存 `ComplexData`。默认值：`true`。 |
| useSqlStringCache | 是否将 SQLString 缓存在客户端。默认值：`false`。 |
| useServerPsStmtChecksum | 是否使用 PS 的 Checksum。默认值：`true`。 |
| connectProxy | 配置连接到 OBProxy。此时不能执行对业务 SQL 的查询，只能对 OBProxy 进行配置或者配置查询。默认值：`false`。 |
| sendConnectionAttributes | 是否在建立连接时发送拓展属性，以提供给具有不同权限的用户更多的选项。默认值：`true`。 |
| useOraclePrepareExecute | 开启 PS 二合一协议，Oracle 模式 `preparedStatement` 在使用 `COM_STMT_PREPARE_EXECUTE` 执行之前不会与 server 通信。默认值：`false`。     当前版本 `useOraclePrepareExecute` 为 `true` 时，`useServerPrepStmts` 被设为 `true`。V2.4.5 之前版本需要共同使用，才能开启 PS 二合一协议。 |

## 基本参数

| **参数** | **描述** |
| --- | --- |
| user | 数据库用户名称。 |
| password | 数据库用户密码。 |
| rewriteBatchedStatements | 对于插入查询，重写 `batchedStatement` 以在单个 `executeQuery` 中执行。例如`insert into ab (i) values (?)with first batch values = 1, second = 2` 被重写为 `insert into ab (i) values (1), (2)`。 如果无法用"多值"重写查询，则将使用多查询重写 `INSERT INTO TABLE(col1) VALUES (?) ON DUPLICATE KEY UPDATE col2=?` 并附加值[1,2] 和 [2,3] ，将被重写为 `INSERT INTO TABLE(col1) VALUES (1) ON DUPLICATE KEY UPDATE col2=2;INSERT INTO TABLE(col1) VALUES (3) ON DUPLICATE KEY UPDATE col2=4`。 `rewriteBatchedStatements`处于活跃状态时，`useServerPrepStmts` 选项被设置为 `false`。 默认值：`false`。 |
| useServerPrepStmts | 在执行之前，在服务器端准备 `PrepareStatement`。重复使用相同查询的应用程序具有激活该选项的值，但通常情况是使用直接命令（文本协议）。如果 `rewriteBatchedStatements` 设置为 `true`，则此选项将设置为 `false`。默认值：`false`。 |
| useBatchMultiSend | 驱动程序可以批量发送查询。 如果设置为 `false`，查询将逐一发送，等待返回结果后再发送下一个。 如果设置为 `true`，则将根据与 `useBatchMultiSendNumber` 选项值（默认为 `100`）批量发送查询，如果超出数据包允许发送的查询数量，则根据 `max_allowed_packet` 服务器变量发送查询，之后再读取结果，从而避免了客户端和服务器不在同一主机上时发生的大量网络延迟。 默认值：`true`。 |
| allowLocalInfile | 允许从文件加载数据。默认值：`false`。 |
| useMysqlMetadata | `databaseMetaData.getDatabaseProductName()` 根据服务器类型返回 Oracle 或 MySQL。 |
| useUnicode | 指定字符的编码、解码格式。默认值：`true`。   **说明** OceanBase Connector/J 的当前版本不支持修改此参数。 |

## 网络连接参数

| 参数 | 描述 |
| --- | --- |
| socksProxyHost | 要连接的 `SOCKS` 主机名称或 IP 地址。默认值：`null`。 |
| socksProxyPort | `SOCKS` 服务器的端口。默认值：1080。 |
| socketFactory | 要使用自定义 Socket Factory，请将其设置为 `javax.net.SocketFactory` 类的全名。 |
| connectTimeout | 连接超时值，以毫秒为单位，如果没有超时则为零。 默认值：30000。 |
| socketTimeout | 定义了网络 Socket 超时（`SO_TIMEOUT`），以毫秒为单位。值为 0 时将禁用此超时。也可以通过设置系统变量 `max_statement_time` 来限制查询时间。默认值：0（标准配置）或 10000 ms。 |
| localSocketAddress | 将连接 Socket 绑定到本地（UNIX 域）Socket 的主机名或 IP 地址。 |
| tcpKeepAlive | 如果使用 TCP/IP 连接，驱动程序是否应该设置 `SO_KEEPALIVE`。默认值：`true`。 |
| tcpNoDelay | 如果使用 TCP/IP 连接，驱动程序是否应该设置 `SO_TCP_NODELAY`（禁用 Nagle 算法）。默认值：`true`。 |
| tcpRcvBuf | 设置 TCP 缓冲区（`SO_RCVBUF`）的大小。默认值为 0，表示使用该属性的平台默认值。 |
| tcpSndBuf | 设置 TCP 缓冲区（`SO_SNDBUF`）的大小。默认值为 0，表示使用该属性的平台默认值。 |

## TLS 参数

| **参数** | **描述** |
| --- | --- |
| useSSL | 强制连接时是否使用 SSL/TLS。默认值：`false`。 |
| trustServerCertificate | 使用 SSL/TLS 时，不检查服务器的证书。 默认值：`false`。 |
| serverSslCert | 允许以 DER 形式提供服务器的证书或服务器的 CA 证书。该服务器将被添加到 `trustStor`，这样可以信任自签名证书。可以使用以下三种方式之一：   - serverSslCert=/path/to/cert.pem (full path to certificate) - serverSslCert=classpath:relative/cert.pem (relative to current classpath) - as verbatim DER-encoded certificate string "------BEGIN CERTIFICATE-----" |
| keyStore | 包含客户端私钥存储和关联证书的 keyStore 文件的文件路径（类似于Java 系统属性 `javax.net.ssl.keyStore`，但确保仅使用私钥的条目）。旧别名 `clientCertificateKeyStoreUrl`。 |
| keyStorePassword | 客户端证书 keyStore 的密码（类似于 Java 系统属性 `javax.net.ssl.keyStorePassword`）。旧别名 `clientCertificateKeyStorePassword` |
| keyPassword | 客户端证书 keyStore 中私钥的密码。（仅当私钥密码与 keyStore 密码不同时才需要）。 |
| trustStore | trustStore 文件的文件路径（类似于 Java 系统属性 `javax.net.ssl.trustStore`，旧别名 `trustCertificateKeyStoreUrl`）将指定的文件用于受信任的根证书。设置后，将覆盖 `serverSslCert`。 |
| trustStorePassword | 受信任的根证书文件的密码（类似于 Java 系统属性 `javax.net.ssl.trustStorePassword`，旧别名 `trustCertificateKeyStorePassword`）。 |
| enabledSslProtocolSuites | 强制将 TLS/SSL 协议强制为一组特定的 TLS 版本（以逗号分隔的列表）。示例："TLSv1，TLSv1.1，TLSv1.2"（也可以使用别名 `enabledSSLProtocolSuites`）。默认值：Java 默认值。 |
| enabledSslCipherSuites | 强制使用 TLS/SSL 密码（以逗号分隔的列表）。示例：" `TLS_DHE_RSA_WITH_AES_256_GCM_SHA384，TLS_DHE_DSS_WITH_AES_256_GCM_SHA384`"。默认值：使用 JRE 密码。 |
| disableSslHostnameVerification | 使用 SSL 时，驱动程序将对照服务器证书中显示的服务器身份检查主机名（检查备用名称或证书 CN），以防止中间人攻击。 此选项允许停用此验证。当 `trustServerCertificate` 选项设置为 `default` 时，将禁用主机名验证。 |
| keyStoreType | 指明密钥存储类型（JKS/PKCS12）。默认值为 `null`，表示使用 Java 默认类型。 |
| trustStoreType | 指明信任库类型（JKS/PKCS12）。默认值为 `null`，表示使用 Java 默认类型。 |

## 性能扩展参数

| 参数 | 描述 |
| --- | --- |
| useLocalSessionState | 驱动程序是否使用自动提交（由 `Connection.setAutoCommit()` 设置）和事务隔离（由 `Connection.setTransactionIsolation()` 设置）的内部值以及参考协议维护的事务状态。 默认值：`true`。   **说明** 当前版本不支持修改此参数。 |
| useLocalTransactionState | 驱动程序是否使用 MySQL 协议提供的事务中状态来确定 `commit()` 或 `rollback()` 确实已发送到数据库。 默认值：`true`。   **说明** 当前版本不支持修改此参数。 |
| useArrayBinding | 在 PS 协议下将每个列相同类型的参数拼接成数组的方式，一次 Batch 发送若干个 arrayBinding 包，以提升插入数据的效率。默认值：`false`。   **说明** 只在 Oracle 模式下满足 `useServerPrepStmts=true`，且同时使用 `executeBatch()` 或者 `executeLargeBatch()`，且关闭自动提交的时候才会生效，开关起到隔离的作用。 |

## 连接池参数

| **参数** | **描述** |
| --- | --- |
| pool | 使用连接池。仅当不使用 DataSource 对象而仅使用连接对象时，此选项才有用。默认值：`false`。 |
| poolName | 允许标识线程的连接池名称。默认值：自动生成为 `oceanbase-pool- <pool-index>`。 |
| maxPoolSize | 连接池应包含的最大物理连接数。默认值：8。 |
| minPoolSize | 如果由于使用时间不超过 `maxIdleTime` 而删除了连接，则将关闭连接并将其从池中删除。`minPoolSize` 指明连接池应始终保持可用的物理连接数，应小于或等于 `maxPoolSize`。默认值：`maxPoolSize`。 |
| poolValidMinDelay | 当询问连接时，连接池将验证连接状态。如果最近借用了连接，则 `poolValidMinDelay` 允许禁用此验证，避免在频繁重复使用连接的情况下进行无用的验证。0 表示每次请求连接时都要进行验证。默认值：1000（毫秒）。 |
| maxIdleTime | 不使用连接时，连接可以保留在池中的最长时间（以秒为单位）。此值必须始终低于 `@wait_timeout-45s`。默认值：600 秒（即 10 分钟），最小值为 60 秒。 |
| staticGlobal | 表明不会更改全局变量 `max_allowed_packet`、`wait_timeout`，`autocommit`、`auto_increment_increment`、`time_zone`、`system_time_zoneandtx_isolation` 的值，从而允许连接池更快地创建新连接。默认值：`false`。 |
| useResetConnection | 当一个连接为 `closed()`（返回给连接池）时，连接池将重置连接状态。设置此选项后，如果服务器允许，则准备命令将被删除，会话变量将被重置，用户变量将被销毁，从而在应用程序大量使用变量时，服务器可以节省内存。不得与 `useServerPrepStmts` 选项一起使用。默认值：`false`。 |
| registerJmxPool | 注册 JMX 监视池。默认值：`true`。 |

## 日志参数

| **参数** | **描述** |
| --- | --- |
| log | 启用日志信息。默认值：`false`。 |
| maxQuerySizeToLog | 日志中仅显示与该选项大小相对应数量的字符。默认值：1024。 |
| slowQueryThresholdNanos | 记录执行时间超过此值的查询（如果已定义）。默认值：1024。 |
| profileSql | 日志查询执行时间。默认值：`false`。 |

## 其他参数

| **参数** | **描述** |
| --- | --- |
| passwordCharacterEncoding | 指明密码编码字符集。字符集值必须是 Java 字符集。例如：UTF-8。默认值：`null`（即平台的默认字符集） |
| useFractionalSeconds | 可以处理亚秒精度的时间戳。默认值：`true`。 |
| allowMultiQueries | 单次执行多个查询的 SQL Stirng 格式。例如 `insert into ab (i) values (1); insert into ab (i) values (2)`。默认值：`false`。 |
| dumpQueriesOnException | 如果设置为 `true`，则在执行查询期间将引发包含查询字符串的异常。默认值：`false`。 |
| useCompression | 通过 `gzip` 压缩与数据库进行网络通信。当数据库网络开销比较大的时候，可以提供更好的性能。默认值：`false`。 |
| tcpAbortiveClose | 此选项可用于快速连续创建和关闭连接的环境中。通常，短时间内无法在这种环境中创建 Socket，因为所有本地"临时"端口都被 TCP 连接用尽了，并处于 `TCP_WAIT` 状态。使用 `tcpAbortiveClose` 通过重置 TCP 连接（主动关闭或硬关闭）而不是有序关闭来解决此问题。使用 `socket.setSoLinger(true,0)` 进行强制关闭。 |
| tinyInt1isBit | 数据类型映射标志，将 MySQL Tiny 作为 BIT（Boolean）处理。默认值：`true`。 |
| yearIsDateType | 将 Year 作为日期类型处理，而不是数字。默认值：`true`。 |
| sessionVariables | 在建立成功连接时设置的 `<var> = <value>` 对，以逗号分隔会话变量。 |
| localSocket | 如果服务器允许，则可以通过 Unix 域 Socket 连接到数据库。值是 Unix 域 Socket 的路径（即 Socket 数据库参数：`select @@ socket`）。 |
| sharedMemory | 如果服务器允许，则通过共享内存连接到数据库。值是共享内存的基本名称。 |
| interactiveClient | 会话超时由 `thewait_timeoutserver` 变量定义。将 `interactiveClient` 设置为 `true` 将告诉服务器使用 `interactive_timeoutserver` 变量。默认值：`false`。 |
| useOldAliasMetadataBehavior | 元数据通过 `ResultSetMetaData.getTableName()` 返回物理表名称。如果设置了 `useOldAliasMetadataBehavior`，可以获取表别名。默认值：`false`。 |
| createDatabaseIfNotExist | 在 URL 中创建指定的数据库（如果不存在）。默认值：`false`。 |
| serverTimezone | 定义服务器时区。仅在 GRE 服务器实现不同的服务器时区时使用（最好具有相同的服务器时区）。 |
| cachePrepStmts | 如果 `useServerPrepStmts = true`，则将准备好的信息缓存在 LRU 缓存中，以避免重新准备命令。下次使用该命令时，会将准备好的标识符和参数（如果有）发送到服务器，因而可以避免服务器重新解析查询。默认值：`false`。 |
| prepStmtCacheSize | 如果 `useServerPrepStmts = true`，则可以定义选项 `cachePrepStmts` 所使用的 Prepared 语句缓存大小。默认值：250。 |
| prepStmtCacheSqlLimit | 如果 `useServerPrepStmts = true`，则大于此阈值的查询将不被缓存。默认值：2048。 |
| jdbcCompliantTruncation | 截断错误（"在行 ％ 处的列 '％' 的数据被截断"，"在行 ％ 处的列 '％' 的值超出范围"）将被视为错误而不是警告。 默认值：`true`。 |
| cacheCallableStmts | 启用/禁用 Callable Statement 的缓存。 默认值：`true`。 |
| callableStmtCacheSize | 如果启用了 `cacheCallableStmts`，则设置驱动程序缓存每个 VM 的 Callable Statement 的数量。 默认值：`true`。 |
| useBatchMultiSendNumber | 当选项 `useBatchMultiSend` 是活跃状态时，设置在读取结果前可以连续发送的最大查询。 默认值：100。 |
| connectionAttributes | 当 `performance_schema` 处于活跃状态时，允许以键值对格式（例如：`connectionAttributes = key1：value1，key2，value2）`向服务器发送一些客户端信息。这些信息可以在服务器上的表 `performance_schema.session_connect_attrs` 和 `performance_schema.session_account_connect_attrs`中检索到。 |
| usePipelineAuth | 在连接期间，将执行不同的查询。如果该选项处于活跃状态，则使用管道发送查询（发送所有查询，然后读取所有结果），从而可以更快地创建连接。 默认值：`true`。 |
| enablePacketDebug | 驱动程序将保存最近的 16 个 MySQL 数据交换包（限制为前 1000 个字节）。发生 IOException 时，这些数据包的十六进制值将添加到 `stacktrace` 中。此选项对性能没有影响，但驱动程序将占用 16 KB 以上的内存。 默认值：`false`。 |
| useBulkStmts | 尽可能使用专用的 `COM_STMT_BULK_EXECUTE` 协议进行批量插入。 （不包含 `Statement.RETURN_GENERATED_KEYS` 和流的批处理）。 默认值：`false`。 |
| autocommit | 在连接初始化时设置自动提交的默认值。 默认值：`true`。 |
| galeraAllowedState | 通常，`Connection.isValid` 只是向服务器发送一个空数据包，并且服务器会发送一个小的响应以确保连接性。设置此选项后，连接器将确保 Galera 服务器状态 `wsrep_local_state` 与允许的值相对应（用逗号分隔）。例如" 4,5"，推荐为" 4"。 默认值：空。 |
| includeInnodbStatusInDeadlockExceptions | 发生死锁异常时，将 `SHOW ENGINE INNODB STATUS` 结果添加到异常跟踪。 默认值：`false`。 |
| includeThreadDumpInDeadlockExceptions | 发生死锁异常时将线程转储添加到异常跟踪中。 默认值：`false`。 |
| useReadAheadInput | 使用缓冲的 `inputSteam` 读取可用的 Socket 数据。 默认值：`true`。 |
| servicePrincipalName | 使用 GSSAPI 身份验证时，将该值用作服务主体名称（SPN），而不是使用为数据库服务器上的用户帐户定义的名称。 |
| useMysqlMetadata | 强制 `DatabaseMetadata.getDatabaseProductName()` 返回 MySQL 作为数据库，而不是实际的数据库类型。 默认值：`false`。 |
| defaultFetchSize | 驱动程序将在所有新创建的 Statement 上调用 `setFetchSize(n)`。 默认值：0。 |
| blankTableNameMeta | 结果集元数据 `getTableName` 始终返回空白。此选项主要是为了与 Oracle 数据库兼容。 默认值：`false`。 |
| serverRsaPublicKeyFile | 指明用于 `sha256_password` 和 `caching_sha2_password` 身份验证密码的 RSA 服务器公钥文件的路径。 |
| allowPublicKeyRetrieval | 当未设置 `serverRsaPublicKeyFile` 时，授权客户端检索 RSA 服务器公钥（对于 `sha256_password` 和 `caching_sha2_password` 身份验证密码）。 默认值：`false`。 |
| tlsSocketType | 指明要使用的 TLS `org.oceanbase.jdbc.tls.TlsSocketPlugin` 插件类型。 插件必须存在于`classpath` 中。 |
| credentialType | 指明要使用的凭据插件类型。插件必须存在于 `classpath` 中。 |
| trackSchema | 服务器具有 `CLIENT_SESSION_TRACK` 功能时，允许禁用 `session_track_schema` 设置。 默认值：`true`。 |

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
