云数据库OceanBase入门教程 OceanBase 数据库 URL

2024-02-26 开发教程 云数据库OceanBase入门教程 匿名 2

数据库 URL 是字符串。

完整的 URL 语法如下:

jdbc:oceanbase:driver_type:[username/password]@database_specifier

URL 的第一部分 driver_type指定要使用的 JDBC 驱动程序。URL 的其余部分包含一个可选的用户名和密码,由一个斜杠,一个 @和数据库说明符分隔,用于唯一标识应用程序所连接的数据库。

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

OceanBase Connector/J 特有的配置

参数

描述

supportLobLocator

lOB Locator 开关。

默认值:true

useObChecksum

Checksum 开关,是 OceanBase 2.0 协议的一个配置。

默认值:true

useOceanBaseProtocolV20

是否使用 OceanBase Protocol 2.0。

默认值:false

complexDataCacheSize

ComplexData Cache 的大小。

默认值:50。

cacheComplexData

是否缓存 ComplexData

默认值:true

useSqlStringCache

是否将 SQLString 混存在客户端。

默认值:false

useServerPsStmtChecksum

是否使用 PS 的 Checksum。

默认值:true

基本参数

参数

描述

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

处于活跃状态时,useServerPrepStmts选项被设置为 false

默认值:false

connectTimeout

连接超时值,以毫秒为单位,如果没有超时则为零。

默认值:30000。

useServerPrepStmts

在执行之前,在服务器端准备 PrepareStatement。重复使用相同查询的应用程序具有激活该选项的值,但通常情况是使用直接命令(文本协议)。如果 rewriteBatchedStatements设置为 true,则此选项将设置为 false

默认值:false

useBatchMultiSend

驱动程序可以批量发送查询。

如果设置为 false,查询将逐一发送,等待返回结果后再发送下一个。

如果设置为 true,则将根据与 useBatchMultiSendNumber选项值(默认为 100)批量发送查询,如果超出数据包允许发送的查询数量,则根据 max_allowed_packet服务器变量发送查询,之后再读取结果,从而避免了客户端和服务器不在同一主机上时发生的大量网络延迟。

默认值:true

allowLocalInfile

允许从文件加载数据。

默认值:false

useMysqlMetadata

databaseMetaData.getDatabaseProductName()根据服务器类型返回 OceanBase 或 MySQL。

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 默认类型。

连接池参数

参数

描述

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_packetwait_timeoutautocommitauto_increment_incrementtime_zonesystem_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

允许多个查询。

例如 insert into ab (i) values (1); insert into ab (i) values (2)

默认值:false

dumpQueriesOnException

如果设置为 true,则在执行查询期间将引发包含查询字符串的异常。

默认值:false

useCompression

通过 gzip压缩与数据库的交换。当数据库不在同一位置时,可以提供更好的性能。

默认值:false

socketFactory

要使用自定义 Socket Factory,请将其设置为 javax.net.SocketFactory类的全名。

tcpNoDelay

在连接 Socket 上设置相应的选项。

tcpKeepAlive

在连接 Socket 上设置相应的选项。

tcpAbortiveClose

此选项可用于快速连续创建和关闭连接的环境中。通常,短时间内无法在这种环境中创建 Socket,因为所有本地“临时”端口都被 TCP 连接用尽了,并处于 TCP_WAIT状态。使用 tcpAbortiveClose通过重置 TCP 连接(主动关闭或硬关闭)而不是有序关闭来解决此问题。使用 socket.setSoLinger(true,0)进行强制关闭。

tcpRcvBuf

设置 TCP 缓冲区(SO_RCVBUF)的大小。

tcpSndBuf

设置 TCP 缓冲区(SO_SNDBUF)的大小。

pipe

在 Windows 上,指定命名管道名称以连接到 mysqld.exe

tinyInt1isBit

数据类型映射标志,将 MySQL Tiny 作为 BIT(Boolean)处理。

默认值:true

