OceanBase
English日本語简体中文
Docs Home
Products
Integrations
Release Notes

Databases

OceanBase DatabaseOceanBase Cloud OceanBase Best Practices

Tools

OceanBase Cloud PlatformOceanBase Migration ServiceOceanBase Developer CenterOceanBase Migration AssessmentOceanBase Admin ToolOceanBase Loader and DumperOceanBase DeployerKubernetes operator for OceanBaseOceanBase Diagnostic Tool OceanBase Binlog Service

Connectors and Middleware

OceanBase Database Proxy OceanBase Connector/C OceanBase Connector/J OceanBase Connector/ODBC OceanBase Connector/NETOceanBase Command-Line Client

Databases

OceanBase DatabaseOceanBase Cloud OceanBase Best Practices

Connectors and Middleware

OceanBase Database Proxy OceanBase Connector/C OceanBase Connector/J OceanBase Connector/ODBC OceanBase Connector/NETOceanBase Command-Line Client

Tools

OceanBase Cloud PlatformOceanBase Migration ServiceOceanBase Developer CenterOceanBase Migration AssessmentOceanBase Admin ToolOceanBase Loader and DumperOceanBase DeployerKubernetes operator for OceanBaseOceanBase Diagnostic Tool OceanBase Binlog Service
OceanBase DatabaseOceanBase Cloud ToolsConnectors and MiddlewareLifecycle Support Policy

OceanBase Database Proxy

