首批通过分布式安全可靠测评,为关键业务系统打造
数据库 URL
更新时间:2026-04-09 15:20:59
数据库 URL 是字符串,用于连接到 OceanBase 数据库并实现指定功能。
OceanBase Connector/J 允许在 URL 中添加额外的连接属性,所支持的完整的 URL 语法如下:
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 参数。
示例如下:
jdbc:oceanbase://10.XXX.XXX.XXX:1001/unittests?user=**u**@sys&password=******&
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 | 配置连接到 ODP。此时不能执行对业务 SQL 的查询,只能对 ODP 进行配置或者配置查询。默认值:false。 |
| obProxySocket | 启用富客户端功能。默认值:""。 |
| enableOb20Checksum | 基于 OB2.0 协议,控制 OceanBase Connector/J 请求包的头部校验和、尾部校验和。默认值为 ture,表示计算 CRC 校验和;否则校验和为 0。 |
| ocpAccessInterval | 访问 OCP 的间隔时间(单位:分钟)。默认值:5。 |
| httpConnectTimeout | 设置指定的超时值(单位:毫秒),以在打开指向此 URLConnection 引用的网络资源的通信链接时使用。默认值:0。 |
| httpReadTimeout | 当 URLConnection 建立到资源时,非零值指定从输入流读取时的超时时间(单位:毫秒)。默认值:0。 |
| 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。 |
| characterEncoding | 支持 MySQL URL 选项的字符编码。默认值:utf8。 |
网络连接参数
| 参数 | 描述 |
|---|---|
| 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,这样可以信任自签名证书。 可以使用以下三种方式之一:
|
| 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。说明 当前版本不支持修改此参数。 |
| useOceanBaseProtocolV20 | 是否开启 OB2.0 协议,默认开启。 |
| enableFullLinkTrace | 是否开启全链路追踪能力,默认关闭。当 enableFullLinkTrace 设置为 true 时,useOceanBaseProtocolV20 也会被强制修改为 true。 |
连接池参数
| 参数 | 描述 |
|---|---|
| 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 的数量。默认值:150。 |
| 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。 |
| clobberStreamingResults | 如果在从服务器读取所有数据之前执行另一个查询,这将导致流式结果集自动关闭,并且丢弃当前从服务器进行流式传输但传输未完成的数据。默认值:false。 |
| maxRows | 要返回的最大行数。默认值为 0,表示返回所有行。 |
| zeroDateTimeBehavior | MySQL 模式下处理无效 Date 的三种方式,有效值为 convertToNull、exception 或 round,即 ZERO_DATETIME_CONVERT_TO_NULL = "convertToNull";ZERO_DATETIME_EXCEPTION = "exception";ZERO_DATETIME_ROUND = "round"; 默认为 ZERO_DATETIME_EXCEPTION。 |
| allowNanAndInf | PreparedStatement.setDouble() 中是否允许使用 NaN 或 +/- INF 值。默认值:false。 |
| defaultConnectionAttributesBanList | 当 sendConnectionAttributes=true时,可以通过该参数来控制不发送到 Server 的 Connection Attribute 的列表,该列表用 “,”分割且区分大小写。默认值:null。 |