yearIsDateType

将 Year 作为日期类型处理,而不是数字。

默认值:true

sessionVariables

在建立成功连接时设置的 <var> = <value>对,以逗号分隔 MySQL 会话变量。

localSocket

如果服务器允许,则可以通过 Unix 域 Socket 连接到数据库。值是 Unix 域 Socket 的路径(即 Socket 数据库参数:select @@ socket)。

sharedMemory

如果服务器允许,则通过共享内存连接到数据库。值是共享内存的基本名称。

localSocketAddress

将连接套接字绑定到本地(UNIX 域)Socket 的主机名或 IP 地址。

socketTimeout

定义了网络套接字超时(SO_TIMEOUT),以毫秒为单位。值为 0 时将禁用此超时。也可以通过设置系统变量 max_statement_time来限制查询时间。

默认值:0(标准配置)或 10000 ms。

interactiveClient

会话超时由 thewait_timeoutserver变量定义。将 interactiveClient设置为 true将告诉服务器使用 interactive_timeoutserver变量。

默认值:false

useOldAliasMetadataBehavior

元数据 ResultSetMetaData.getTableName()返回物理表名称。如果设置了 useOldAliasMetadataBehavior,则发送表别名可以激活继承代码。

默认值:false

createDatabaseIfNotExist

在 URL 中创建指定的数据库(如果不存在)。

默认值:false

serverTimezone

定义服务器时区。仅在 GRE 服务器实现不同的服务器时区时使用(最好具有相同的服务器时区)。

cachePrepStmts

如果 useServerPrepStmts = true,则将准备好的信息缓存在 LRU 缓存中,以避免重新准备命令。下次使用该命令时,会将准备好的标识符和参数(如果有)发送到服务器,因而可以避免服务器重新解析查询。

默认值:true

prepStmtCacheSize

如果 useServerPrepStmts = true,则使用选项 cachePrepStmts定义准备好的语句缓存大小。

默认值:250。

prepStmtCacheSqlLimit

如果 useServerPrepStmts = true,则大于此阈值的查询将不被缓存。

默认值:2048。

jdbcCompliantTruncation

截断错误(“在行 % 处的列 '%' 的数据被截断”,“在行 % 处的列 '%' 的值超出范围”)将被视为错误而不是警告。

默认值:true

cacheCallableStmts

启用/禁用调用语句缓存。

默认值:true

callableStmtCacheSize

如果启用了 cacheCallableStmts,则设置驱动程序缓存每个 VM 的可调用语句的数量。

默认值:true

useBatchMultiSendNumber

当选项 useBatchMultiSend是活跃状态时,设置在读取结果前可以连续发送的最大查询。

默认值:100。

connectionAttributes

performance_schema处于活跃状态时,允许以键值对格式(例如:connectionAttributes = key1:value1,key2,value2)向服务器发送一些客户端信息。这些信息可以在服务器上的表 performance_schema.session_connect_attrsperformance_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

驱动程序将在所有新创建的 Statements 上调用 setFetchSize(n)

默认值:0。

blankTableNameMeta

结果集元数据 getTableName始终返回空白。此选项主要是为了与 Oracle 数据库兼容。

默认值:false

serverRsaPublicKeyFile

指明用于 sha256_passwordcaching_sha2_password身份验证密码的 RSA 服务器公钥文件的路径。

allowPublicKeyRetrieval

当未设置 serverRsaPublicKeyFile时,授权客户端检索 RSA 服务器公钥(对于 sha256_passwordcaching_sha2_password身份验证密码)。

默认值:false

tlsSocketType

指明要使用的 TLS org.oceanbase.jdbc.tls.TlsSocketPlugin插件类型。 插件必须存在于classpath中。

credentialType

指明要使用的凭据插件类型。插件必须存在于 classpath中。

trackSchema

服务器具有 CLIENT_SESSION_TRACK功能时,允许禁用 session_track_schema设置。

默认值:true