V4.4.1
  • What is ODP?
  • Installation and deployment
    • Overview
    • Deploy ODP by using obd
    • Deploy ODP by using OCP
    • Deploy ODP by using the CLI
    • Deployment modes
  • Basic operations
  • Configuration parameter
    • View and modify parameters
    • Parameter summary
    • Global parameters
      • automatic_match_work_thread
      • block_thread_num
      • cache_cleaner_clean_interval
      • check_tenant_locality_change
      • client_max_connections
      • client_max_memory_size
      • client_session_id_version
      • client_sock_option_flag_out
      • client_tcp_keepcnt
      • client_tcp_keepidle
      • client_tcp_keepintvl
      • client_tcp_user_timeout
      • cluster_count_high_water_mark
      • cluster_expire_time
      • config_server_refresh_interval
      • congestion_fail_window
      • congestion_failure_threshold
      • congestion_retry_interval
      • connection_diagnosis_option
      • connection_pool_mode
      • connect_observer_max_retries
      • current_local_config_version
      • default_buffer_water_mark
      • default_inactivity_timeout
      • delay_exit_time
      • delay_update_entry_interval
      • detect_server_timeout
      • digest_sql_length
      • enable_abort_conn_info
      • enable_async_log
      • enable_async_pull_location_cache
      • enable_auto_restart
      • enable_bad_route_reject
      • enable_binlog_service
      • enable_cached_server
      • enable_causal_order_read
      • enable_client_connection_lru_disconnect
      • enable_client_ip_checkout
      • enable_cluster_checkout
      • enable_compression_protocol
      • enable_congestion
      • enable_connection_diagnosis
      • enable_cpu_isolate
      • enable_cpu_topology
      • enable_crash_error_log
      • enable_cross_shard_txn
      • enable_extra_prometheus_metric
      • enable_flow_control
      • enable_full_link_trace
      • enable_full_username
      • enable_get_rslist_remote
      • enable_global_ps_cache
      • enable_index_route
      • enable_monitor_stat
      • enable_ob_protocol_v2
      • enable_obproxy_rpc_service
      • enable_partition_table_route
      • enable_performance_mode
      • enable_pl_route
      • enable_primary_zone
      • enable_prometheus
      • enable_proxy_scramble
      • enable_qa_mode
      • enable_qos
      • enable_report_session_stats
      • enable_reroute
      • enable_scan_all_request
      • enable_sequence_prefetch
      • enable_sharding
      • enable_single_leader_node_routing
      • enable_standby
      • enable_stat
      • enable_strict_kernel_release
      • enable_strict_stat_time
      • enable_sync_all_stats
      • enable_syslog_file_compress
      • enable_syslog_wf
      • enable_trace
      • enable_trace_stats
      • enable_trans_detail_stats
      • enable_transaction_internal_routing
      • enable_xa_route
      • fetch_proxy_bin_random_time
      • fetch_proxy_bin_timeout
      • flow_consumer_reenable_threshold
      • flow_event_queue_threshold
      • flow_high_water_mark
      • flow_low_water_mark
      • grpc_client_num
      • grpc_thread_num
      • hot_upgrade_exit_timeout
      • hot_upgrade_failure_retries
      • hot_upgrade_rollback_timeout
      • idc_list_refresh_interval
      • ignore_local_config
      • internal_cmd_mem_limited
      • ip_listen_mode
      • is_need_skip_delay_interval_schema_changed
      • ldg_info_refresh_interval
      • listen_port
      • local_bound_ip
      • local_bound_ipv6_ip
      • log_cleanup_interval
      • log_dir_size_threshold
      • log_file_percentage
      • long_async_task_timeout
      • max_log_file_size
      • max_syslog_file_count
      • max_syslog_file_time
      • mem_leak_check_class_name
      • mem_leak_check_mod_name
      • metadb_server_state_refresh_interval
      • min_congested_connect_timeout
      • min_keep_congestion_interval
      • monitor_cost_ms_unit
      • monitor_item_limit
      • monitor_item_max_idle_period
      • monitor_log_level
      • monitor_stat_dump_interval
      • monitor_stat_high_threshold
      • monitor_stat_low_threshold
      • monitor_stat_middle_threshold
      • need_convert_vip_to_tname
      • net_accept_threads
      • net_config_poll_timeout
      • normal_pl_update_threshold
      • obproxy_config_server_url
      • obproxy_sys_password
      • partition_location_expire_relative_time
      • prometheus_cost_ms_unit
      • prometheus_listen_port
      • prometheus_sync_interval
      • protocol_diagnosis_level
      • proxy_cluster
      • proxy_hot_upgrade_check_interval
      • proxy_id
      • proxy_info_check_interval
      • proxy_local_cmd
      • proxy_mem_limited
      • qa_mode_mock_public_cloud_slb_addr
      • qos_stat_clean_interval
      • qos_stat_item_limit
      • refresh_idc_list
      • refresh_json_config
      • refresh_rslist
      • request_buffer_length
      • rootservice_list
      • rpc_client_net_write_timeout
      • rpc_client_net_read_timeout
      • rpc_async_pull_batch_max_size
      • rpc_async_task_thread_num
      • rpc_ctx_expire_time
      • routing_cache_mem_limited
      • rpc_enable_async_analyze
      • rpc_enable_async_pull_batch_tablets
      • rpc_async_pull_batch_max_times
      • rpc_async_pull_batch_wait_interval
      • rpc_enable_direct_expire_route_entry
      • rpc_enable_congestion
      • rpc_enable_lower_case_table_names
      • rpc_enable_global_index
      • rpc_enable_force_srv_black_list
      • rpc_enable_requestsm_info
      • rpc_enable_reroute
      • rpc_enable_parallel_handler
      • rpc_enable_retry_request_info_log
      • rpc_force_use_original_redis_protocol
      • rpc_enable_sub_req_log
      • rpc_force_srv_black_list
      • rpc_listen_port
      • rpc_max_request_batch_size
      • rpc_max_response_batch_size
      • rpc_max_server_table_entry_num
      • rpc_net_timeout_base
      • rpc_partition_calc_max_retries
      • rpc_redis_operation_timeout
      • rpc_request_server_entry_max_retries
      • rpc_request_timeout
      • rpc_request_max_retries
      • rpc_redis_default_database_name
      • rpc_redis_max_monitor_num
      • rpc_period_task_interval
      • rpc_redis_default_user_name
      • rpc_request_retry_waiting_time
      • rpc_server_entry_expire_time
      • rpc_request_timeout_delta
      • rpc_server_net_handler_expire_time
      • rpc_server_net_invalid_time_us
      • rpc_srv_session_pool_inactive_timeout
      • rpc_service_mode
      • rpc_server_net_max_pending_request
      • rpc_sub_request_isolation_mode
      • rpc_support_key_partition_shard_request
      • rpc_sub_request_weight
      • rpc_sub_req_max_retries
      • scan_buffered_rows_warning_threshold
      • sequence_entry_expire_time
      • sequence_fail_retry_count
      • sequence_prefetch_threshold
      • server_detect_fail_threshold
      • server_detect_mode
      • server_detect_refresh_interval
      • server_protocol
      • server_routing_mode
      • server_state_refresh_interval
      • server_tcp_init_cwnd
      • server_tcp_keepcnt
      • server_tcp_keepidle
      • server_tcp_keepintvl
      • server_tcp_user_timeout
      • session_pool_idle_timeout
      • session_pool_reset_interval
      • session_pool_stat_log_interval
      • session_pool_thread_num
      • session_pool_thread_schedule_interval
      • shard_scan_thread_num
      • short_async_task_timeout
      • skip_proxy_sys_private_check
      • skip_proxyro_check
      • slow_proxy_process_time_threshold
      • slow_transaction_time_threshold
      • sock_option_flag_out
      • sock_packet_mark_out
      • sock_packet_tos_out
      • sock_recv_buffer_size_out
      • sock_send_buffer_size_out
      • sql_table_cache_expire_relative_time
      • sql_table_cache_mem_limited
      • sqlaudit_mem_limited
      • stack_size
      • stat_dump_interval
      • stat_table_sync_interval
      • syslog_io_bandwidth_limit
      • syslog_level
      • table_entry_retry_build_limit
      • task_thread_num
      • tenant_location_valid_time
      • tunnel_request_size_threshold
      • username_separator
      • work_thread_num
      • xflush_log_level
    • Multi-level parameters
      • binlog_service_ip
      • compression_algorithm
      • enable_check_cluster_name
      • enable_client_ssl
      • enable_cloud_full_username
      • enable_read_write_split
      • enable_rpc_throttle
      • enable_server_ssl
      • enable_standby_read_write_split
      • enable_transaction_split
      • enable_weak_reroute
      • init_sql
      • mysql_version
      • ob_max_read_stale_time
      • obproxy_force_parallel_query_dop
      • obproxy_read_consistency
      • obproxy_read_only
      • observer_query_timeout_delta
      • observer_sys_password
      • observer_sys_password1
      • proxy_idc_name
      • proxy_primary_zone_name
      • proxy_route_policy
      • proxy_tenant_name
      • query_digest_time_threshold
      • read_stale_retry_interval
      • rootservice_cluster_name
      • route_diagnosis_level
      • rpc_request_throttle_waiting_time
      • rpc_throttle_limit_qps_qa
      • route_target_replica_type
      • rpc_throttle_trigger_percentage
      • slow_query_time_threshold
      • sql_firewall_config
      • ssl_attributes
      • target_db_server
      • weakread_weight_zone
  • Connection management
    • Principles
    • Session status synchronization
    • Configure a globally unique client session ID
    • Client session
    • Server session
    • Network connection
    • Session connection pool
  • Data routing
    • Factors affecting data routing
    • ODP routing
    • Intra-tenant routing
      • Overview
      • IP address-based routing
      • Partitioned table-based routing for strong-consistency reads
      • Global index table-based routing for strong-consistency reads
      • Replicated table-based routing for strong-consistency reads
      • Primary zone-based routing for strong-consistency reads
      • Strategy-based routing
      • Distributed transaction routing
      • Rerouting
      • Forcible routing
      • Weight-based load-balanced routing
      • Equality derivation for partition calculation
    • Automatic routing to the primary/standby tenants
    • Read/Write separation
    • Follower latency threshold
    • Function partition key routing
      • Overview
      • String functions
      • Numeric calculation functions
      • Date calculation functions
      • FAQ
    • Character set-based routing
    • Partitioning key types supported for routing by ODP
  • Logs
    • Overview
    • obproxy_diagnosis.log
    • obproxy_digest.log
    • obproxy_error.log
    • obproxy_slow.log
    • obproxy_stat.log
    • obproxy.log
  • Commands
    • Overview
    • Dedicated ODP commands
      • ALTER
      • KILL
        • KILL GLOBALSESSION
        • KILL PROXYSESSION
      • ping
      • SHOW
        • SHOW
        • SHOW GLOBALSESSION
        • SHOW PROXYPS
    • Compatible MySQL commands
      • BINLOG
      • KILL
      • SHOW PROCESSLIST
      • SHOW RELAYLOG EVENTS
      • SHOW SLAVE HOSTS
  • High availability mechanism
    • Overview
    • High availability of ODP services
    • High availability of OceanBase Database
    • High availability testing
  • OBKV
    • RPC service port
    • Throttling
  • Security and protocols
  • Operation and maintenance
    • Troubleshooting logic
    • Performance analysis
    • Show Trace
    • Routing diagnostics
      • Overview
      • Obtain diagnostic information
      • Diagnostic point troubleshooting
        • Overview
        • SQL_PARSE
        • ROUTE_INFO
        • LOCATION_CACHE_LOOKUP
        • ROUTINE_ENTRY_LOOKUP_DONE
        • FETCH_TABLE_RELATED_DATA
        • TABLE_ENTRY_LOOKUP_DONE
        • EXPR_PARSE
        • CALC_ROWID
        • RESOLVE_TOKEN
        • RESOLVE_EXPR
        • CALC_PARTITION_ID
        • PARTITION_ID_CALC_DONE
        • PARTITION_ENTRY_LOOKUP_DONE
        • ROUTE_POLICY
        • CONGESTION_CONTROL
        • RETRY
        • HANDLE_RESPONSE
      • Examples
    • Memory leak diagnostics
    • Connection diagnostics
    • Prometheus monitoring
    • SQL firewall
  • Release Notes
    • Version number rules
    • Enterprise Edition
      • V4.4
        • OceanBase Database Proxy Enterprise Edition V4.4.1
      • V4.3
        • OceanBase Database Proxy Enterprise Edition V4.3.6
        • OceanBase Database Proxy Enterprise Edition V4.3.5
        • OceanBase Database Enterprise Edition V4.3.4
        • ODP Enterprise Edition V4.3.3
        • ODP Enterprise Edition V4.3.2
        • ODP Enterprise Edition V4.3.1
        • ODP Enterprise Edition V4.3.0
      • V4.2
        • ODP Enterprise Edition V4.2.3
        • ODP Enterprise Edition V4.2.2
        • ODP Enterprise Edition V4.2.1
      • V4.1
        • ODP Enterprise Edition V4.1.0
      • V4.0
        • ODP Enterprise Edition V4.0.0
      • V3.2
        • ODP Enterprise Edition V3.2.11
        • ODP Enterprise Edition V3.2.3.5
    • Community Edition
      • V4.4
        • OceanBase Database Proxy Community Edition V4.4.1
      • V4.3
        • OceanBase Database Proxy Community Edition V4.3.6
        • OceanBase Database Proxy Community Edition V4.3.5
        • OceanBase Database Proxy Community Edition V4.3.4
        • ODP Community Edition V4.3.3
        • ODP Community Edition V4.3.2
        • ODP Community Edition V4.3.1
      • V4.2
        • ODP Community Edition V4.2.3
        • ODP Community Edition V4.2.1
        • ODP Community Edition V4.2.0
      • V4.1
        • ODP Community Edition V4.1.0
      • V4.0
        • ODP Community Edition V4.0.0

Download PDF

Document Feedback
  1. Documentation Center
  2. OceanBase Database Proxy
  3. V4.4.1

Rerouting

Last Updated:2026-09-04 08:25:03

Example

After rerouting is enabled, when OceanBase Database Proxy (ODP) forwards a request to an OBServer node for the first time, if the OBServer node determines that a remote plan needs to be generated for the request, it will return a packet to notify ODP of the location of the replica where the statement can be executed. Then, ODP resends the request based on the information provided in the received packet. If remote plans are generated for many read/write requests, you can enable rerouting to effectively reduce the network overhead caused by remote plans.

You can execute the following statement to set the ODP parameter ENABLE_REROUTE to True to enable rerouting:

ALTER PROXYCONFIG SET ENABLE_REROUTE = True;

Note

Only the root@proxysys and root@sys accounts have the privilege to execute the ALTER PROXYCONFIG statement.

Rerouting is supported only in the following cases:

  • The first statement of a transaction

  • Distributed transaction routing

  • Rerouting has never been performed.

  • Requests whose length is not greater than the value of the ODP parameter request_buffer_length

  • The primary zone is not specified.

  • The routing mode is not IP address-based routing.

  • The cached server is disabled.

Example

This example reroutes a request that is inaccurately routed.

  1. Enable rerouting.

    ALTER PROXYCONFIG SET proxy_primary_zone_name='';
    ALTER PROXYCONFIG SET enable_reroute = True;
    ALTER PROXYCONFIG SET enable_cached_server = False;
    
  2. Execute the following statements to create a table and execute a statement for which routing calculation cannot be correctly performed:

    • Create a table

      obclient [test]> CREATE TABLE t_reroute(C1 INT)  PARTITION BY HASH(C1) PARTITIONS 8;
      
    • Execute an SQL statement

      obclient [test]> SELECT * FROM t_reroute WHERE C1=substr('abc',1,2);
      
  3. View the routing process in the diagnostic logs.

    [2023-08-21 17:05:38.148301] [70901][Y0-00007F9A7B45A4E0] [ROUTE]((*route_diagnosis=
    Trans Current Query:"SELECT * FROM t_reroute WHERE C1=substr('abc',1,2)"
    
    Route Prompts
    > ROUTE_INFO
      [INFO] Will route to partition server or routed by route policy
    > PARTITION_ID_CALC_DONE
      [WARN] Fail to calculate first part idx
    
    Route Plan
    > SQL_PARSE:{cmd:"COM_QUERY", table:"t_reroute"}
    > ROUTE_INFO:{route_info_type:"USE_PARTITION_LOCATION_LOOKUP"}
    > LOCATION_CACHE_LOOKUP:{mode:"oceanbase"}
      > TABLE_ENTRY_LOOKUP_DONE:{table:"t_reroute", table_id:500030, partition_num:8, table_type:"USER TABLE", entry_from_remote:false}
      > PARTITION_ID_CALC_START:{}
        > EXPR_PARSE:{col_val:"C1=substr"}
        > RESOLVE_EXPR:{part_range:"[ab ; ab]"}
          > RESOLVE_TOKEN:{token_type:"TOKEN_FUNC", resolve:{"VARCHAR":"ab", collation:"utf8mb4_general_ci"}, token:"substr", expr_type:"OB_PROXY_EXPR_TYPE_FUNC_SUBSTR"}
        > CALC_PARTITION_ID:{error:-4226, part_description:"partition by hash(INT(binary)) partitions 8"}
      > PARTITION_ID_CALC_DONE:{error:-4226, partition_id:-1, level:1, partitions:"(p-1)"}
    > ROUTE_POLICY:{replica:"10.10.10.3:50111", idc_type:"SAME_IDC", zone_type:"ReadWrite", role:"FOLLOWER", type:"FULL", chosen_route_type:"ROUTE_TYPE_NONPARTITION_UNMERGE_LOCAL", route_policy:"MERGE_IDC_ORDER_OPTIMIZED", trans_consistency:"STRONG", session_consistency:"STRONG", proxy_idc_name:"zue"}
    > CONGESTION_CONTROL:{svr_addr:"10.10.10.3:50111"}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECTION_ALIVE"}
    > RETRY:{attempts:2, retry_status:"FOUND_EXISTING_ADDR", retry_type:"REROUTE", retry_addr:{10.10.10.2:50110}}
    > CONGESTION_CONTROL:{svr_addr:"10.10.10.2:50110"}
    > HANDLE_RESPONSE:{is_parititon_hit:"false", state:"CONNECTION_ALIVE"}
    )
    

    Based on the > RETRY:{attempts:2, retry_status:"FOUND_EXISTING_ADDR", retry_type:"REROUTE", retry_addr:{10.10.10.2:50110}} information in the return result, after routing calculation fails and the OBServer node generates a remote plan for the request, ODP performs tries to reroute the request.

Previous topic

Distributed transaction routing
Last

Next topic

Forcible routing
Next
on this page
Example