V4.4.2 BP3
バージョン情報
- リリース日:2026年09月08日
- バージョン番号:V4.4.2 BP3
- 分散RPMバージョン番号:oceanbase-4.4.2.3-103000082026090723
アップグレードの手順
V4.4.2 BP3へのアップグレードは、以下のパスで行うことを推奨します:
- V4.4.2/V4.4.2 BP1~BP2からは、直接V4.4.2 BP3にアップグレードできます。
- V4.4.0/V4.4.0 BP1/V4.4.1からは、直接V4.4.2 BP3にアップグレードできます。
- V4.3.5/V4.3.5 BP1~BP5からは、まずV4.3.5 BP6へアップグレードしてから、V4.4.2 BP3にアップグレードする必要があります。
- V4.2.5/V4.2.5 BP1~BP6からは、まずV4.2.5 BP7へアップグレードしてから、V4.4.2 BP3にアップグレードする必要があります。
機能強化
高可用性、プライマリ/スタンバイ、ディザスタリカバリ
バックアップタスクのディスク満杯動作の最適化:バックアップタスクの実行中、ターゲットサーバーのディスク容量が不足した場合、タスクは直接失敗します。このような失敗の確率を低減するため、本バージョンでは関連動作を最適化しました。バックアップタスクをスケジュールする前に、ディスク使用率が事前設定されたしきい値を超えるサーバーはスケジューリングに参加しなくなります。バックアップ実行中にディスク容量不足が発生した場合、タスクは自動的に再試行されますが、再試行は最大待機時間によって制限され、タイムアウト後にタスクは失敗します。
ログバックアップ機能のサポート:新たに「アーカイブバックアップ」機能を追加し、一次ログアーカイブの宛先
LOG_ARCHIVE_DEST内の古いログアーカイブファイルを独立した二次宛先BACKUP_ARCHIVE_DESTにコピーします。主に階層型または異種媒体間でのログ保存に利用され、一次に最新ログを、二次に古いログを保存します。異なるストレージディレクトリへの手動バックアップのサポート:手動でバックアップをトリガーし、自動バックアップとは異なるストレージディレクトリに書き込むことをサポートします。これにより、既存のバックアップポリシーに加えて、より柔軟にバックアップデータセットを作成できます。
アービトレーションサービスのPrometheus監視機能:アービトレーションサービスarbserverのPrometheus監視機能を新たに追加し、標準の
GET /metricsインターフェースを提供します。これにより、CPU/メモリ/ディスク使用率、管理しているクラスタ/テナント/ログストリーム(LS)の数、各LSにリーダーが存在するかどうか、選出回数、設定/モードバージョンの変更、RPC遅延などの指標を公開し、DBAがアービトレーションサービスの異常やレプリカの降格問題を特定しやすくします。
Oracle互換性の強化
XML処理PLパッケージ機能の強化(Oracleモード):XML関連のシステムパッケージをさらに改善し、XML解析、ノード走査、オブジェクト変換機能を追加しました。新たに
DBMS_XMLDOMメソッド、DBMS_XMLPARSER.PARSEBUFFERおよびXMLTYPE.TOOBJECTなどのインターフェースを追加しました。XML XPathの添字による要素の取得(Oracleモード):XMLTYPEデータは、位置述語(添字)による要素の特定をサポートします。例:
xmltype(...).extract('/a/b[2]/text()')。UTL_FILE.IS_OPEN/UTL_FILE.FGETATTRのサポート:UTL_FILE.IS_OPENおよびUTL_FILE.FGETATTRインターフェースを新たに追加し、ファイルハンドルが開いているかどうかを判断し、ファイルの存在、ファイル長、ブロックサイズなどの属性情報を取得するために使用します。Oracleトランザクション一時テーブルのパフォーマンス最適化(Oracleモード):Oracle互換モードでは、トランザクションレベルの一時テーブルは、コミットごとに「tabletを削除して再作成する(delete+recreate tablet)」方式で一時テーブルデータをクリアし、tabletの再構築コストが高く、redo/メタデータへの負荷が大きいという問題がありました。これは、頻繁な小規模トランザクションのシナリオで特に顕著でした。この機能では、Truncate Tabletメカニズムを導入し、コミット時にtabletデータをクリアしてtabletを直接再利用します。同一セッション内のトランザクションレベルの一時テーブルは再利用可能となり、コミット時の遅延が大幅に低減されます。
OracleモードDDL命名衝突検出の強化:インデックス名、主キー制約名、一意性制約名の同名検証範囲をテーブルレベルからデータベースレベルに拡張しました。
CREATE INDEX、CREATE TABLE(インラインのPK/UKを含む)、ALTER TABLE ADD PRIMARY KEY/UNIQUE、ALTER INDEX RENAMEを実行する際、データベース全体で名前が他のインデックスや制約によって使用されていないか検証されます。これにより、Oracleの動作と一致します。MySQLモードは影響を受けません。
MySQL互換性の強化
- MySQLモードでのPL非同期化のサポート:MySQLモードでは、PL実行の非同期化をサポートしています。非同期実行可能なPLロジックをバックグラウンドにスケジュールし、時間のかかるPLがセッションやテナントの応答に与える影響を軽減します。
パフォーマンス最適化
PL実行パフォーマンスの最適化:複合型のコンストラクターの事前計算、式のLLVMコンパイル実行のサポート、UDTメモリ管理の最適化、コメントを含む匿名ブロックのパラメータ化のサポート、DML文における複合型のメモリ使用戦略の最適化。
実行パフォーマンスの最適化:中規模パラレル実行(並列度4000)のパフォーマンス最適化、リモート読み取り(DAS)のパフォーマンス最適化。
ストレージパフォーマンスの最適化:百万単位のパーティションシナリオにおけるダンプフリーズの最適化、複数IOワーカースレッドによるトランザクションログ(clog)の並列書き込みの実装。
ネットワーク応答パケットサイズの最適化:PS(Prepared Statement)シナリオにおけるメタデータ応答パケットを最適化します(制御パラメータ
enable_ps_meta_response_optimize)。パーティションの分割の最適化:パーティションの分割中および分割完了後のクエリパフォーマンスを最適化し、分割処理中のクエリパフォーマンスの変動を低減します。
Barrierログリプレイのパフォーマンス最適化。
ディスク使用量の均等化戦略の最適化:マシン間/ゾーン間でディスク使用量を均等化するスケジューリング戦略を最適化し、データ分布の不均衡による容量の偏りを減らします。従来のメカニズムは主にログストリームグループ内のパーティショングループ間の交換に依存していたため、ログストリーム数に対してパーティション数が少ない場合、空のログストリームが存在する場合、または異なるログストリームグループ間でパーティションの差異が大きい場合には均等化が困難でした。今回の最適化では、ログストリーム間でのパーティション移行やログストリームグループ間でのパーティショングループ交換をサポートし、ログストリームグループ間の格差を縮小することを目的とした均衡を実現し、各OBServerノード間のディスク使用量を可能な限り均等にします。
観測可能性と診断
SQLクエリプランキャッシュ診断の強化:SQLクエリプランキャッシュ(Plan Cache)の診断機能を強化し、DBAがプランキャッシュミス、プランをキャッシュできない問題、再コンパイルの比率が高い問題などを分析しやすくします。
[G]V$OB_PLAN_CACHE_STAT(HIT_COUNT/HIT_RATE/PLAN_NUMなどの指標を含む)および[G]V$OB_PLAN_CACHE_PLAN_STAT(PLAN_STATUS/CREATE_REASON/PARAMS_VALUEなどを含む)を参照できます。ASHロック診断とデータベース単位の診断の強化:ASHによるロック診断とデータベース単位の診断を新規追加し、SQLプラン、実行、パフォーマンス診断の連携をカバーします。
PSシナリオ診断の使いやすさの強化:PS/PLシナリオで生成されるプランにはパラメータ情報が記録されておらず、プランが最適でない原因が、プランの共有にあるのか、生成時にあるのかを区別するのが困難でした。このバージョンでは、PSリクエストがプランを生成する際にパラメータをPlan Cacheに記録し、
[G]V$OB_PLAN_CACHE_PLAN_STAT.PARAMS_VALUEで表示することで、DBAがPSパラメータのバインディングとオーバーロード解決を分析しやすくします。LOB整合性検証と復元:LOBデータがメインテーブルと補助テーブルに分離して保存されている場合、異常によりデータの不整合が生じる可能性があります。このバージョンでは、完全な整合性保証ソリューションを提供します:メインテーブルにデータが存在するのに補助テーブルには存在しない、その逆に補助テーブルにのみ存在する、両者のデータ長が一致しない、という3種類の異常を検出するため、メインテーブルと補助テーブルの整合性検証を定期的または手動でトリガーすることをサポートします。
dbms_lob_managerシステムパッケージを使用してデータ修復、タスク制御、進捗監視を行えます。リソースマネージャー(Resource Manager)機能を統合し、LOB整合性検証タスクに対するリソース制限をサポートし、バックグラウンドでのスキャンが業務パフォーマンスに影響を与えるのを防ぎます。DBA_OB_LOB_CHECK_TASKSおよびDBA_OB_LOB_CHECK_EXCEPTION_RESULTビューを新規追加し、タスクの進捗状況と異常の詳細をリアルタイムで表示することで、LOBデータの不整合によるクエリ失敗やディスク膨張問題を解決します。
その他の機能
CPUアーキテクチャのサポートとパフォーマンス最適化:AWS Graviton(ARM)プロセッサ向けにパフォーマンス最適化を行い、最適化後のパフォーマンスはIntelプロセッサとほぼ同等になります。
Java UDFのサンドボックスへの対応(MySQL / Oracleモードどちらでも可):このバージョンでは、Java UDFランタイムを独立したサブプロセス(サンドボックス)で実行し、JVMをOBServerメインプロセスから分離することで、外部言語がOBServerメインプロセスに与える影響を低減します。構成パラメータ
ob_enable_java_udf_sandboxを使用して、「JNI組み込み実行」と「サンドボックス隔離実行」を切り替えることができます(デフォルトはFalseで、既存のJNI組み込みJVMパスを維持します)。切り替えにはシステムテナントでALTER SYSTEM SET ob_enable_java_udf_sandbox = True;を実行する必要があり、新バージョンのJava SDKと併用する必要があります。エコシステム互換性と式の機能強化:
retention関数を新規追加し、max_pt関数の互換動作を改善し、JSON式でのパラメータ化をサポートし、動的パーティションで文字列型の日時列をサポートします。PSシナリオでformat outlineをサポート:PS/PLシナリオでFormat Outlineバインディングをサポートします。1つのFormat Outlineルールで、INパラメータ数が異なるバリエーションをカバーできます。プラン生成時にパラメータ値を記録し、
[G]V$OB_PLAN_CACHE_PLAN_STAT.PARAMS_VALUEで表示することで、プラン生成時の問題とプラン共有の問題を区別しやすくします。SaaSシナリオでOutlineのワイルドカードバインディング(BINDING_RULE):
CREATE OUTLINE ... BINDING_RULE()構文を新規追加し、データベース/テナントレベルでのデータベース/テーブル分割Outlineバインディングをサポートします。MAP句では正規表現変数(例:table_${S:[a-z]+})を使用でき、データベース/テーブルを跨いだOutlineのマッチングをサポートし、運用保守の使いやすさを向上させます。ユーザーパスワードでSM3暗号化をサポート:独立認証プラグイン
ob_sm3_passwordを新規追加し、中国の商用暗号アルゴリズムSM3を使用してユーザーパスワードを暗号化し、中国の等級保護制度および中国製暗号技術に関するコンプライアンス要件を満たします。システム変数default_authentication_plugin = 'ob_sm3_password'を使用してデフォルト認証方式に設定でき、構成パラメータob_sm3_password_digest_rounds(デフォルト5000、範囲[5000,4095000])を使用してダイジェストラウンド数を制御できます。
OBCDCとデータ同期
OBCDCのサービス化(分散CDC):分散サービス型CDCクラスタアーキテクチャを新規導入しました。分散CDCはCDCを複数の独立した水平スケーラブルなサービスロールに分割します:Coordinator(クラスタ管理、タスクスケジューリング、障害回復)、LogFetchService(LSごとにトランザクションログを抽出しローカルキャッシュする)、CDCWorker(トランザクションの組み立て、ソート、REDO解析とフォーマット)、MsgStorager(メッセージをオブジェクトストレージに永続化し、設定可能な保持期間をサポートする)、MsgService(マルチウェイマージソート、形式変換、クライアントへの配信)。CDCクラスタはODP(OBProxy)を介して統一的にアクセスされ、クライアントは内部トポロジーを意識する必要がありません。
適用シナリオは以下の通りです:大規模テナントのCDCリンク(単一マシンでは全量ログ処理をサポートできない場合)、大規模な単一テーブルの同期(行のハッシュに基づくシャーディングにより、複数クライアントで並列にデータを処理可能)、MySQLテナントBinlogのサービス化出力(全テナントレベルのデータ同期)、および下流の複数サブスクライバーが同一テナントの異なるサブスクリプション範囲を同時に消費する場合。
CDCの安定性とパフォーマンスの強化:CDCプロセスのメモリ使用量、CPUオーバーヘッド、遅延ジッターを低減し、単一マシン/集中型CDCリンクの安定性を向上させます。
プロダクト動作の変更
動作 |
変更前 |
変更後 |
影響 |
|---|---|---|---|
Oracleモードのpackage SERIALLY_REUSABLE句 |
OBでは、packageのspecとbodyでSERIALLY_REUSABLEの指定の有無が異なる場合(specのみ指定、またはbodyのみ指定)も許容されており、同じpackageのspecとbodyで状態のライフサイクルが一致していませんでした。 |
Oracleの動作に合わせ、specとbodyの両方に指定する、両方とも指定しない、またはspecのみに指定する(bodyはこの属性を継承する)必要があります。この条件に反する場合は、DDL時および初回コンパイル時にエラーが返されます。 | Oracleから移行したpackageには、一般的に影響ありません。OB上で新規作成し、bodyのみに指定しているpackageは、アップグレード後に句を調整して再作成する必要があります。 |
| 予約語/非予約語を照会するビュー | この機能は利用できませんでした(または外部に提供されていませんでした)。 | ビューV$OB_KEYWORDSを新規追加し、KEYWORD/LENGTH/TYPE(SQL/PL)/RESERVED列を含み、予約語/非予約語のクエリをサポートします。 |
SQLオブジェクトの命名、SQL移行、スキーマ互換性チェックを容易にします。MySQLおよびOracleモードで利用可能です。 |
| ARRAY要素タイプとサイズ | ARRAY型要素に16MBのサイズ制限がありました | ARRAY(TEXT)/ARRAY(MEDIUMTEXT)/ARRAY(STRING)/ARRAY(LONGTEXT)などのLOB/長文要素をサポートします(ARRAY(STRING)はMEDIUMTEXTと同等)。ARRAY要素の最大サイズを512MBに引き上げます。 |
JSON/ARRAYの組み合わせアクセスおよび移行シナリオにおいて、配列要素が長文である業務テーブルに適用されます。 |
| パーティションの分割のしきい値 | auto_split_tablet_sizeのデフォルト値が低く(2GB)、tabletが小さいうちに自動分割がトリガーされていました |
デフォルト値を2GBから64GBに調整し、tabletサイズが64GBを超えた場合にのみ自動分割をトリガーします。これにより、分割頻度が低下し、分割プロセス中のクエリパフォーマンスの変動が抑えられます。 | 自動分割に依存するテーブルは、アップグレード後に分割動作が変化する可能性があります(分割のタイミングが遅くなったり、回数が減ったりする)。分割頻度を観察することを推奨します。このデフォルト値は、既に作成された自動パーティションテーブルには適用されません。必要に応じてテーブルを再作成するか、テーブルレベルの分割しきい値を調整する必要があります。 |
| BOM付きUTF-8データファイルの外部テーブル読み取り | OBの外部テーブルは、ファイルヘッダーのBOM(EF BB BF)バイトを通常の文字として扱い、最初の列のデータが異常になっていました | 外部テーブルFORMATはbyteordermark = {check\|nocheck}プロパティをサポートしています。checkはBOMを検出してスキップします(指定しない場合は検出しません)。CSV/テキスト外部テーブルに適用されます |
BOM付きファイルに対する外部テーブルの互換性を向上させます。検出を有効にするには、明示的にcheckを指定する必要があります。 |
ROUNDによる文字型入力の処理 |
OBのMySQLモードでは、ROUND(文字型/文字列, 2)の入力値が先にdoubleに変換され、結果に2桁の小数が付きました(例:ROUND('1000',2)は1000.00を返す)。これはネイティブMySQLと一致しませんでした |
ネイティブMySQLとの整合性を図るため、文字型の入力にROUNDを適用する際、余分な小数位が生成されなくなりました(ROUND('1000',2)は1000を返すなど)。 |
MySQL互換性が向上しました。VARCHAR列のROUND結果はネイティブMySQLと一致します。既存の旧動作に依存するシナリオは、見直す必要があります。 |
ビューの変更
ビュー名 |
変更タイプ |
説明 |
|---|---|---|
V$OB_KEYWORDS(MySQL / Oracle) |
新規ビュー | KEYWORD、LENGTH、TYPE、RESERVED列を提供し、SQL/PLキーワードと予約語かどうかのクエリに使用します。 |
DBA_OB_LOB_CHECK_TASKS(MySQL / Oracle)、CDB_OB_LOB_CHECK_TASKS(sysテナント) |
新規ビュー | LOB検証および復元タスクの範囲、ステータス、スキャン進捗状況、異常/修正数を確認します。TASK_SCOPE、TASK_ID、STATUS、SCAN_INDEX、MISS_CNT、MISMATCH_LEN_CNT、ORPHAN_CNT、CORRECT_CNTなどの列が含まれます。 |
DBA_OB_LOB_CHECK_EXCEPTION_RESULT(MySQL / Oracle)、CDB_OB_LOB_CHECK_EXCEPTION_RESULT(sysテナント) |
新規ビュー | LOBの整合性異常があるテーブル、ログストリーム、tablet集合、異常タイプを確認します。TABLE_ID、TABLE_NAME、LS_ID、TABLET_IDS、INCONSISTENCY_TYPEなどの列が含まれます。 |
CDB_OB_BACKUP_JOBS / DBA_OB_BACKUP_JOBS、CDB_OB_BACKUP_JOB_HISTORY / DBA_OB_BACKUP_JOB_HISTORY |
既存フィールドに新しい値を追加 | BACKUP_TYPEにBACKUP_ARCHIVE、BACKUP_ARCHIVE_DELETE_INPUTを追加し、ログアーカイブバックアップタスクおよびバックアップ後の一次ログクリーンアップタスクを識別するために使用します。ビュー及びフィールドは既に存在します。 |
CDB_OB_ARCHIVELOG_PIECE_FILES / DBA_OB_ARCHIVELOG_PIECE_FILES |
新列 | BACKUP_FILE_STATUSを新規追加し、アーカイブバックアップ宛先にあるログPieceのステータスを表示します。既存のFILE_STATUSは一次アーカイブ宛先のステータスを表示し続けます。 |
CDB_OB_BACKUP_DELETE_JOBS / DBA_OB_BACKUP_DELETE_JOBS、CDB_OB_BACKUP_DELETE_JOB_HISTORY / DBA_OB_BACKUP_DELETE_JOB_HISTORY |
既存フィールドに新しい値を追加 | TYPEにDELETE BACKED UP ARCHIVELOG PIECEを追加し、バックアップ済みログPieceをクリーンアップするタスクを識別するために使用します。ビュー及びフィールドは既に存在します。 |
GV$OB_PLAN_CACHE_PLAN_STAT / V$OB_PLAN_CACHE_PLAN_STAT(MySQL / Oracle) |
新列 | PARAMS_VALUEを新規追加し、PSリクエストが計画を生成する際に記録されたパラメータ値を表示します。これにより、計画の生成と共有の問題を区別しやすくなります。 |
GV$ACTIVE_SESSION_HISTORY / V$ACTIVE_SESSION_HISTORY、GV$OB_ACTIVE_SESSION_HISTORY / V$OB_ACTIVE_SESSION_HISTORY、DBA_WR_ACTIVE_SESSION_HISTORY(MySQL / Oracle)、CDB_WR_ACTIVE_SESSION_HISTORY(sysテナント) |
新列 | DATABASE_ID、HOLDER_SQL_ID、HOLDER_QUERY_SQL、ROWKEYを新規追加し、データベース単位およびロック保持セッション関連の診断に使用します。 |
DBA_OB_OUTLINES / DBA_OB_FORMAT_OUTLINES / DBA_OB_OUTLINE_CONCURRENT_HISTORY(MySQL / Oracle) |
新列 | PATTERN_RULESを新規追加し、アウトラインのパターンマッチングルールを表示します。 |
ALL_TABLES / USER_TABLES / DBA_TABLES(Oracle) |
既存列の計算ロジックを調整 | HAS_IDENTITYを列のidentityマーカーに基づいてYES / NOを返すように変更しました。ALL_TABLES、USER_TABLESは以前空値を返していましたが、DBA_TABLESは以前自動インクリメント列情報に基づいて判断していました。 |
CDB_TABLES(sysテナント)、DBA_TABLES(MySQL / Oracle) |
既存列の計算ロジックを調整 | STORE_FORMATを列グループ情報に基づいてROW、COLUMN、ROW_WITH_COLUMNを判断するように変更しました。フィールド名と値の集合は追加されていません。 |
CDB_MVREF_STATS(sysテナント)、DBA_MVREF_STATS(MySQL / Oracle)、USER_MVREF_STATS(Oracle) |
クエリ定義を調整 | ビュークエリにオプティマイザーヒントを追加し、rowgoal最適化を無効にします。新しい列は追加されていません。 |
DBA_OB_PL_OBJ_CACHE_STATUS(Oracle) |
クエリ定義を調整 | PLキャッシュオブジェクトの状態を照会するシステムパッケージの呼び出しにスキーマ(Schema)修飾を追加しました。新しい列は追加されていません。 |
構文、関数、プロトコルの変更
カテゴリ |
名前/構文 |
適用モード |
説明 |
|---|---|---|---|
| 暗号化アルゴリズム | CREATE USER ... IDENTIFIED WITH ob_sm3_password / ALTER USER ... IDENTIFIED WITH ob_sm3_password |
MySQL / Oracle | 独立認証プラグインを新規追加し、中国の商用暗号アルゴリズムSM3でユーザーパスワードを暗号化することで、中国の等級保護制度および中国製暗号技術に関するコンプライアンス要件を満たします(システム変数 default_authentication_plugin でデフォルト認証方式として設定し、構成パラメータ ob_sm3_password_digest_rounds でダイジェストラウンド数を制御できます) |
| PLインターフェース | UTL_FILE.IS_OPEN(file) RETURN BOOLEAN / UTL_FILE.FGETATTR(location, filename, fexists OUT, file_length OUT, block_size OUT) |
Oracle | ファイルハンドルがまだ開いているかどうかを判断します。ファイルの存在、長さ、ブロックサイズを照会します(Oracle互換) |
| 関数 | retention |
Oracle / MySQL | retention 関数を新規追加し、HOLOなどのエコシステムSQL移行を容易にします |
| 関数 | max_pt |
Oracle / MySQL | max_pt 関数の互換動作を改善します |
| XMLクエリ | xmltype(...).extract('/a/b[2]/text()') 添字による要素の取得 |
Oracle | XPathは添字(位置述語)を使用して要素を特定できます。既知の制限:このバージョンではXPathが完全に実装されていないため、ネストされた位置述語は現在サポートされていません |
| PLスケジューリング | MySQLモードPL非同期化 | MySQL | 非同期実行可能なPLロジックをバックグラウンドでスケジュールして実行することをサポートします |
| パーティションDDL | 動的パーティションが文字列型の日時列をサポート | MySQL / Oracle | 動的パーティション(自動パーティション作成)は、文字列型の日時列をパーティションキーとしてサポートします |
| SQL/PL | JSON式のパラメータ化 | Oracle / MySQL | JSON抽出式がパラメータ化をサポートし、同じ構造の繰り返しコンパイルによるオーバーヘッドを削減します |
| プロトコル/転送 | 大規模結果セットのネットワーク応答パケットの最適化 | MySQL / Oracle | 高同時実行環境下でネットワーク応答パケットが大きすぎることによる帯域幅の消費を抑え、TPSのボトルネックを緩和します |
| PL構文 | package SERIALLY_REUSABLE 句 |
Oracle | package specとbodyは、両方にSERIALLY_REUSABLEを指定するか、両方とも指定しないか、またはspecのみ指定する必要があります(bodyはこの属性を継承します)。一貫性がない場合、DDLフェーズと初回コンパイルフェーズでエラーが発生します(Oracleとの整合性を図るため) |
| PL構文 | ASYNC_COMMIT procedureアノテーション / ob_enable_pl_async_commit |
MySQL | ASYNC_COMMITアノテーションでストアドプロシージャをマークし、最後のcommit時に非同期コミット方式で実行します(デフォルトで無効、テナントレベルで有効にする必要があります) |
| 外部テーブル/インポート | FORMAT (..., byteordermark = {check\|nocheck}) |
MySQL / Oracle | 外部テーブル(CSVなど)を読み取る際にUTF-8 BOMを検出してスキップします(check)。指定しない場合は検出しません |
| PLシステムパッケージ | DBMS_XMLDOM.*(NEWDOMDOCUMENT/CREATELEMENT/CREATETEXTNODE/APPENDCHILD/REMOVECHILD/GETDOCUMENTELEMENT/WRITETOBUFFER/WRITETOCLOB/SETATTRIBUTEなど)/ DBMS_XMLPARSER.PARSEBUFFER / XMLTYPE.TOOBJECT |
Oracle | XML DOM/Parserシステムパッケージのメソッドとノード操作を新規追加し、XML解析、ノード走査、オブジェクト変換機能を補完します |
| バックアップ管理 | ALTER SYSTEM SET BACKUP_ARCHIVE_DEST = 'LOCATION=<uri>' [TENANT = <tenant>] |
Both | アーカイブバックアップの宛先(二次媒体)を設定します。LOG_ARCHIVE_DESTのパスとは異なる必要があります |
| バックアップ管理 | ALTER SYSTEM BACKUP ARCHIVELOG ALL [DELETE INPUT] [TENANT = <tenant>] |
Both | 1回のアーカイブバックアップを開始します(非同期タスク)。DELETE INPUTを指定すると、今回のバックアップがすべて成功した後に、一次保存先のログファイルをクリーンアップします |
| バックアップ管理 | ALTER SYSTEM BACKUP DATABASE TO '<dest>' [PLUS ARCHIVELOG] |
Both | ユーザーテナントが指定されたストレージディレクトリに手動でバックアップします。PLUS ARCHIVELOGはログの同時バックアップを意味します |
| バックアップ管理 | ALTER SYSTEM BACKUP TENANT = <tenant> TO '<dest>' |
Both | システムテナントから実行する手動バックアップ:1つのテナントのみ指定が許可され、必須です |
| バックアップ管理 | ALTER SYSTEM ADD RESTORE SOURCE '<...>' / RESTORE ... FROM 'data_set,log_dest,backup_archive_dest' |
Both | アーカイブバックアップが存在する場合、復元にはadd restore sourceでBACKUP_ARCHIVE_DESTを提供するか、from URIにアーカイブバックアップの宛先を追加する必要があります |
構成パラメータの変更
構成パラメータ |
型 |
デフォルト値 |
有効レベル |
適用テナント |
説明 |
|---|---|---|---|---|---|
ob_enable_java_udf_sandbox |
BOOL | False |
テナント | Oracle / MySQL | Java UDFが独立したサブプロセス(サンドボックス)内で実行されるかどうかを制御し、OBServerのメインプロセスから隔離することで、外部言語の異常がメインプロセスに与える影響を軽減します。新バージョンのJava SDKと併用する必要があります |
prometheus_metrics_port |
INT | 2886 |
クラスタ(arbserver、静的) | Both | アービトレーションサービスPrometheusの監視ポートです。0はメトリクスインターフェースを無効にします。変更にはarbserverの再起動が必要です |
ob_enable_pl_async_commit |
BOOL | False |
テナント | MySQL | MySQLモードPLの非同期コミットを制御します。デフォルトで無効で、テナントレベルで有効にする必要があります |
enable_ps_meta_response_optimize |
BOOL | False |
テナント | Both | 有効にすると、PSステートメントの結果メタデータは初回実行後にのみ返され、クラスタの帯域幅消費を削減します |
BACKUP_ARCHIVE_DEST |
STRING | - | クラスタ | Both | ログアーカイブのバックアップ宛先 |
関連コンポーネント
OceanBaseデータベースV4.4.2 BP3で推奨されるプラットフォームツールのバージョンは以下の通りです:
コンポーネント |
バージョン |
備考 |
|---|---|---|
| OBProxy | obproxy 4.3.6.5 | caching_sha2_passwordと一時テーブルのルーティング戦略の最適化には、OBProxy 4.4.1が必要です。ob_sm3_passwordにはODP 4.4.2.0(このバージョンはリリース予定)が必要です |
| OCP | OCP 4.5.0 | - |
| ODC | ODC 4.5.0 | - |
| OBCDC | OBCDC 4.4.2.3 | - |
| OMS | 4.3.2 BP3 | 4.4.2.2バージョンの増分データ取得に関わらないシナリオでは、4.3.2 BP3を使用できます。増分データ取得に関わるシナリオは、現在サポートされていません |
| Binlog | - | このバージョンに対応するバージョンは提供されていません |
| OCCI | occi 1.0.6 | - |
| OBCI | OBCI 2.1.1.3 | - |
| ECOB | ecob 1.2.1 | - |
| obclient | obclient 2.2.14 | - |
| libobclient | libobclient 2.2.14 | - |
| OBJDBC | JDBC 2.4.18 | - |
| ODBC | ODBC 2.0.9.9 | - |
| dotnet | dotnet 1.3.0 | - |
| obloader | - | このバージョンに対応するバージョンはありません |
| devdeps-java-extensions | 1.0.5 | - |
V4.4.2 BP2 Hotfix4
バージョン情報
- リリース日:2026年08月28日
- バージョン番号:V4.4.2 BP2 Hotfix4
- 分散RPMバージョン番号:oceanbase-4.4.2.2-102040012026082612
- スタンドアロン版RPMバージョン番号:oceanbase-standalone-4.4.2.2-102040012026082612
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- スイッチオーバー中はリカバリレポートをブロックするようにしました。
- update_table_id_for_pseudo_columnsにおける非疑似列式のスキップ。
- SPMの計画進化でプランを切り替える際にパフォーマンス統計が誤る問題を修正しました。
- MDSダンプ時にtabletのバケットロックの適用範囲を縮小しました。
- ObIOFaultDetectorのバグ修正。
- PLにおいてNULLとNON-NULLパラメータが混在するバッチ挿入文にバッチ実行の最適化が適用されない問題の修正。
- IPalfイテレータエントリヘッダの初期化の修正。
- ObUserDefinedType::do_deserialize_objの失敗時の処理分岐におけるメモリリークの修正。
- stmt fetchにおけるtext LOBピースデータの文字セット変換の修正。
- マテリアライズドビューのリフレッシュ監視に関する一部の不具合の修正。
V4.4.2 BP2 Hotfix3
バージョン情報
- リリース日:2026年08月18日
- バージョン番号:V4.4.2 BP2 Hotfix3
- 分散RPMバージョン番号:oceanbase-4.4.2.2-102030022026081714
- スタンドアロン版RPMバージョン番号:oceanbase-standalone-4.4.2.2-102030022026081714
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- 従来の複数値インデックススキーマにおけるjson_queryの空パスの互換性問題を修正しました。
- 増分ダイレクトロード時のDDL書き込み停止要否チェックの問題を修正しました。
- CONNECT BYの循環チェックを最適化しました。
- DISTINCT集約プランの生成時にローカルプランが失われる問題を修正しました。
- ext infoコールバックで、フリーズが新しいラウンドに移行した場合はフリーズの待機を終了するようにしました。
- update_tablet_table_storeの同時実行と再試行に関する問題を修正しました。
- BLOB型の不一致の問題を修正しました。
- PLの非同期コミットがハングする問題を修正しました。
- ネストされたObSqlArrayに対する空の代入の問題を修正しました。
- バックアップモードのMacroBlockIdのハッシュ衝突により、do_copy_idsの計算量がO(n^2)になる問題を修正しました。
- 読み取り専用セッションでALTER SESSION SETがエラー-5220で拒否される問題を修正しました。
- マテリアライズドビューのリライトにおける_enable_mv_nestedのチェックの不具合を修正しました。
- ディスパッチ用メモリの割り当て枠を使い切った際に発生する、CDCの行外LOBのデッドロックを解消しました。
- kill_refreshに関する問題を修正しました。
- 定数伝播とロスレスキャストの推論で、冗長なキャストを回避するようにしました。
- 更新対象のtabletポインタパラメータを取得する前にmemtableを更新することで、table store更新時にエラー4023が発生する問題を修正しました。
- テーブル構造変更時のCDCデータディクショナリのメモリリーク問題を修正。
- ObDASTaskArgのシリアライズサイズ不整合が原因で発生するOBSERVERクラッシュを修正。
- デフォルトのコミット後ワーカー数を1に設定。
V4.4.2 BP2 Hotfix1
バージョン情報
- リリース日:2026年07月15日
- バージョン番号:V4.4.2 BP2 Hotfix1
- RPMバージョン番号:oceanbase-4.4.2.2-102010032026071509
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
誤ったバージョンのLZ4圧縮パッケージを呼び出したことによるマージ検証失敗の問題を修正しました。
NVL関数におけるクエリ範囲抽出エラーの問題を修正しました。
SPM進化中のコアダンプ問題を修正しました。
psでunionをvaluesに変換することをサポートしました。
DBMS_XMLDOM.getFirstChild関数をサポートしました。
配列が長文テキスト型の要素をサポートするようになりました。これにより、配列の16MBのサイズ制限が撤廃されました。
V4.4.2 BP2
バージョン情報
- リリース日:2026年06月30日
- バージョン番号:V4.4.2 BP2
- RPMバージョン番号:oceanbase-4.4.2.2-102000172026063016
アップグレードの手順
V4.4.2 BP2へのアップグレードは、以下のパスで行うことを推奨します。
- V4.4.2/V4.4.2 BP1からV4.4.2 BP2へ直接アップグレードできます。
- V4.4.0/V4.4.0 BP1/V4.4.1からV4.4.2 BP2へ直接アップグレードできます。
- V4.3.5/V4.3.5 BP1~BP5からは、まずV4.3.5 BP6へアップグレードしてから、V4.4.2 BP2にアップグレードする必要があります。
- V4.2.5/V4.2.5 BP1~BP6からは、まずV4.2.5 BP7へアップグレードしてから、V4.4.2 BP2にアップグレードする必要があります。
機能強化
高可用性、プライマリ/スタンバイおよび災害復旧
プライマリ/スタンバイデータベースの同期レプリケーション(RPO=0)をサポート【正式サポート】
プライマリ/スタンバイデータベースシナリオで、最大保護モードと最大可用モードの2種類のモードをサポートしています。
最大保護モード:最高レベルのデータ保護です。プライマリデータベースに障害が発生した場合でもデータ損失を防ぐことができます。この保護モードでは、トランザクションは REDOログがプライマリデータベースと同期モードのスタンバイデータベースの両方に正常に永続化されるまでコミットできません。スタンバイデータベースが利用不能な場合、プライマリデータベースは書き込みサービスを停止します。
最大可用モード:クラスタの可用性を損なうことなく、最高レベルのデータ保護を提供します。
- プライマリ/スタンバイデータベースともに正常な場合:トランザクションは、REDOログがプライマリデータベースと同期モードのスタンバイデータベースに同時に永続化された後にのみコミットできます。
- プライマリ/スタンバイデータベース間のリンク障害の場合:プライマリ/スタンバイ間のログ位置の遅れが
NET_TIMEOUT(デフォルトは30秒)を超えると、プライマリデータベースは同期レプリケーションを自動的に非同期にダウングレードし、プライマリデータベースサービスの復旧を優先します。プライマリ/スタンバイデータベースの同期リンクの状態が回復し、遅延時間が継続してHEALTH_CHECK_TIME(デフォルトは60秒)未満になると、再び自動的に同期レプリケーションに切り替えて、高いレベルのデータ保護を継続します。
プライマリ/スタンバイデータベースの遅延レプリケーション:スタンバイデータベースの遅延機能が追加され、スタンバイデータベースが設定された時間だけ遅らせてプライマリデータベースのログを適用するようになりました。この機能は、誤操作(誤ったDDL/DML)やビジネス上の異常な書き込みが即座にスタンバイデータベースに同期されるリスクを低減するのに適しており、誤操作からの復旧や災害復旧への対応を判断するための、より長い時間的猶予を確保できます。
ALTER SYSTEM SET LOG_RESTORE_SOURCE = '...DELAY=N'を使用して遅延時間(Nは秒数)を設定します。MAXIMUM PERFORMANCEモードでのみ利用可能です。遅延スタンバイデータベースでは、直接SwitchoverまたはFlashbackを実行して新しいプライマリデータベースに接続することは禁止されており、まず遅延時間を0にしてログの適用を追いつかせる必要があります。プライマリ/スタンバイ同期の可観測性強化:LS単位のログ転送およびリプレイ監視ビューが追加されました:
[G]V$OB_LS_LOG_TRANSPORT_STAT(プライマリデータベース側、各LSのログ転送位置、遅延、およびスタンバイデータベースの確認情報を表示)と[G]V$OB_LS_LOG_REPLAY_STAT(スタンバイデータベース側、各LSのログリプレイ進捗状況、待機中のリプレイタスク数などを表示)。同時に、テナントおよびLSレベルの位置スナップショットを定期的にDBA_OB_TENANT_EVENT_HISTORYビューに書き込み、事後にプライマリ/スタンバイの遅延傾向を分析しやすくしています。
Oracle互換性強化
UDTをテーブル列型としてサポート:Oracleモードでは、テーブル作成時にユーザー定義型(UDT)を列型として使用できるようになりました。これにより、オブジェクト型列や複雑なPL型フィールドをテーブルに永続化するなど、Oracle移行シナリオにおける重要な互換性機能が補完されました。使用方法はOracleと同じです:まず
CREATE TYPE ... AS OBJECTで型を定義し、その後テーブル作成時にその型を列型として参照します。全文検索をサポート:Oracleモードのユーザーは
CREATE INDEX ... INDEXTYPE IS CTXSYS.CONTEXTで全文インデックスを作成し、CONTAINS(column, 'search', [label])>0で全文検索を実行できます(現在は連続フレーズマッチングモードのみサポート)。SCORE(label)で関連性スコアを取得できます。インデックス作成時にPARAMETERS('LEXER xxx')でトークナイザーを指定でき、現在はNGRAM、NGRAM2、BENG、IK、SPACEをサポートしています。Oracleモードでは、全文インデックスはLOCALのみをサポートします(GLOBALを指定するか、スコープを指定しない場合はエラーが発生します)。CONTAINS()式は>0と併用する必要があります。テンプレートパーティションと非テンプレートサブパーティションの混合定義をサポート:Oracleモードでは、
CREATE TABLEでSUBPARTITION TEMPLATEと特定のパーティションの非テンプレートサブパーティション定義を同時に指定できるようになりました。これにより、複雑なパーティションテーブルの移行シナリオがOracleの動作により適合するようになりました。DISTINCTとLOB型の組み合わせ実行をサポート:Oracleモードでは、
SELECT DISTINCTクエリにLOB型を含めることをサポートしています。DBMS_XMLDOM/DBMS_XMLPARSERシステムパッケージをサポート:Oracleモードでは、XML DOMおよびXML Parser関連のシステムパッケージ機能が新たに追加され、XML解析、ノード走査、およびXML型PLロジック移行の基盤となるサポートを提供しています。監査ログの暗号化をサポート:Oracleモードでは、監査ログの暗号化関連機能をサポートしています。
外部キー検査の最適化:Oracleモードでは、親テーブルの行が他のトランザクションの
SELECT FOR UPDATEによってロックされている場合、そのロックは同一の親テーブルの子テーブルへのINSERT/UPDATEなどのDML操作における外部キー制約検査をブロックしなくなりました。これにより、外部キー検証と業務ロック待機が重なってデッドロックを引き起こすリスクが低減されました。
MySQL互換性強化
to_single_byte()関数をサポート:MySQLモードでは、全角文字を半角文字に変換するto_single_byte()関数が新たに追加されました。データクレンジング、文字の正規化、および他のデータベースから移行した後にこの関数に依存するSQLに適しています。
汎用互換性強化
caching_sha2_password認証プラグインを追加:default_authentication_pluginにcaching_sha2_passwordオプション値が追加されました。このバージョンではデフォルト値は変更されていません。 MySQLモードのデフォルトは依然としてmysql_native_password、Oracleモードのデフォルトは依然としてob_native_passwordです。caching_sha2_passwordはMySQL 8.0で導入された強力な認証プラグインで、SHA-256ハッシュアルゴリズムに基づき、サーバー側で認証結果をキャッシュすることをサポートし、セキュリティと接続パフォーマンスのバランスを取っています。有効化方法:①default_authentication_pluginをcaching_sha2_passwordに設定すると、その後そのテナントで新規作成されるユーザーはデフォルトでSHA-256認証を使用します。② 既存ユーザーに対してALTER USER ... IDENTIFIED WITH caching_sha2_passwordを実行して個別に切り替えます。MySQLモードとOracleモードで使用できます。
OBCDCとデータ同期
OBCDCが指定ゾーンにデータ同期レプリカを設定できるように:OBCDCは指定ゾーンを優先してデータ抽出を行うことをサポートしており、データセンター間のデプロイ、同一都市内の複数データセンター、OMS/CDCリンクのデータ取得元を同一データセンターのレプリカに固定したいシナリオに適しています。これにより、データセンター間の帯域幅消費とリンク遅延を低減できます。
UPDATEシナリオで1つのbinlogログのみを生成する(MySQLモード):OceanBaseカーネルはUPDATEを実行する際、主キー/パーティションキーが変更された場合(パーティションをまたいだ行の移動を引き起こす)やPDMLマルチスレッド並列更新が行われた場合、論理的なUPDATEを内部的にDELETEとINSERTの2つの操作に分割します。この分割により、CDCは下流にDELETEとINSERTの2つの物理イベントを出力しますが、下流システムでは通常、DELETEとUPDATEの処理上の意味が大きく異なるため(例えばDELETEは関連データのクリーンアップロジックをトリガーする)、元のUPDATEが業務上持つ意味が損なわれます。
- このバージョンではUPDATE分割統合の最適化が導入されました:カーネルは分割時にトランザクションレベルの一意の識別子(
update_split_trace_id)を書き込みます。OBCDCは、同一の論理更新に属し、かつ主キー/パーティションキー/一意キー列の値が実際には変更されていない場合を認識すると、DELETEとINSERTを統合して単一のUPDATEとして出力します。主キー/パーティションキー/一意キー列の値が実際に変更された分割(例えばUPDATE t SET pk=pk*1)については、引き続きDELETEとINSERTとして出力され、行移動の意味が正しく保証されます。
- このバージョンではUPDATE分割統合の最適化が導入されました:カーネルは分割時にトランザクションレベルの一意の識別子(
増分リンク遅延の最適化:増分抽出と同期リンクの処理効率を最適化し、高同時実行の書き込み、データセンター間抽出、または大規模トランザクションシナリオにおけるリンク遅延を低減します。
SQL/PLパフォーマンス最適化
ハードパースメモリ最適化:SQLコンパイルおよびハードパースプロセスにおける一時メモリ使用量を最適化し、複雑なSQL(大規模UNION、複雑なJOINなど)のコンパイル段階でのメモリピークを低減します。これにより、高同時実行のハードパースシナリオにおけるテナントメモリ負荷が緩和されます。
Plan Cache診断の強化:プラン未ヒット、プランがPlan Cacheに追加できないなどの問題の診断能力を強化し、DBAがSQLプランの再利用異常、ハードパース比率の高さ、プランキャッシュヒット率の異常などの問題を分析しやすくします。
JSON式パフォーマンス最適化(MySQLモード):MySQLモードの
JSON_EXTRACT、JSON_VALUEなどのJSON抽出式の実行パスを最適化し、JSON解析、データコピー、LOBアクセスのオーバーヘッドを削減して、JSONフィールド検索のパフォーマンスを向上させます。Triggerパフォーマンス最適化(Oracleモード):OracleモードのトリガーのバッチDMLシナリオにおける実行処理を最適化し、重複するコンテキスト処理と内部呼び出しのオーバーヘッドを削減して、バッチINSERT/UPDATEにおけるトリガーの実行効率を向上させます。
グローバルインデックスのクエリと書き込みの最適化:グローバルインデックスからのベーステーブルへのアクセス、リモートDAS、バッチRPC関連の処理を最適化し、グローバルインデックスのクエリと書き込みシナリオにおけるネットワーク通信とシリアライズオーバーヘッドを低減します。
ストアドプロシージャパフォーマンス最適化:PL実行フレームワーク、パラメータ処理、実行スケジューリング処理を最適化し、ストアドプロシージャ、関数、匿名ブロックなどのPLシナリオにおける実行効率を向上させます。
匿名ブロックのパラメータ化拡張:匿名ブロックのパラメータ化のカバー範囲を拡大し、PL SQLプランの再利用率を向上させ、重複するハードパースのオーバーヘッドを低減します。
物理実行計画メモリ最適化:Plan Cache内の物理実行計画オブジェクトのメモリ使用量を最適化し、大量のSQLプランキャッシュシナリオにおけるメモリ負荷を低減します。
PSプロトコルパフォーマンス最適化:Prepared Statement関連の実行処理を最適化し、PSプロトコルを使用してOceanBaseデータベースにアクセスする際の実行効率と安定性を向上させます。
バッチCOMMENT/INDEXのパラレル実行:
ALTER TABLE ... COMMENTの複数列コメントとCREATE INDEXのパラレル実行をサポートし、元々直列実行されていた複数のDDLをバッチ化してパラレル実行することで、コメント列やインデックスが多数含まれるテーブルの初期化時間を短縮します。SaaSテナントのテーブル作成、履歴データベースの移行など、バッチDDLシナリオに適しています。実行フレームワークが結果セットのバッチ処理をサポート:実行フレームワークの結果セットバッチ処理能力を強化し、行ごとに返される結果をバッチにまとめて出力することで、クライアントとサーバー間のネットワーク通信の回数を削減し、大規模結果セットクエリシナリオにおけるスループット効率を向上させます。
ストレージ、データ管理、インポート・エクスポート
ログアーカイブの起動・停止パフォーマンス最適化:アーカイブの起動と停止プロセス中の待機時間を短縮します。頻繁にアーカイブの起動・停止を実行する場合に適しています。
バックアップデータ検証機能:バックアップ検証機能を新規追加し、バックアップセット、アーカイブピース、およびバックアップデータの完全性と物理的正確性の検証をサポートします。バックアップ後の受け入れ、クラスタ間バックアップの検証、復元前のリスクチェックなどに利用でき、バックアップファイルの欠落、データ破損、メタデータの不整合などの問題を事前に発見するのに役立ちます。
DROP DATABASE/PURGE DATABASEの最適化:データベースレベルの削除とpurgeプロセスを最適化し、大量のオブジェクトを含むデータベースの削除効率を向上させ、削除タスクの進捗プロセスの可観測性を強化します。テストデータベース、一時データベース、または履歴データベースを大規模にクリーンアップする運用保守シナリオに適しています。
ARRAYが長文タイプ要素をサポート(MySQLモード):MySQLモードでは、ARRAY型がLOB/長文タイプ要素をサポートします。これは、マルチモーダルデータ、JSON/ARRAYの組み合わせアクセス、および移行シナリオにおいて、ARRAY要素が長文である業務テーブルに適しています。
ごみ箱の自動クリーンアップで次回スケジュール時間を設定可能:
SCHEDULED_PURGE_RECYCLEBINスケジュールタスクを強化し、DBMS_SCHEDULER.SET_ATTRIBUTEを使用してごみ箱の自動クリーンアップタスクの次回実行日時START_DATEを設定できるようにしました。DBAはごみ箱クリーンアップの時間帯をより正確に制御でき、クリーンアップタスクが業務のピーク時やバックアップ時間帯と衝突するのを回避できます。DBMS_SCHEDULERがJobを指定されたServerにバインドすることをサポート:DBMS_SCHEDULER.SET_ATTRIBUTEを使用してスケジュールタスクを指定されたOBServerノードにバインドして実行できます。Jobの実行場所を指定する必要がある運用保守シナリオに適しています。LOAD DATA FROM FILESは共有NASファイルの重複除外インポートをサポート:
sfile://プロトコルが追加され、共有ローカルファイルを表します。複数のOBServerが同一のNASディレクトリをマウントしている場合、sfile://を使用することで、同一の論理ファイルが複数のマシンによって重複してインポートされるのを防ぎます。通常のローカルファイルには引き続きfile://を使用します。SELECT INTO OUTFILEはHDFS大容量ファイルのエクスポートをサポート:HDFSエクスポートシナリオで単一ファイル5GB制限を撤廃し、大規模結果セットのエクスポート、オフライン分析、アーカイブをディスクに保存するシナリオに適しています。
カラムストアレプリカの弱い整合性読み取りは再試行をサポート:カラムストアレプリカが一時的に読み取り不能であってもターゲットレプリカが存在する場合、SQL層はクライアントに利用可能なレプリカがないエラーを直接返すのではなく、再試行を行うことができます。これにより、レプリカのログリプレイ遅延シナリオにおけるカラムストアレポートクエリの安定性が向上します。
マテリアライズドビュー
監視と診断の強化:リフレッシュ監視情報のpurgeを、各MVごとの個別保持時間に従って順次クリーンアップする方式から、全MV統一保持時間で一括クリーンアップする方式に最適化し、SQL回数とオーバーヘッドを削減します。マテリアライズドビューのリフレッシュプロセス中に段階的なリアルタイム永続化をサポートし、リフレッシュ中の進捗状況を観測できます。監視ビューの表示を拡張します。
DBMS_MVIEW.REFRESH_REPORT(refresh_id, mv_name, tenant_id, format)プロシージャを新規追加し、指定したリフレッシュタスクの実行レポートを照会できるようにしました。これにより、リフレッシュ履歴の追跡やリフレッシュ失敗原因の調査が容易になります。増分更新のパフォーマンスと使いやすさの最適化:適応型高速リフレッシュをサポートし、複数テーブルMVの増分更新時にDML変更のないベーステーブルを自動的に識別して対応する手順をスキップします。すべてのベーステーブルに変更がない場合は、リフレッシュメタデータのみを更新し、空リフレッシュと見なします。マテリアライズドビューのrefresh parallelを定義する新しい構文を追加し、マテリアライズドビューのクエリ並列度と区別し、マテリアライズドビューのリフレッシュ並列度を独立して定義できるようにしました。増分更新マテリアライズドビュー作成時にREFRESH FAST依存列を自動補完する機能をサポートし、集約関数の依存列、UNION ALLのmarker列などを含みます。これにより、マテリアライズドビューの定義難易度が下がり、ユーザーの導入が容易になります。DROP MVIEW時に他のMVIEWがそのMLOGに依存していない場合、該当するMLOGも一緒に削除され、ユーザーが手動で削除する必要はありません。
リフレッシュスケジューリング機能の強化:マテリアライズドビューのリフレッシュタスクスケジューリングフレームワークを再構築し、旧バージョンの同期直列スケジューリングから非同期タスクキューアプローチにアップグレードしました。新フレームワークは優先度によるキューイング、最大同時リフレッシュタスク数の制御(
mview_refresh_concurrency、デフォルトは10)をサポートし、多数のマテリアライズドビューが同時にリフレッシュされる際のリソース競合とスケジューリングブロックを回避します。ユーザーはテナント内のマテリアライズドビュー数と業務負荷に応じて同時実行数を調整できます。DBMS_MVIEW.REFRESHはasyncパラメータを通じてリフレッシュタスクを非同期タスクとして指定することをサポートします。デフォルトではDBMS_MVIEW.REFRESHはリフレッシュ完了までブロッキングします。また、DBMS_MVIEW.KILL_REFRESH(mview_name)プロシージャのサポートを新規追加しました。これにより、実行中のマテリアライズドビューのリフレッシュタスクをキャンセルでき、リフレッシュタスクが長時間ブロックされたり、システムリソースを緊急に解放する必要があるシナリオに適用されます。
可観測性と診断
CDB/DBA_TABLESでのOceanBaseテーブルレベル属性の表示を拡充:
DBA_TABLES、CDB_TABLESおよび関連テーブルビューにOceanBaseテーブルレベルのストレージ属性を補完し、DBAが標準のデータディクショナリビューを通じてテーブルの行ストア・カラムストア属性、圧縮アルゴリズム、テーブルスキーマなどの情報を確認しやすくします。sql_auditクエリ効率の最適化:[G]V$OB_SQL_AUDITクエリパスを最適化し、大規模監査データクエリ時のスキャンと実行オーバーヘッドを削減します。SQL Auditに依存するスロークエリ分析、監査クエリ、パフォーマンス診断のシナリオにおいて、クエリ応答速度を向上させることができます。SQL Plan Monitorクエリの高速化:SQL Plan Monitor関連クエリパスを最適化し、実行計画監視情報のクエリ効率を向上させます。複雑なSQL実行診断と本番環境のパフォーマンス問題の特定に適用されます。
アービトレーションサービス監視機能の強化:
[G]V$OB_ARBITRATION_SERVICE_STATUSと[G]V$OB_ARBITRATION_MEMBER_INFOの2つのビューを新規追加しました。[G]V$OB_ARBITRATION_SERVICE_STATUSは各OBServerからアービトレーションサービスへの接続状態(STATUS列はACTIVE/INACTIVE)を表示します。カーネルはRPC層のObNetKeepAliveメカニズムを通じてアービトレーションサービスに対して継続的にハートビート信号を送信し、状態はリアルタイムで接続性を反映します。[G]V$OB_ARBITRATION_MEMBER_INFOはLS単位のアービトレーションメンバーアドレス、Paxosメンバーリスト、レプリカ数、デグレードレプリカリストなどの設定情報を表示し、PALFログストリームコンポーネントからリアルタイムに取得します。運用保守側はこれにより、アービトレーションサービスの異常やレプリカのデグレード問題を迅速に特定できます。
アップグレード、隔離、インフラ
外部言語(Python UDF)は独立したサブプロセス実行をサポート:Python UDFランタイムを独立したサブプロセス(Sandbox)で実行することをサポートし、外部言語の異常がOBServerメインプロセスに与える影響を軽減します。
[G]V$OB_SANDBOX_PROCESSビューを新規追加し、サブプロセスの実行状態とリソース使用状況を監視するために使用します。データベース・テーブル分割Outlineのバインディング:BINDING_RULE機能を新規追加し、
CREATE OUTLINE ... BINDING_RULE()構文を使用してデータベースレベル/テナントレベルのOutlineバインディングを実現することをサポートします。MAP句は${VAR:regex}パターン変数(例:orders_${S:[a-z]*})をサポートし、データベース・テーブル分割シナリオにおける同じ構造を持つテーブルを自動的にマッチングします。SaaSシナリオにおけるSQL Outlineのデータベース・テーブル間バインディングができない問題を解決し、運用保守の使いやすさを向上させます。
安定性の強化と動作の最適化
Rebuildトリガーによるソース側ダンプの最適化:移行およびrebuildプロセス中のソース側ダンプトリガーロジックを最適化し、不要なソース側minor dumpを削減し、rebuildが業務側のI/Oおよびダンプスケジューリングに与える影響を低減します。
Transferの安定性強化:transfer関連プロセスの安定性を強化し、一部のタスクの進行と異常処理シナリオを最適化することで、transferプロセス中のタスク長時間待機や一時的な失敗の可能性を低減します。
TRUNCATE TABLE後のパーティション重みが失われないようにする:TRUNCATE TABLE操作後にパーティション重みがリセットされる問題を修正し、truncate後のパーティション負荷重みがtruncate前と一致することを保証します。これは、パーティション重みによるデータ分布の均等化を制御するシナリオに適用されます。
プロダクト動作の変更
動作 |
変更前 |
変更後 |
影響 |
|---|---|---|---|
| テナントのクローン | プライマリ・スタンバイテナントともに実行可能 | スタンバイテナントからのクローンテナント作成のみサポート。プライマリテナントでのテナントクローン操作は禁止 | スタンバイテナントからのクローン機能は実験的な機能です。テナントクローンを利用するシナリオでは、事前に利用範囲を確認し、機能のリスクを理解しておく必要があります。既にプライマリテナントでクローン機能を利用されているユーザーは、OceanBaseデータベースの技術者に連絡し、リスク評価を行ってください。 |
| デフォルト認証プラグイン | ネイティブパスワード認証のみサポート(MySQLモード mysql_native_password、Oracleモード ob_native_password) |
caching_sha2_password オプション値を追加。各モードのデフォルト値は変更なし |
MySQLモードとOracleモードで利用可能。この構成パラメータまたは ALTER USER を使用して明示的に有効にする必要があります。MIN_DATA_VERSION >= 4.4.2.0 が必要です |
| OBCDC UPDATE 出力 | UPDATEは内部でDELETEとINSERTに分割される可能性があり、ダウンストリームが2つのイベントを受信する | 主キー/パーティションキー/一意キー列の値が実際に変更されていない場合、CDCは単一のUPDATEとして出力を統合します。キー列の値が実際に変更された場合は、DELETEとINSERTとして出力されます | ダウンストリームの同期セマンティクスが元のSQLにより近づき、DELETEイベントによるダウンストリームのクリーンアップロジックが誤って実行されることを回避します。実際のキー変更は行移行のセマンティクスを保持します |
| 共有NASインポート | 複数のOBServerが file:// を使用して同一パスを読み取ると、重複インポートが発生する可能性があった |
sfile:// を使用することで、共有ローカルファイルを指定し、論理パスで重複を除外します |
複数のマシンにマウントしたNASからインポートする場合は、sfile:// の使用を推奨します |
| HDFSエクスポート | SELECT INTO OUTFILE の単一ファイルに5GBの制限があった |
HDFSエクスポートシナリオでは、より大きなファイルをサポートします(MAX_FILE_SIZE に制限なし) |
大規模結果セットのエクスポート時に5GBごとに手動で分割する必要がなくなりました |
| カラムストアレプリカの弱い整合性読み取り | カラムストアレプリカが一時的に読み取り不可の場合、利用可能なレプリカがないと直接返される可能性があった | SQL層でタイムアウトまで再試行可能 | レポートクエリ時にカラムストアレプリカが一時的に遅延した場合でも、より安定します |
| ごみ箱の自動クリーンアップ | 主に実行周期によってクリーンアップのタイミングを制御する | 次回のスケジュール時間 START_DATE の設定をサポートする |
DBAはごみ箱のクリーンアップの時間帯をより正確に制御できる |
| 同名PLストアドプロシージャ/関数のPSプロトコルのオーバーロード | Prepareフェーズでパラメータタイプ情報が欠落(null)している場合、複数のオーバーロードされたプロシージャ/関数があると、最初にマッチするものを無条件に選択するため、どの関数が選択されるか予測できない | Prepareフェーズでパラメータタイプがnullで、複数の同名関数が存在する場合、PLS-00307: too many declarations match this call というエラーが直接返され、予期せぬ選択は行われなくなりました。 |
影響範囲:PSプロトコル(標準PreparedStatement)を使用して同名PLプロシージャ/関数を呼び出す場合で、registerOutParameter/setNullで設定されたタイプがサーバーに伝達されなかったシナリオ。 解決策(3つのうち1つ):
|
構文、関数、プロトコルの変更
タイプ |
名前/構文 |
適用モード |
説明 |
|---|---|---|---|
| SQL構文 | 遅延スタンバイデータベース関連の構文 (LOG_RESTORE_SOURCE = '...DELAY=N') |
MySQL / Oracle | プライマリ・スタンバイデータベースの遅延レプリケーション機能の設定と管理をサポートします。ALTER SYSTEM SET LOG_RESTORE_SOURCE の DELAY フィールドで遅延秒数を設定します |
| データ型 | UDTをテーブル列型として使用 | Oracle | テーブル作成時に CREATE TYPE ... AS OBJECT で定義された型を列型として使用できます |
| 全文検索 | CREATE INDEX ... INDEXTYPE IS CTXSYS.CONTEXT/CONTAINS()/SCORE() |
Oracle | Oracle Text互換構文レイヤーを新規追加し、基盤としてOceanBase独自の全文検索エンジンを再利用します。CONTAINS全文クエリとSCOREによる関連性スコアリングをサポートし、LOCALインデックスのみをサポートします |
| 認証プラグイン | default_authentication_plugin に caching_sha2_password オプション値を追加 |
MySQL / Oracle | SHA-256強力認証プラグインを新規追加。各モードのデフォルト値は変更なし(MySQLは引き続き mysql_native_password、Oracleは引き続き ob_native_password)。明示的に有効にする必要があります。MIN_DATA_VERSION >= 4.4.2.0 が必要です |
| DDL | バッチCOMMENT / INDEXの並列処理 | MySQL / Oracle | ALTER TABLE ... COMMENT の複数列と CREATE INDEX のパラレル実行をサポートし、バッチDDLの所要時間を短縮します |
| DDL | prefix indexを持つ列の変更 | MySQL | prefix indexを持つ列に対して MODIFY COLUMN/CHANGE COLUMN の実行をサポートします |
| 関数 | to_single_byte() |
MySQL / Oracle | 全角文字から半角文字への変換をサポートします |
| SQL/PL | DISTINCT * LOBの組み合わせ実行 | Oracle | SELECT DISTINCT クエリでLOB型列を含む場合のエラーを修正しました |
| パーティションDDL | SUBPARTITION TEMPLATE * 非テンプレートサブパーティションの混合定義 |
Oracle | テンプレートパーティションと特定パーティションのカスタムサブパーティションの共存をサポートします |
| PLパッケージ | DBMS_XMLDOM/DBMS_XMLPARSER |
Oracle | XML DOMとXML Parser関連のPL機能をサポートします |
| 外部テーブル/インポートプロトコル | sfile:// プロトコル |
MySQL / Oracle | 共有ローカルファイルを表し、NASの複数マシンでの重複インポートを回避します |
| エクスポート | SELECT INTO OUTFILE のHDFSへのエクスポート |
MySQL / Oracle | 単一ファイル5GBの制限を撤廃し、HDFSへの大容量ファイルエクスポートをサポートします |
| スケジューリング | DBMS_SCHEDULER.SET_ATTRIBUTE で START_DATE の設定 |
MySQL / Oracle | ごみ箱の自動クリーンアップタスクの次回実行時間の設定をサポートします |
| スケジューリング | DBMS_SCHEDULER.SET_ATTRIBUTE でJobを指定Serverにバインド |
MySQL / Oracle | スケジュールタスクを指定されたOBServerノードにバインドして実行できます |
構成パラメータの変更
構成パラメータ |
型 |
デフォルト値 |
適用レベル |
適用テナント |
説明 |
|---|---|---|---|---|---|
| default_authentication_plugin | STRING | MySQLモードのデフォルトは mysql_native_password、Oracleモードのデフォルトは ob_native_password |
テナント | Oracle/MySQL | 新規ユーザーのデフォルト認証プラグインを制御します。このバージョンでは caching_sha2_password オプション値が新規追加され、デフォルト値は変更なし。caching_sha2_password に設定後、新規ユーザーはデフォルトでSHA-256認証を使用します。MIN_DATA_VERSION >= 4.4.2.0 が必要です |
| enable_update_split_merge | INT | 0 |
OBCDC | — | OBCDCが条件を満たすDELETEとINSERTをUPDATE出力に統合するかどうかを制御します |
| update_split_merge_persist_mode | STRING | auto |
OBCDC | — | OBCDC UPDATEの分割統合の永続化ポリシーを制御します |
| mv_refresh_concurrency | INT | 10 |
テナント | Oracle/MySQL | マテリアライズドビューのリフレッシュタスクの最大同時実行数を制御します。値の範囲は[1, +∞)です。ユーザーはテナント内のマテリアライズドビューの数と業務負荷に応じて調整できます |
ビューの変更
ビュー名 |
変更タイプ |
説明 |
|---|---|---|
| DBA_TABLES/CDB_TABLES/関連テーブルビュー | 列の追加 | OceanBaseのテーブルレベルストレージ属性を補完し、テーブルの行ストア・カラムストア属性、圧縮アルゴリズム、テーブルスキーマなどの情報を含みます |
| [G]V$OB_LS_LOG_TRANSPORT_STAT | 新規ビュー | プライマリデータベース側のLS単位のリアルタイムなログ転送位置、遅延、およびスタンバイデータベースの確認情報を表示します。転送遅延の特定に使用されます |
| [G]V$OB_LS_LOG_REPLAY_STAT | 新規ビュー | スタンバイデータベース側のLS単位のログリプレイ進捗状況、リプレイ待ちのログ位置、およびリプレイ待ちタスク数を表示します。リプレイ遅延の特定に使用されます |
| [G]V$OB_ARBITRATION_SERVICE_STATUS | 強化 | 各OBServerからアービトレーションサービスへの接続状態(STATUS列はACTIVE/INACTIVE)を表示します。カーネルはRPC層のObNetKeepAliveを通じて継続的に生存確認を行います |
| [G]V$OB_ARBITRATION_MEMBER_INFO | 強化 | LS単位のアービトレーションメンバーアドレス、Paxosメンバーリスト、レプリカ数、降格レプリカリストなどの設定情報を表示します |
| [G]V$OB_SANDBOX_PROCESS | 新規ビュー | 外部言語独立サブプロセスの実行状態とリソース使用状況を表示します。問題の特定とリソース観測を容易にします |
| DBA_MVIEW_RUNNING_JOBS/CDB_MVIEW_RUNNING_JOBS | 強化 | 現在実行中のマテリアライズドビューの更新タスクを表示します。SVR_IP、SVR_PORT、TABLE_NAME、JOB_TYPE、SESSION_ID、READ_SNAPSHOT、PARALLEL、JOB_START_TIME、REFRESH_IDの9列を含みます。旧バージョンのMDSエンジンと新バージョンのPending Taskエンジンの両方で実行中の更新タスク情報を同時に表示することをサポートします |
| DBA_MVIEW_DEPS | 強化 | マテリアライズドビューの依存関係を表示します。MVIEW_OWNER、MVIEW_NAME、DEP_OWNER、DEP_NAME、DEP_TYPEの5列を含みます。マテリアライズドビューのベーステーブル依存チェーンの分析を容易にします |
| CDB_MVIEW_DEPS | 新規ビュー | CDBレベルのマテリアライズドビュー依存関係ビューを新規追加し、DBA_MVIEW_DEPSと列構造が一致します |
| DBA_DEPENDENCIES | 互換性修正 | 一部のビュー展開シナリオで間接依存関係が表示される問題を修正しました。修正後は直接依存のみが表示され、Oracleと一致します |
| [G]V$OB_SQL_AUDIT | パフォーマンス最適化 | [G]V$OB_SQL_AUDITのクエリ効率を最適化し、大規模監査データのクエリ体験を向上させます |
| [G]V$OB_SQL_PLAN_MONITOR | パフォーマンス最適化 | [G]V$OB_SQL_PLAN_MONITORのクエリパスを最適化し、実行計画監視情報のクエリ効率を向上させます |
| [G]V$OB_EXTERNAL_LOCATION_LIST_FILE | 強化 | 外部テーブルの格納場所にあるファイル一覧情報の表示を補完します |
注意事項
マテリアライズドビューのアップグレード後は、業務SQLのリグレッション検証を推奨します
このバージョンでは適応型更新戦略が導入されたため、マテリアライズドビューの更新時間や実行計画に影響を与える可能性があります。アップグレード後は、主要なマテリアライズドビューを使用する処理についてリグレッション検証を行うことを推奨します。問題が発生した場合は、OceanBaseデータベースの技術サポートにお問い合わせください。
スタンバイテナントのクローン機能は実験的な機能です
このバージョンでは、スタンバイテナントからのクローンテナントの作成のみをサポートしており、スタンバイテナントのクローン機能は実験的な機能です。利用を希望する場合は、まず利用の範囲を確認し、機能のリスクを理解しておく必要があります。既にプライマリテナントのクローン機能を利用されているユーザーは、OceanBaseデータベースの技術者に連絡し、リスク評価を行ってください。
V4.4.2 BP1 Hotfix8
バージョン情報
- リリース日:2026年08月14日
- バージョン番号:V4.4.2 BP1 Hotfix8
- 分散RPMバージョン番号:oceanbase-4.4.2.1-101080012026081217
- スタンドアロン版RPMバージョン番号:oceanbase-standalone-4.4.2.1-101080012026081217
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- cgroupの再試行に関する不具合を修正しました。
- 読み取り専用セッションでalter session setが-5220エラーで拒否される問題を修正しました。
V4.4.2 BP1 Hotfix7
バージョン情報
- リリース日:2026年07月14日
- バージョン番号:V4.4.2 BP1 Hotfix7
- RPMバージョン番号:oceanbase-4.4.2.1-101070012026071317
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- ノードクラッシュ問題を修正しました。
- SQLERRMおよびPL例外メッセージが
enable_ob_error_msg_styleの設定に従うよう修正しました。 - delete_insertテーブルにおいてメタマージをミディアムマージに置き換えました。
- DAGワーカーが単独でタスクを取得できるようにしました。
V4.4.2 BP1 Hotfix6
バージョン情報
- リリース日:2026年06月29日
- バージョン番号:V4.4.2 BP1 Hotfix6
- RPMバージョン番号:oceanbase-4.4.2.1-101060022026062915
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- WITH CHECK OPTIONとベクトル更新を組み合わせた際のクラッシュを修正しました。
- PSでのUNIONをVALUESに変換することをサポートしました。
V4.4.2 BP1 Hotfix5
バージョン情報
- リリース日:2026年06月23日
- バージョン番号:V4.4.2 BP1 Hotfix5
- RPMバージョン番号:oceanbase-4.4.2.1-101050032026062310
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- BITMAP_32/64でSIGSEGVを防ぐため、check_binary()にコンテナオフセットの範囲チェックを追加。
- inc sstableのSUMの事前集約を無効化。
- objaccess式の評価時にコアダンプが発生する問題を修正しました。
- リモート実行時のapp ctxがシリアライズされない問題を修正。
- Oracleモードにおける全角句読点のfast parser構文エラーを修正。
- PSカーソルを開く際のUDR書き換えをサポート。
- skip_blank_linesがtrueの場合に空列が欠落する問題を修正。
- GTTインデックスのセッションtabletのTransferに対する細粒度Online DDLロックを追加。
- MEMTABLEで行数を推定する際に空MVCC行をスキップしないように修正。
- PL実行がproxyによる'alter schema' stmt送信を引き起こす問題を修正。
- DBMS_SCHEDULERにおいてジョブを特定のサーバーに固定する機能をサポート。
- トリガーDMLスナップショットを最適化し、RPC数を削減。
V4.4.2 BP1 Hotfix4
バージョン情報
- リリース日:2026年06月10日
- バージョン番号:V4.4.2 BP1 Hotfix4
- RPMバージョン番号:oceanbase-4.4.2.1-101040042026061013
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- Oracleモードでorderby itemを解決。
- 42xから44xへのアップグレード時に、43xのアップグレードプロセッサを実行するようにしました。
- NLJでjson_pathがdynamic constの場合、JSON式が誤った結果を返す問題を解決。
- 長いcase-when exprを使用した動的SQLで発生する-5179エラーを修正。
- subplan_filterでbranch_subquery exprを優先的に生成するように修正。
- dblinkが同一トランザクション内で未コミットデータを読み取る問題を修正。
- dblinkに関する一部のリライト問題を修正。
- Oracleモードで、外部キーのチェック時に親側のみのロックをスキップするようにしました。
- テナントの隠し構成パラメータ
_enable_gtt_non_forced_routingを追加。
V4.4.2 BP1 Hotfix3
バージョン情報
- リリース日:2026年05月27日
- バージョン番号:V4.4.2 BP1 Hotfix3
- RPMバージョン番号:oceanbase-4.4.2.1-101030022026052618
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- NVLの範囲取得でエラーが発生する問題を修正しました。
- PSカーソルを閉じる際のログレベルを最適化しました。
- OracleモードでUNIONをVALUESに変換する際、空文字の型を誤って処理する問題を修正しました。
- スレッドのテナントIDの代わりにセッションのテナントIDを使用するように修正しました。
V4.4.2 BP1 Hotfix2
バージョン情報
- リリース日:2026年05月20日
- バージョン番号:V4.4.2 BP1 Hotfix2
- RPMバージョン番号:oceanbase-4.4.2.1-101020012026051809
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- ダイレクトロードでIDENTITY列のシーケンス値が同期されない問題を修正しました。
- テーブル関数でエラー4016が発生する問題を修正しました。
- 修飾付きアスタリスクの展開時に、シノニムの名前解決が誤る問題を修正しました。
- sysstatにトランザクションのコミット文の数を追加しました。
- %rowtypeおよび%typeでエラー4016が発生する問題を修正しました。
V4.4.2 BP1 Hotfix1
バージョン情報
- リリース日:2026年04月30日
- バージョン番号:V4.4.2 BP1 Hotfix1
- RPMバージョン番号:oceanbase-4.4.2.1-101010022026042816
リリース目的
利用現場から報告された問題を修正し、バージョンの安定性を向上させます。
バグ修正
- スキーマ履歴のアーカイブを無効にする構成パラメータ_enable_schema_history_archiveを追加しました。
V4.4.2 BP1
バージョン情報
- リリース日:2026年04月20日
- バージョン番号:V4.4.2 BP1
- 分散RPMバージョン番号:oceanbase-4.4.2.1-101000192026041623
- スタンドアロン版RPMバージョン番号:oceanbase-standalone-4.4.2.1-101000192026041623
バージョン概要
V4.4.2 BP1は、V4.4.2(LTSバージョン)の最初のBPバージョンであり、従来サポートしていたV4.2.5 BP7からV4.4.2へのスムーズなアップグレードに加え、V4.3.5 BP6からV4.4.2 BP1へのスムーズなアップグレードも新たにサポートしています。このバージョンはTP/AP業務向けに、複数の重要な機能を追加し、システムのパフォーマンスと安定性をさらに向上させています。
アップグレードの説明
- V4.2.5/V4.2.5 BP1~BP6からV4.2.5 BP7にアップグレードし、その後V4.4.2 BP1にアップグレードできます。
- V4.3.5/V4.3.5 BP1~BP5からV4.3.5 BP6にアップグレードし、その後V4.4.2 BP1にアップグレードできます。
- V4.4.0/V4.4.0 BP1/V4.4.1からV4.4.2 BP1にアップグレードできます。
機能強化
プライマリ/スタンバイデータベースの同期レプリケーション(RPO=0)をサポート(最大保護モードと最大可用モード)【実験的機能】
- 最大保護モード:最高レベルのデータ保護で、プライマリデータベースの障害時にデータ損失を防ぎます。このモードでは、トランザクションはプライマリデータベースと同期モードのスタンバイデータベースの両方でredoログが永続化された後にコミットされます。スタンバイデータベースが利用不可の場合、プライマリデータベースは書き込みサービスを停止します。
- 最大可用モード:クラスタの可用性を損なわない前提で高レベルのデータ保護を提供します。プライマリ・スタンバイデータベースが共に正常な場合、トランザクションはプライマリデータベースと同期モードのスタンバイデータベースの両方で永続化された後にコミットされます。プライマリ・スタンバイ間の接続が切断された場合、プライマリ・スタンバイのログ位置の遅れが
NET_TIMEOUT(デフォルト30秒)を超えると、プライマリデータベースは自動的に同期レプリケーションを非同期にダウングレードし、サービスの優先的な復旧を図ります。プライマリ・スタンバイ間の接続が回復し、遅延時間がHEALTH_CHECK_TIME(デフォルト60秒)未満のまま継続すると、自動的に同期レプリケーションに切り戻します。
ゾーンレベルのテーブルグループ(TableGroup)をサポート
ゾーンレベルのテーブルグループは、関連するパーティションをルールに従って同じゾーン内に集約し、テーブルグループ内のパーティションリーダーをゾーン内の異なるOBServer上に均等に分散させることをサポートします。これにより、既存のテーブルグループの
Sharding = Noneではデータ量が膨大すぎて単一のOBServerが全てのパーティションデータを処理できない問題、Sharding = Partition/Adaptiveではパーティションリーダーの分散を制御できず性能が制限される問題を解決します。新たにSCOPE属性を追加してパーティションリーダーの分散方法を制御し、従来のSHARDING属性は引き続きパーティションの集約と均衡戦略を制御するために使用されます。旧バージョンのクラスタをV4.4.2 BP1にアップグレードした場合、既存のテーブルグループのSCOPE属性はNULLとなります。SHARDINGSCOPE組み合わせ戦略の説明NONE SERVER テーブルグループ内の全てのパーティションリーダーを単一ノードに集約 NONE CLUSTER テーブルグループ内の全てのパーティションリーダーをデータ量と重みに基づきクラスタの各 PRIMARY_ZONEに均等に分散NONE ZONE テーブルグループ内の全てのパーティションリーダーをデータ量と重みに基づき1つのゾーン内に均等に分散 NONE NULL SHARDING=NONE, SCOPE=SERVER戦略と同等 PARTITION SERVER サポートなし PARTITION ZONE サポートなし PARTITION NULL SHARDING=PARTITION, SCOPE=CLUSTER戦略と同等 PARTITION CLUSTER テーブルグループ内のパーティションデータを第1レベルのパーティションルールに従ってパーティショングループに集約し、各パーティショングループのリーダーをデータ量と重みに基づきクラスタの各 PRIMARY_ZONEに均等に分散。(旧バージョンのsharding=partitionと同等)ADAPTIVE SERVER サポートなし ADAPTIVE ZONE サポートなし ADAPTIVE NULL SHARDING=ADAPTIVE, SCOPE=CLUSTER戦略と同等 ADAPTIVE CLUSTER テーブルグループ内のテーブルは、すべて単一レベルのパーティションテーブル、またはすべてコンポジット・パーティションテーブルのいずれかである必要があります。パーティションはパーティションルールに従って集約され、サブパーティションは各パーティションを1つの均衡グループとしてサブパーティションルールに従って集約されます。テーブルグループ内の各パーティションのリーダーは、クラスタの各 PRIMARY_ZONEに均等に分散します。(旧バージョンのsharding=adaptiveと同等)ストアドプロシージャのパフォーマンス最適化
PL/SQLストアドプロシージャの実行パフォーマンスを最適化します。これには、ループシナリオ(ループ+静的SQL、ループ+cursor)のパフォーマンス最適化、システムパッケージLLVMコンパイル生成物のシステムテナントへの分割、Exception実行パフォーマンス最適化、MySQLモードLLVM CG最適化、Null値を含む匿名ブロックのパラメータ化が含まれます。
一時テーブルのルーティング戦略の最適化
Oracleモードでは、ODPがすべてのリクエストを一時テーブルのあるOBServerノードへ強制的にルーティングする動作を解除できるようになり、パフォーマンスが向上します:
- 最適化前の動作:同一セッションが一時テーブルにアクセスした後、その後のリクエスト(通常のテーブルリクエストを含む)は、前回一時テーブルにアクセスしたノードに強制的にルーティングされ、多数のリモートルーティングアクセスが発生します。
- 最適化後の動作:同一セッションが一時テーブルにアクセスした後、その後の通常のテーブルリクエストは正確にルーティングされ、クエリパフォーマンスが向上します。
Oracleモードのグローバル一時テーブルのパフォーマンス最適化
Oracleグローバル一時テーブルの設計を再構築し、一時Tablet Truncateメカニズムを導入することで、セッションレベルの一時テーブル削除パフォーマンスを大幅に最適化しました。これにより、回収時間がデータ量に制約されなくなり、大量データの一時テーブルの回収が遅延する問題が解決されました。
デュアルパスワード機能のサポート
MySQL 8.0およびOracleのデュアルパスワードメカニズムと互換性を持ち、エンタープライズレベルのデータベース運用において、アプリケーションアカウントのパスワード変更により接続が切断される可能性のある問題を解決し、パスワード変更プロセス中のシームレスな移行を実現します。
Oracleモードで制限モード(Restricted Mode)をサポート
Oracleモードは制限モードをサポートしており、DBAはデータベースを制限モードに設定できます。このモードでは、
RESTRICTED SESSION権限を持つユーザーのみがログイン可能となり、運用保守中にアプリケーションアカウントを禁止し、運用保守ユーザーアカウントのログインを許可する機能をDBAに提供します。制限モードは ALTER SYSTEM ENABLE/DISABLE RESTRICTED SESSION コマンドで有効または無効にできます。制限モードの状態は、ビュー V$INSTANCE で確認できます。監査機能の強化
MySQLテナントとOracleテナントの監査機能が強化され、MySQLモードでの監査ログの暗号化がサポートされました。
OracleモードでのJava UDFサポート
OracleモードはJava UDFをサポートしています。
エグゼキューターの強化
SQLエグゼキューターの安定性とパフォーマンスが継続的に強化されています。これには、NLJパフォーマンスの最適化、単一マシンでの直列実行におけるTOP-N結果の安定ソートへの改善(ソートキーが同じデータをソート前の順序で返すことをサポート)、Oracleモードでの
NLS_CHARSET_ID式のサポート、MySQLモードでのWINDOW_FUNNEL式のサポート、MySQL/OracleモードでのALTER VIEW COMPILEのサポートが含まれます。SCHEMA HISTORYの回収最適化
package、routine、ols、udtオブジェクトの回収が追加され、履歴レコードが多すぎることによるスキーマリフレッシュのパフォーマンスへの影響が軽減されました。回収パフォーマンスが最適化され、回収タスクはテナントレベルのスケジュール管理に変更されました。
MySQL読み取り専用SELECT TIMEOUT
MySQLモードに
MAX_EXECUTION_TIMEが追加され、読み取り専用SELECTのタイムアウト時間を制御できるようになりました。比較項目OB_QUERY_TIMEOUTMAX_EXECUTION_TIME適用範囲 クエリ全体のタイムアウト時間を制御します。 SELECT、UPDATE、INSERT、DELETE(MAX_EXECUTION_TIMEで制御されるタイプを除く)に適用されます単一の読み取り専用 SELECT SINGLE-STATEMENT QUERYまたは複数ステートメントシナリオにおける読み取り専用SELECT STATEMENTを制御します適用条件 常に有効です > 0であり、ステートメントが読み取り専用SELECTであり、その読み取り専用SELECTがストアドプロシージャ内になく、データを変更する操作をトリガーしないことが必要です(複数ステートメントQUERYについては、後述の説明を参照してください)。- この変数の適用条件は
MAX_EXECUTION_TIME > 0です(デフォルトは0、単位はミリ秒)。全体のタイムアウト時間は引き続きOB_QUERY_TIMEOUTによって制御されます。 - 複数ステートメントシナリオでは、クエリ全体の実行時間が
OB_QUERY_TIMEOUTを超えないことが保証されます。読み取り専用SELECTはMAX_EXECUTION_TIMEとOB_QUERY_TIMEOUTの両方の制約を受けます。特別なケースとして、ある複数ステートメントクエリが読み取り専用SELECTステートメントと、読み取り専用SELECTステートメント以外のSELECT、UPDATE、INSERT、DELETEを含む場合、そのクエリ内の読み取り専用SELECTステートメントは2つの変数の両方の制約を受けます。その他のSTATEMENTはOB_QUERY_TIMEOUTのみの制約を受けます。 - 単一ステートメントシナリオでは、
MAX_EXECUTION_TIME > 0の場合、クエリ全体のタイムアウト時間はMAX_EXECUTION_TIMEとなります。 - サブクエリ
SELECT * FROM (SELECT * FROM T1);は1つのステートメントとして処理されます。
- この変数の適用条件は
外部テーブルのパフォーマンス最適化
Parquet形式のページ単位プリフェッチ、外部テーブルCSV形式の並列解析、Hiveテーブルクエリの最適化、ODPS(MaxCompute)の大規模パーティションに対するマルチマシン並列ダウンロードの最適化が含まれます。
ベクトル検索の類似度関連関数の拡張
similarity機能が追加され、LIMIT句の後にparameters (similarity=x)を指定して類似度のしきい値を設定し、しきい値を下回る結果をフィルタリングできるようになりました。inner_product_similarity、cosine_similarity、l2_similarityの3つの関数が提供され、戻り値の範囲は[0,1]で、2つのベクトルの類似度が1に近いほど類似していることを示します。IVFベクトルインデックスのパフォーマンス最適化
IVF/IVF_PQインデックスは、構築、クエリ、DML、使いやすさの4つの側面で向上しています。構築側では、Kmeansの並列化とdomain id mergeフレームワークの適用により構築効率が向上しています。クエリ側では、反復型フィルタリングアルゴリズムが導入され、フィルタリング率に応じてpre/post filterを適切に選択します。DML側では、キャッシュメカニズムにより増分書き込みが最適化されています。使いやすさ側では、インデックス再構築パラメータの変更、構築進捗の監視、ステートメントレベルのnprobesパラメータの動的設定がサポートされています。リアルタイム統計情報の収集
ストレージ層でリアルタイム統計情報を収集し、可観測性を強化します。
小トランザクションのダンプ状態最適化
高頻度・小トランザクションのシナリオにおいて、トランザクション状態の補完メカニズムを最適化し、データのクリーンアップを高速化します。また、長時間にわたるトランザクションが回収処理をブロックするのを防ぎ、未コミットのトランザクションが存在しても完了したトランザクションデータをクリーンアップできるため、読み書き性能が向上します。
その他のパフォーマンス最適化
- 外部キー、トリガーなどの複雑な条件を含むDMLステートメントのパフォーマンスを最適化します。
- OBKVモードにCDCでTTL DELETEログを同期対象から除外する機能を追加し、I/O負荷を軽減します。
プロダクト動作の変更
機能 |
変更の説明 |
|---|---|
| 自動パーティションの分割のしきい値の下限値の調整 | テーブルレベルの自動パーティションの分割のしきい値の下限を128MBから1MBに引き下げます。 |
Intervalパーティションテーブルがupdate global indexes構文をサポートするようになりました |
Oracleモードでは、IntervalパーティションテーブルがUPDATE GLOBAL INDEXESをサポートし、TRUNCATEおよびDROP中もインデックスが利用可能です。 |
クラスタレベル構成パラメータob_storage_s3_url_encode_typeのデフォルト値の変更 |
デフォルト値をcompliantRfc3986Encodingに変更します(S3 SDKのみ有効)。 |
| OBCDCのIPv6対応改修 | OBCDCはIPv6をサポートします。 |
ビューの変更
ビュー |
変更タイプ |
変更の説明 |
|---|---|---|
[G]V$OB_SQL_AUDIT |
列の追加/列の意味の変更 | COMMIT_TIME、TX_TABLE_READ_CNT、OUTROW_LOB_CNT、OBJECT_STORAGE_READS、PARENT_TRACE_IDなどの列を追加します。COMMIT_TIMEはトランザクションのコミット所要時間を記録します。ELAPSED_TIME列の意味を変更し、COMMIT_TIMEを含むようにします。 |
GV$SQL_AUDIT |
列の追加 | COMMIT_TIME(bigint(20))列を追加し、SQLコミットの所要時間(マイクロ秒)を表します。 |
DBA_OB_USERS / CDB_OB_USERS |
列の追加 | old_password(varchar(128))とold_password_start_time(bigint(20))列を追加し、デュアルパスワード情報の管理に使用します。 |
mysql.user |
列の追加 | user_attributes(longtext)列を追加し、拡張属性(JSON形式)の格納に使用します。デュアルパスワード情報はJSONオブジェクトのadditional_passwordキーに格納されます。 |
DBA_PROFILES |
列の追加 | password_rollover_timeを追加し、パスワードローテーションの有効期間(マイクロ秒)を制御します。また、PASSWORD_ROLLOVER_TIMEリソース項目の表示を追加します。 |
DBA_USERS / USER_USERS |
列値の論理変更 | ACCOUNT_STATUSに状態OPEN & IN ROLLOVERを追加し、アカウントが正常でパスワードローテーション期間中であることを示します。新旧のパスワードはどちらも使用可能です。 |
ALL_OBJECTS / DBA_OBJECTS / USER_OBJECTS |
型の追加 | OBJECT_TYPE='JAVA CLASS'を追加し、アップロードされたJava Classオブジェクトを表示するために使用します。 |
DBA_OB_TENANTS |
列の追加 | PROTECTION_MODEとPROTECTION_LEVELを追加し、プライマリ/スタンバイデータベースの保護モードと保護レベルを表示するために使用します。 |
CDB/DBA_OB_SYNC_STANDBY_DEST |
ビューの追加 | システム/ユーザーテナントで各テナントの同期レプリケーション先の情報を確認できます。 |
CDB/DBA_OB_TABLEGROUPS |
列の追加 | SCOPE(VARCHAR(20))列を追加し、テーブルグループの分布範囲(SERVER/ZONE/CLUSTER)を表示します。SCOPEが空の場合、SHARDING='NONE'はSERVERを、SHARDING='PARTITION'/'ADAPTIVE'はCLUSTERを表示します。 |
CDB/DBA_OB_TABLEGROUP_TABLES / CDB/DBA_OB_TABLE_LOCATIONS |
列の追加 | SCOPE列を追加し、テーブルが属するテーブルグループの分布範囲属性を表示します。 |
SHOW TABLEGROUPS |
列の追加 | SCOPE列を追加し、テーブルグループの分布範囲属性を表示します。 |
V$INSTANCE |
クエリのサポート | このビューを使用して制限モード(Restricted Mode)の状態をクエリできるようになりました。 |
| CDB/DBA_SCHEDULER_RUNNING_JOBS | 新規 | テナント内で実行中のjobを表示します。20フィールドを含みます。 |
CDB_SCHEDULER_JOBS |
新規 | すべてのテナント内のすべてのjob(実行中および未実行)を表示します。DBA_SCHEDULER_JOBSのCDBビューを補完します。 |
DBA_OB_ROOTSERVICE_EVENT_HISTORY |
列の追加 | OLD_VALUE情報を追加します(NAME4/VALUE4で表示)。構成パラメータ変更前の値を記録します。EVENT='admin_set_config'の場合、NAME4='old_value'となります。 |
GV$SESSION_LONGOPS |
情報の追加 | IVFのクラスタリング構築段階で進捗情報を追加し、形式はVEC_TASK:{TRI_CNT, CUR_ITER, END_DIFF, DIFF, IMPALANCE, SUCC_TABLET}となります。 |
GV$OB_LOG_STAT |
列の追加 | SYNC_MODE(VARCHAR(128))列を追加し、ログストリームの同期モード(ASYNC、SYNC、PRE_ASYNC)を表示します。 |
DBA_JAVA_POLICY / USER_JAVA_POLICY |
ビューの追加 | Java Policy管理関連のビューを追加します。 |
DBA_TAB_PRIVS / USER_TAB_PRIVS / ALL_TAB_PRIVS |
権限の追加 | RESTRICTED SESSION権限を追加します。 |
構文と関数の変更
構文/関数 |
適用テナント |
説明 |
|---|---|---|
CAST AS BIGINT |
MySQL/Oracle | データを bigint 型に変換することをサポートします。 |
ALTER USER 'user'@'host' IDENTIFIED BY 'new_password' RETAIN CURRENT PASSWORD |
MySQL | デュアルパスワードをサポートし、パスワードを変更する際に古いパスワードをセカンダリパスワードとして保持し、新旧のパスワードが同時に有効になります。 |
ALTER USER 'user'@'host' DISCARD OLD PASSWORD |
MySQL | デュアルパスワードをサポートし、古いパスワードを破棄し、現在のメインパスワードのみを保持します。 |
CREATE/ALTER PROFILE PROFILE_NAME PASSWORD_ROLLOVER_TIME {days} |
Oracle | パスワードローテーションをサポートし、パスワードローテーションの有効期間を設定します。 |
ALTER USER username EXPIRE PASSWORD ROLLOVER PERIOD |
Oracle | パスワードローテーション期間を手動で終了し、古いパスワードをクリアします。 |
DBMS_JAVA.OB_LOADJAR(jar_blob, flags) |
Oracle | JARパッケージをOBServerにアップロードします。flags にはオプションとして -F を指定し、同名のクラスを上書きすることができます。 |
DBMS_JAVA.RESTRICT_PERMISSION(user, permission, target, action) |
Oracle | ユーザー/ロールに細かい粒度のJava権限(ファイル読み取りなど)を付与します。 |
| NLS_CHARSET_ID(string) | Oracle | NLS_CHARSET_ID 関数を新規追加し、文字セットIDを返します。CHAR_CS/NCHAR_CS の特殊値をサポートし、大文字と小文字を区別しないマッチングをサポートします。 |
| MAX_EXECUTION_TIME(N) hint | MySQL | SQLヒント構文で、N はミリ秒単位で、単一SELECTのタイムアウト時間を設定します。 |
SET SESSION max_execution_time = N |
MySQL | セッションレベルのシステム変数設定です。 |
SET GLOBAL max_execution_time = N |
MySQL | グローバルレベルのシステム変数設定です。 |
SELECT audit_log_encryption_password_set() |
MySQL/Oracle | 監査ログの暗号化パスワードを生成し、pwd_id を返します。 |
SELECT audit_log_encryption_password_get([pwd_id]) |
MySQL/Oracle | 指定された、または最新の監査ログの暗号化パスワードを取得します。 |
ALTER SYSTEM SET SYNC_STANDBY_DEST = "SERVICE=host NET_TIMEOUT=20 HEALTH_CHECK_TIME=40s USER=user_name@tenant_name PASSWORD=password" [tenant = "tenant1"] |
MySQL/Oracle | 同期モードのスタンバイデータベースの宛先を設定します。host はスタンバイデータベースのIPアドレスリスト(セミコロン区切り)、NET_TIMEOUT のデフォルトは30秒、HEALTH_CHECK_TIME のデフォルトは60秒、USER/PASSWORD はレプリケーション専用ユーザーの資格情報です。 |
ALTER VIEW view_name COMPILE |
Oracle | ビューの再コンパイルを手動でトリガーし、ビューの状態を VALID に更新します。 |
ALTER VIEW view_name RECOMPILE |
Oracle | COMPILE と同じです。 |
ALTER VIEW [database.]view_name COMPILE |
MySQL | MySQLモードでは、databaseを指定する構文をサポートします。 |
CREATE TABLEGROUP tablegroup_name [SHARDING = 'NONE'] [SCOPE = 'CLUSTER'] |
MySQL/Oracle | テーブルグループ作成時に SCOPE=CLUSTER を指定し、クラスタ全体の分散を実現できます(テナントが配置されているクラスタのバージョンがV4.4.2 BP1以上である必要があります)。 |
ALTER TABLEGROUP tablegroup_name SCOPE = 'CLUSTER' |
MySQL/Oracle | テーブルグループの SCOPE プロパティを変更することをサポートします(テナントが配置されているクラスタのバージョンがV4.4.2 BP1以上である必要があります)。 |
ALTER SYSTEM ENABLE RESTRICTED SESSION |
Oracle | 制限モードを有効にします。RESTRICTED SESSION 権限を持つユーザーのみがログインできます。 |
ALTER SYSTEM DISABLE RESTRICTED SESSION |
Oracle | 制限モードを無効にし、通常のユーザーログインを復元します。 |
window_funnel(window, mode, timestamp, cond1, cond2, ..., condN) |
MySQL/Oracle | ファネル分析の集約関数で、戻り値の範囲は [0, N] です。default と strict_deduplication の2つのモードをサポートします。 |
cosine_similarity(vector_1, vector_2) |
MySQL | コサイン類似度を計算します。値の範囲は [0,1] です。 |
l2_similarity(vector_1, vector_2) |
MySQL | L2類似度を計算します。値の範囲は [0,1] です。 |
inner_product_similarity(vector_1, vector_2) |
MySQL | 内積類似度を計算します。値の範囲は [0,1] です。 |
SELECT ... ORDER BY distance_expr APPROX LIMIT k PARAMETERS (similarity=x) |
MySQL | ベクトルクエリは類似度のしきい値によるフィルタリングをサポートします(x の値は [0,1])。 |
CALL DBMS_VECTOR.REBUILD_INDEX(index_name, table_name, column_name, trigger_percent, extra_args1, extra_args2, build_param) |
MySQL | ストアドプロシージャを通じてベクトルインデックスを再構築し、インデックスタイプとパラメータを変更することをサポートします。 |
SELECT ... ORDER BY distance_function(column, vector) APPROXIMATE LIMIT n PARAMETERS(IVF_NPROBES=value) |
MySQL | ステートメントレベルで IVF_NPROBES クエリパラメータを指定することをサポートします。 |
CALL dbms_vector.rebuild_index(index_name, table_name, column_name, delta_rate_threshold, index_organization, distance_metrics, index_parameters) |
MySQL | IVFインデックスパラメータを変更して再構築することをサポートし、IVF_FLAT と IVF_PQ の主要なパラメータに対応しています。 |
構成パラメータの変更
構成パラメータ |
型 |
デフォルト値 |
有効レベル |
|---|---|---|---|
schema_history_expire_time |
TIME | 7d | テナントレベル(元はクラスタレベル) |
schema_history_recycle_interval |
TIME | 10m | クラスタレベル |
schema_history_archive_expire_time |
TIME | 0 | テナントレベル |
max_execution_time |
INT | 0 | SESSION/GLOBAL |
audit_log_enable |
BOOL | FALSE | テナントレベル |
audit_log_buffer_size |
CAPACITY | 16M | テナントレベル |
audit_log_compression |
STRING | NONE | テナントレベル |
audit_log_path |
STRING | "" |
テナントレベル |
audit_log_format |
STRING | CSV | テナントレベル |
audit_log_max_size |
CAPACITY | 0M | テナントレベル |
audit_log_prune_seconds |
INT | 0 | テナントレベル |
audit_log_query_sql |
STRING | ALL | テナントレベル |
audit_log_rotate_on_size |
CAPACITY | 256M | テナントレベル |
audit_log_strategy |
STRING | ASYNCHRONOUS | テナントレベル |
audit_log_encryption |
STRING | NONE | テナントレベル |
ob_vector_search_strategy |
INT | RECALL_FIRSTに変更 | テナントレベル |
ob_storage_s3_url_encode_type |
STRING | compliantRfc3986Encoding(元はdefault) |
クラスタレベル |
zone_disk_balance_tolerance_percentage |
INT | 10 | テナントレベル |
V4.4.2
バージョン情報
- リリース日:2026年02月10日
- バージョン番号:V4.4.2
- RPMバージョン番号:oceanbase-4.4.2.0-100000252026020915
バージョン概要
OceanBase V4.4.2は、TP/APを統合した、ハイブリッドワークロード向けのLTSバージョンであり、4.2.5 LTSのトランザクション処理能力と4.3.5 LTSの分析処理能力を深く統合しています。データ管理、互換性、システムセキュリティ、運用保守診断など、多角的にカーネル機能を体系的に強化し、重要なトランザクションワークロードと複雑な分析ワークロードに対して、より強力で安定した技術基盤を提供します。
TPシナリオでは、新バージョンはコンポジット・パーティションテーブルの第1レベルのパーティションを、通常の単一レベルのパーティションテーブルと交換できるようにし、大規模データのパーティション管理とデータ再編成を大幅に簡素化します。Oracleモードのグローバル一時テーブルを再構築し、一時テーブルのパフォーマンスを大幅に向上させます。MySQLモードでセッションレベルのプライベート一時テーブルを新たに追加し、一時テーブルの機能を充実させます。OBCDCはテーブルレベル復元後の増分データ同期をサポートし、仮想生成列の同期もサポートすることで、下流システムのテーブルレベルの増分データおよび生成列を利用するニーズをより良く満たします。
APシナリオでは、V4.4.2はマテリアライズドビューを全面的に強化しています。DDL操作のサポート、増分更新機能の最適化、ネストされたマテリアライズドビューの連鎖更新、主キーのないテーブルに基づくマテリアライズドビューなどが含まれ、クエリパフォーマンスとデータ分析の柔軟性を大幅に向上させます。V1.4.7、2.x、3.xの論理バックアップおよび物理バックアップをデータソースとして4.xクラスタにインポートすることを新たにサポートし、異なるバージョン間のデータ移行およびデータインポート機能を拡張します。パーティションを自動作成するINTERVALパーティションと、MySQL Union Distinct RCTEをサポートし、Oracle/MySQLの構文と動作の互換性をさらに強化します。同時に、Oracleモードの空間幾何関数を拡張し、GISおよび空間分析アプリケーションのニーズをより良く満たします。
KVシナリオでは、OBKV機能を継続的に改善し、弱い整合性読み取り、TTLでのインデックススキャンのサポート、ホットKeyクエリの最適化などの機能を新たに追加します。また、OBKV-HBaseの監視項目の整理を完了し、高同時実行のKVおよび時系列シナリオでより低い遅延と強力な観測可能性を提供します。
パフォーマンス面では、V4.4.2は細分化されたシナリオに対して特別な最適化を施しています。直列テーブル作成のパフォーマンスは同等のシナリオで約60%向上しました。PLにおけるUDF、Triggerなどの実行パスを最適化し、トランザクションの非同期コミットをサポートすることで、業務ロジック処理効率を効果的に向上させます。中国製の大規模CPU環境に対して、PDMLのパフォーマンスが約25%向上し、レプリケーションテーブルのフォロワーでのクエリパフォーマンスが約14倍向上し、リーダークエリ能力に迫り、システムの水平スケーラビリティを大幅に強化します。同時に、PX適応型タスク分割メカニズムを導入し、完了までに時間がかかるタスクを自動的に識別・分割することで、パラレルクエリのワークロード再バランシングを実現し、クエリの完了を加速します。
セキュリティと運用保守診断面では、新バージョンはアプリケーション側で意識する必要のない列暗号化とClogログのTDE暗号化をサポートし、データからログに至るまでより堅固なセキュリティ防御ラインを構築します。同時に、デッドロック検出メカニズムを最適化し、Active Session History (ASH)データの完全性を強化し、SQLSTAT統計情報を再構築することで、データベース管理者がパフォーマンスボトルネックや異常なSQLを特定するための、より精密で信頼性の高い診断ツールを提供します。
V4.4.2はLTSバージョンとして、TP、AP、HTAP業務での使用を推奨します。
主な特徴
カーネルの強化
パーティション交換機能が単一レベルのパーティションテーブルとコンポジット・パーティションテーブル間の交換をサポート
パーティション交換機能に、コンポジット・パーティションテーブルの第1レベルのパーティションと、単一レベルのパーティションテーブルとの交換が追加されました。
OBCDCがテーブルレベル復元後の増分データ同期をサポート
OBCDCは許可リストとブラックリスト機能をサポートしており、データ同期時には、許可リストに含まれ、かつブラックリストに含まれないテーブルのみを同期します。テーブルレベル復元プロセスはオフラインDDLプロセスであるため、復元されたテーブルに対して、OBCDCはtable_nameを取得できず、テーブルレベル復元後のテーブルの増分データ同期をサポートできませんでした。新バージョンでは、OBServerのテーブルレベル復元プロセスの最後に、__all_ddl_operationテーブルに復元後のテーブル名を記録する新しいフィールドが追加されました。これにより、OBCDCはこの復元後のテーブルを認識し、テーブル名に基づいて許可リストとブラックリストを照合することで、増分データ同期をサポートできるようになりました。
マテリアライズドビュー機能の強化
V4.4.2バージョンでは、マテリアライズドビューの機能が引き続き改善され、以下の内容が含まれます:
- DDL機能が強化され、
RENAMEがサポートされ、マテリアライズドビューのログに列の追加が可能になりました。 - 増分更新機能が強化され、外部結合、
UNION ALL、単一テーブルの非集約モード、LEFT JOINを含む集約マテリアライズドビューなどのタイプが新たにサポートされ、重複するSELECT ITEMとGROUP BY列もサポートされました。また、MIN/MAX集約マテリアライズドビューの増分更新機能が強化されました。 - ネストされたマテリアライズドビュー機能が強化され、連鎖更新がサポートされました。
- マテリアライズドビュー更新時の次元テーブルの非更新:マテリアライズドビュー作成時に、新規の
AS OF PROCTIME()構文を使用して更新不要のテーブルを指定することで、マテリアライズドビューの増分更新実行時にそのテーブルの増分データを更新しないようになりました。 - 単一テーブル集約の増分更新マテリアライズドビューが
MIN()/MAX()集約関数をサポートしました。 - MLOGの自動管理:増分更新マテリアライズドビュー作成時に、ベーステーブルに必要なMLOGテーブルを自動的に作成・置き換え、バックグラウンドで冗長なMLOGテーブルを定期的にクリーンアップします。
md5_concat_ws関数のサポート。- マテリアライズドビューのビュー内容とマテリアライズドビュー作成時のエラーメッセージの最適化。
- 主キーのないテーブルに基づく増分マテリアライズドビューのサポート。
AS OF PROCTIME()と宣言されたビューへの参照のサポート。- マテリアライズドビューがUDTとUDFをサポートし、
minimalモードをサポートします。
- DDL機能が強化され、
SQL機能の強化
V4.4.2バージョンでは、複数のSQL機能が強化され、ビューのフィルタ条件にサブクエリが含まれる場合に
WITH CHECK OPTIONを指定できるようになりました。PSのPrepare/Execute一括実行プロトコルでのパラメータ付きprepare
PSのPrepare/Execute一括実行プロトコルのprepareフェーズでは、OBServerはドライバーから送信された実引数情報を受け取れないため、prepareプロセス中に実引数の型に基づいて適切なオーバーロード関数をマッチングできず、オーバーロード時に結果セットの取得で異常が発生することがありました。この問題を解決するため、新バージョンではプロトコルパケットのパラメータ解析処理をprepare操作の前に移動しました。これにより、一括実行プロトコルのprepare操作実行中にドライバーから渡された実引数情報に基づいて正しいオーバーロード関数をマッチングできるようになり、結果セットを正常に取得できるようになります。
Sessionレベルのプライベート一時テーブルのサポート
V4.1.0 BP4バージョン以降、MySQLモードでは一時テーブル機能が無効になっていましたが、V4.4.2バージョンではMySQL互換モードでの一時テーブル機能の使用が許可され、一時テーブルの作成、変更、削除、および一時テーブルに基づくインデックスの作成などの機能がサポートされるようになりました。
MySQLモードの構文拡張
MySQLモードでは、
CAST AS INTEGER、CAST AS ARRAY、SPLIT、CONTAINS、NEXTVAL(SEQ)/CURRVAL(SEQ)が新規追加されました。ARRAY<>形式の配列定義がサポートされ、JSON型列からTEXT/MEDIUMTEXT/LONGTEXTへの変換がサポートされました。INSERT OVERWRITEがINTOキーワードをサポートし、SQLの末尾に--記号だけを付けた場合でも、実行時にエラーが発生しないように変更されました。RANGE、MAXVALUEの予約語が変更され、非予約語となりました。スタンバイデータベース読み取り機能の最適化と安定性の向上
V4.4.2バージョンでは、スタンバイデータベース読み取り機能が最適化され、トランザクション状態推定メカニズムが最適化されました。これにより、従来は各レプリカが独立して参加者状態を収集する必要があった方式から、コーディネーターリーダーが一元的に収集・キャッシュする方式に変更され、メッセージのやり取り回数が大幅に削減されました。同時に、再試行メカニズムが導入され、レプリカが遅延した場合に自動的に他のレプリカにリクエストを転送して処理することで、ブロッキングやトランザクション状態の誤推定を回避し、スタンバイデータベース読み取りシナリオの安定性が向上しました。
異種ゾーンのサポート
OceanBase 4.0では同種ゾーンのアーキテクチャが設計されており、クラスタのデプロイアーキテクチャを簡略化しましたが、OceanBase3.xでサポートされていた一部の機能を失っていました。一般的な問題として、単一ノード障害発生時にスケールダウンが必要な場合、すべてのゾーンを同時にスケールダウンする必要があり、リソースの無駄遣いが発生していました。上記の問題を解決し、OceanBaseのスケーラビリティを強化するため、新バージョンでは異種ゾーンのデプロイアーキテクチャをサポートしています。
異種ゾーンのデプロイアーキテクチャでは、テナントは2種類の異なるUNIT NUMを設定できます。単一ノードに障害が発生した場合、障害ノードを直接削除でき、他のゾーンを調整する必要がないため、運用コストが削減されます。同時に、単一ノードの障害が他のゾーンのロードバランシングに影響を与えず、業務トラフィックへの影響を低減し、よりスムーズなスケーリングを実現します。
OBCDCは仮想生成列の同期をサポートします
OceanBase 4.0バージョン以降、仮想生成列はCLOGに記録されなくなりました。そのため、OBCDCはCLOGから仮想生成列を同期できません。これにより、仮想生成列に依存するダウンストリームシステムでは、仮想生成列の値を取得できず、データが失われることになり、許容できない問題となっていました。新バージョンのOBCDCは仮想生成列の同期をサポートし、ダウンストリームシステムの仮想列のデータを利用するニーズを満たします。
MySQL互換性
MySQL Union Distinct RCTE
MySQL 8.0は、CTEのRecursive Union AllおよびRecursive Union Distinct機能をサポートしています。OceanBaseはV3.2.3バージョンからMySQLモードのRecursive Unionをサポートしていましたが、Recursive Union Allのみをサポートしていました。新バージョンでは、MySQLのRecursive Union Distinct機能に対応し、出力データの一意性を保証します。同時に、Recursive Union All機能も強化され、使用可能なメモリが不足した場合にデータをディスクにフラッシュすることができるようになりました。
Oracle互換性
INTERVALパーティション
新バージョンでは、OracleテナントモードでINTERVALパーティション機能を実装しました。新規挿入されるデータが既存のパーティションの範囲を超えると、自動的に新しいパーティションが作成され、パーティション管理の複雑さが低減します。
DBMS_SCHEDULER機能の強化
V4.4.2バージョンでは、DBMS_SCHEDULERが時間式
repeat_intervalをサポートし、BYMONTH/BYYEARDAY/BYMONTHDAY/BYDAY/BYHOUR/BYMINUTE/BYSECONDフィールドを含めてジョブ実行時間の表現方法を指定できるようになりました。また、中国語のジョブ名もサポートしています。
OBKV/マルチモーダル機能の強化
V4.4.2では、OBKV/マルチモーダルシナリオの機能が複数強化されており、主なポイントは以下の通りです:
OBKVでの弱い整合性読み取りと最寄りデータセンターからの読み取りをサポート
- 弱い整合性読み取り:アプリケーションは非リーダーレプリカ(フォロワー)からデータを読み取れます。これらのレプリカは最新ではない可能性があるため、読み取ったデータはリーダーレプリカのバージョンよりも若干古くなる場合があります。
- 最寄りデータセンターからの読み取り:クライアントは現在の地理的位置またはネットワークトポロジーに基づき、自身に最も近いデータセンターから優先的にデータを読み取ります。これにより、ネットワーク遅延が削減され、応答速度が向上します。
TTL(Time To Live)でインデックススキャン機能をサポート
ユーザーが指定したインデックスを通じてTTLデータのクリーンアッププロセスを高速化できるようになりました。デフォルトの主キースキャンシナリオでは、TTLタスクはテーブル全体をスキャンし、完全な行を読んで期限切れかどうかを判断する必要がありました。有効期限を表す列にローカルインデックスを構築することで、テーブル全体の完全な行のスキャンに伴うI/Oオーバーヘッドを削減し、スキャン速度を向上させることができます。
OBKV-HBase監視の強化
OBKV-HBaseの監視機能が強化され、主な内容は以下の通りです: * HBaseのgetとscanをQPS、RT、P99の監視統計で区別し、独立した監視項目を使用して追跡するようになりました。 * バッチシナリオで単一putと単一delete操作を区別し、より細かい粒度の監視統計を提供するようになりました。 * 分散型を有効にしない場合でも、HBaseのバッチget操作でaudit追跡の使用がサポートされるようになりました。 * OBKV-HBaseクライアントに対応する操作のOPS、RT、P99データの返却が追加されました。
時系列モデルでput操作をサポート
時系列モデルの
V列はjson型であり、lobの制約によりput操作をサポートできませんでした。時系列モデルのput操作はinsertインターフェースに基づいて実装されています。insertインターフェースの実行時には主キー競合チェックが行われますが、SSモードの負荷テストで主キー競合チェックが読み取り帯域幅を大量に消費していることが判明しました。コールドデータがOSSに移行した後、競合チェックではsstableに対してget操作を発行する必要があり、この際の読み取り遅延は非常に高くなります。同時に、ランダム書き込みシナリオ(ほとんどのユーザーシナリオ)では、ダンプとメジャーコンパクションが占有するI/O帯域幅も大きくなります。これら二つの要因が重なることで、クラウドディスクの帯域幅がすぐに上限のボトルネックに達し、書き込みスロットリングがトリガーされます。そのため、V4.4.2バージョンではput操作をサポートし、上記の問題を解決しました。OBKV-HBaseクエリの最適化
OBKV-HBaseのクエリは、全範囲スキャン戦略を採用しており、まずすべてのqualifierのデータをスキャンしてからフィルタリングを行います。この方法はサーバー側で大量の冗長なスキャンと処理オーバーヘッドを発生させ、特にワイド行やマルチバージョン行に対するクエリで少数のqualifierのみが関与する場合、遅延が顕著になります。V4.4.2では、クエリ遅延を低減するために、ワイド行やマルチバージョン行を高速にスキップするための構成パラメータ
HBASE_HTABLE_HOTKEY_GET_OPTIMIZE_ENABLEが新規追加されました。Oracleモードでの空間関数の拡張
Oracleモードで
SDO_CONTAINS、SDO_ANYINTERACT、SDO_AREA、SDO_UTIL.GETVERTICESといった空間幾何関数が新規追加され、空間包含判断、交差判断、面積計算、幾何頂点抽出などの一般的なGIS操作をカバーしています。空間データ分析、地理情報計算、地図レンダリング、幾何品質検証などのシナリオに適しています。
パフォーマンス向上
直列テーブル作成のパフォーマンス最適化
DDLのパフォーマンスを向上させるため、4.2.xバージョンではCREATE/DROPなどのDDLのパラレル実行機能をサポートしてきました。しかし、並列をサポートしないDDLが存在する場合、並列DDL機能を利用できません。そのため、直列DDLのパフォーマンスを最適化する必要がありました。この機能は直列テーブル作成をターゲットシナリオとし、スキーマの生成、書き込み、リフレッシュなどのプロセスを最適化し、直列テーブル作成の速度を大幅に向上させるとともに、他のタイプのDDLの実行速度もわずかに向上させることができます。テストの結果、1000個のsysbenchシンプルテーブルを作成する場合、V4.4.2はV4.3.5と比較してパフォーマンスが60%向上しました。
PL実行のパフォーマンス最適化
PLの実行パフォーマンスを向上させるため、V4.4.2バージョンではUDF、TRIGGER、PROCEDUREなどの汎用実行パスを重点的に最適化しました。UDF定数に対する折りたたみ最適化を行い、同時にFORALL機能を拡張してより多くのバッチ実行シナリオをサポートし、PL内部トランザクションの非同期コミットをサポートしました。
ライブラリ関数のメモリ割り当てパフォーマンスの最適化
mimallocメモリアロケータの思想に基づいて設計されたライブラリ関数のメモリ割り当て最適化は、OceanBaseにおけるライブラリ関数の高頻度・小オブジェクトシナリオでのメモリ割り当て効率を向上させるために主に使用されます。メモリブロックをシャードに分割する構成、未使用メモリの遅延回収、ロック競合のない仕組みを導入することで、ライブラリ関数のメモリ割り当てパフォーマンスを大幅に最適化し、割り当て遅延とリソース競合を効果的に低減し、大規模高同時実行ビジネスに対して効率的で安定したメモリ管理サポートを提供します。
中国製CPUを搭載した大規模マシン環境におけるパフォーマンス最適化
主に中国製CPU環境における典型的なシナリオでのCPUホットスポットを最適化し、PDMLとレプリケーションテーブルクエリのパフォーマンスを向上させます。大規模な256コア環境では、高同時実行のPDMLのパフォーマンスが25%向上し、非PDMLシナリオでのメモリ使用量が削減されます。アプリケーションからFollowerに接続した場合のレプリケーションテーブルクエリのパフォーマンスは14倍向上し、QPSが2万から27万以上に増加し、直接Leaderに接続してクエリする場合の30万QPSとの差は10%未満です。32コアの小規模環境でも、上記の最適化によりパフォーマンスが向上します。
PXの適応型タスク分割
PXスキャンで一部のタスクの完了が遅れる現象に対処するため、該当するタスクを適応的に再分割し、負荷の再分散を実現してクエリ速度を向上させます。
セキュリティ強化
アプリケーション側で意識する必要のない列暗号化をサポート
V4.4.2バージョンでは、アプリケーション側で意識する必要のないデータ保護機能をサポートしています。データベース管理者はテーブルに対して列レベルのデータ保護ルールを作成でき、機密データ保護ルールを作成、削除、変更するDDLステートメントおよび関連する権限管理をサポートします。機密データに関わるSELECT操作でPLAINACCESS権限がない場合は暗号化された結果を返し、同じ条件でのDML操作は権限エラーを返します。
使いやすさの向上
デッドロック検出・診断の最適化
デッドロック検出の使いやすさを向上させるため、新バージョンでは複数の診断最適化が追加されました。デッドロックの検出後に内部テーブルへ記録する情報を拡充し、ロックとトランザクションのマッピングロジックを改善しました。同時に、リーダー切り替えシナリオでのデッドロック検出機能も追加されました。また、ダンプシナリオにおいて診断情報が正確に維持されていなかった問題を修正し、診断の安定性を向上させました。
リアルタイム統計情報収集
GV$OB_SQL_AUDITとGV$SQL_PLAN_MONITORは、SQL監視ビューとしてよく使用され、各SQLリクエストのソース、実行状態、リソース消費量、待機時間、SQLテキスト、実行計画、演算子の消費時間、出力行数などの重要な情報を記録しています。しかし、逆順スキャンなどストレージ層の情報収集に関わるシナリオでは、依然として情報不足の問題がありました。SQL診断の使いやすさをさらに向上させるため、4.4.2バージョンでは、ストレージ層にリアルタイム統計情報を追加し、監視ビューに記録します。これには、クエリアクセスのマイクロブロック数と行数、プッシュダウンされたマイクロブロック数と行数、プッシュダウンパス経由の所要時間、プッシュダウンパス非経由の所要時間、skip indexでスキップされたマイクロブロック数と行数などの主要な情報が含まれます。また、filterでフィルタリングされた行数、filterでのフィルタリング時間、読み取られた未コミット行数などの情報も追加されます。同時に、SQL Auditなどの監視ビューで統計情報収集が不完全または不正確であった問題も最適化されました。
ASHデータの完全性強化
V4.2.5ではASHが再構築され、ASHはテナントキュー要求の状態を追跡できます。各要求は毎秒1回、ASHバッファに1件のレコードとして書き込まれます。現在のASHバッファは30MBで、約5万件のデータを格納できます。2分ごとにメモリ内のデータをディスクに落とす必要があるかどうかをチェックしますが、キューに大量のバックログが発生するシナリオでは、ASHバッファがデータをディスクに書き込む前にデータが上書きされ、問題イベントの重要な診断データが失われてしまいます。V4.4.2では、__all_virtual_ashテーブルに重み列weightを追加し、デフォルトで1に設定しました。ASHバッファが急速に満杯になる可能性がある場合(通常はキューのバックログが原因)、各キューのバックログ待機イベントごとに1件のASHレコードを書き込むのではなく、weightを用いて1件のレコードに重みを示すことで、診断データの完全性を強化します。
SQLSTATの再構築
Sqlstatはsql idとplan hashの組み合わせ単位の統計情報を記録しており、これらの情報に基づいて、そのSQLに問題があるかどうかを比較的直接的に判断し、RT異常のsqlを特定するのに役立ちます。しかし、現在のバージョンでは、sqlstatにはいくつかの既知の問題があります:
- plan cacheとsqlstatはlib cacheを共有しており、sqlstatがlib cacheを過度に占有すると、計画がplan cacheに追加できなくなります。
- sqlstatスナップショット値を更新する際、leaderノードのみを更新し、followerノードのデータスナップショットを更新しないため、followerノードのデータが誤ってしまいます。
- sqlstatのディスクへの書き込み時間は1時間に1回であり、SQL実行状況をタイムリーに反映できません。 上記の問題を解決するため、V4.4.2バージョンではsqlstatを再構築しました。主な内容は以下の通りです:
- sqlstatをlibrary cacheから切り離し、テナント単位のhashmapで管理し、定期的にスナップショットの取得と不要なエントリの削除を実行します。
- 各SQL実行完了後、まずphysical planに累積し、所定の累積回数に達した後にテナントhashmapに累積します。
- 仮想テーブルをクエリする際、まずphysical plan上のデータをテナントhashmapに累積し、その後データを出力します。
互換性変更
ビューの変更
以下の変更を追加します:
ビュー |
変更タイプ |
変更説明 |
|---|---|---|
| ALL_OBJECTS / DBA_OBJECTS / USER_OBJECTS | 列の追加 | SENSITIVE RULEオブジェクトの表示を追加 |
| DBA_TAB_PRIVS / ALL_TAB_PRIVS / USER_TAB_PRIVS / ROLE_TAB_PRIVS | 列の追加 | オブジェクトレベルのPLAINACCESS権限の表示を追加 |
| DBA_SYS_PRIVS / USER_SYS_PRIVS / ROLE_SYS_PRIVS | 列の追加 | ユーザーレベルのPLAINACCESSおよびCREATE SENSITIVE RULE権限の表示を追加 |
| DBA_OB_LOB_CHECK_TASKS | 新規 | LOB整合性検証および復元タスクのスキャン進捗状況を記録します。このビューを使用して、テナントレベルタスクとLSレベルタスクを照会できます。 |
| CDB_OB_LOB_CHECK_TASKS | 新規 | LOB整合性検証および復元タスクのスキャン進捗状況を記録します |
| DBA_OB_LOB_CHECK_EXCEPTION_RESULT | 新規 | LOB整合性検証の異常tableとtablet、および異常タイプを表示します |
| CDB_OB_LOB_CHECK_EXCEPTION_RESULT | 新規 | LOB整合性検証の異常tableとtablet、および異常タイプを表示します |
| GV$ACTIVE_SESSION_HISTORY / V$ACTIVE_SESSION_HISTORY / GV$OB_ACTIVE_SESSION_HISTORY / V$OB_ACTIVE_SESSION_HISTORY | 列の追加 |
|
| DBA_WR_SQLSTAT/CDB_WR_SQLSTAT | 実装の変更 | SAMPLE_TIME列は、sqlstatスナップショットがディスクに書き込まれた時間を表します。1回のWRスナップショット間隔内に、sqlstatは複数回ディスクに書き込まれる可能性があります |
| GV$OB_SQLSTAT | 列の追加 | latest_active_timeを新規追加。このsqlstatが最後にアクティブだった時間を表します |
| DBA_OB_SENSITIVE_RULES | 新規 | 機密データ保護ルールの定義とその属性を表示するために使用されます |
| DBA_OB_SENSITIVE_COLUMNS | 新規 | 機密データ保護ルールで保護されている列を表示するために使用されます |
| DBA_OB_SENSITIVE_RULE_PLAINACCESS_USERS | 新規 | 機密データ保護ルールに対してPLAINACCESS権限を持つユーザーまたはロールを表示するために使用されます |
| DBA_OB_KV_TTL_TASKS | 列の追加 | scan_indexを新規追加。TTLタスクのスキャンインデックスを記録します |
| DBA_OB_KV_TTL_TASK_HISTORY | 列の追加 | scan_indexを新規追加。TTLタスクのスキャンインデックスを記録します |
| CDB_OB_KV_TTL_TASKS | 列の追加 | scan_indexを新規追加。TTLタスクのスキャンインデックスを記録します |
| CDB_OB_KV_TTL_TASK_HISTORY | 列の追加 | scan_indexを新規追加。TTLタスクのスキャンインデックスを記録します |
構成パラメータの変更
以下の変更を追加します:
構成パラメータ |
変更タイプ |
変更説明 |
|---|---|---|
| sql_func_extension_mode | 新規 | MySQLと命名スタイルが一致しない一部の主流互換モード関数を有効にするかどうかを制御します |
システム変数
システム変数 |
変更タイプ |
説明 |
|---|---|---|
| json_float_full_precision | 新規 |
|
関数の変更
関数名 |
変更タイプ |
説明 |
|---|---|---|
| DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS() | パラメータの追加 |
|
構文の変更
構文 |
変更説明 |
|---|---|
| WITH CHECK OPTION サブクエリのサポート | OracleおよびMySQLのWITH CHECK OPTIONにおけるサブクエリの動作と互換性をサポートします |
CREATE SENSITIVE RULE <rule_name> ON <sensitive_field_list> USING <sensitivity_protection_spec>; |
機密データ保護ルールを作成するステートメントをサポートします |
DROP SENSITIVE RULE <rule_name>; |
機密データ保護ルールの削除をサポートします |
ALTER SENSITIVE RULE <rule_name> <alter_sensitive_rule_action>; |
機密データ保護ルールのプロパティ変更をサポートします |
GRANT/REVOKE CREATE SENSITIVE RULE TO/FROM user_or_role; |
ユーザーまたはロールへの機密ルール作成権限の付与/剥奪をサポートします |
GRANT/REVOKE PLAINACCESS ON SENSITIVE RULE <rule_name> TO/FROM user_or_role; |
ユーザーまたはロールへの機密ルール作成権限の付与/剥奪をサポートします |
GRANT/REVOKE PLAINACCESS ANY SENSITIVE RULE TO/FROM user_or_role; |
ユーザーまたはロールへの機密ルール作成権限の付与/剥奪をサポートします |
SHOW SENSITIVE RULES; |
現在のテナント配下のすべての機密データ保護ルールとそれが保護する列の確認をサポートします。ルール名、テーブル、データベースでフィルタリングできます |
周辺ツール
OceanBaseデータベースV4.4.2で推奨されるプラットフォームツールのバージョンは以下の通りです:
コンポーネント |
バージョン |
備考 |
|---|---|---|
| OBProxy |
|
obproxy 4.3.1 ltsの使用を推奨します。obproxy 4.3.1 ltsでサポートされていない新機能が必要な場合は、obproxy 4.3.5.1を使用してください |
| OCP | - | - |
| ODC | 4.4.1bp1 | - |
| OBCDC | OBCDC 4.4.2 | - |
| OMS | 4.3.2 | OBがソース側で増分データを同期する場合は、CDCコンポーネントの追加のホットアップデートが必要です。その他のシナリオでは、4.3.2バージョンを使用できます |
| Binlog | - | - |
| OCCI | occi 1.0.4 | - |
| OBCI | obci 2.1.1.2 | - |
| ECOB | ecob 1.2.1 | - |
| obclient | obclient2.2.12 | - |
| libobclient | libobclient2.2.12 | - |
| OBJDBC | jdbc 2.4.16 | OBJDBCドライババージョン>=2.4.15はODP4.xとの組み合わせで結果の正確性に関する問題が発生するリスクがあるため、新バージョンのドライバの導入は当面見送り、ODP4.3.1.12または4.3.6.2バージョンの修正を待つことを推奨します |
| ODBC | odbc 2.0.9.6 | - |
| obloader | - | - |
アップグレードの説明
- アップグレードパス
- SNモードでは、V4.2.5 BP7、V4.4.0、V4.4.0BP1、V4.4.1からV4.4.2へのスムーズなアップグレードをサポートします。
- SSモードのクラスタはV4.4.2にアップグレードできません。
- ベクトルを使用しているクラスタはV4.4.2にアップグレードできません。
- アップグレード時の注意事項
V4.4.2にアップグレードする際、アップグレード前チェックで以下のエラーが発生した場合:
tenant has sys table with progressive_merge_round=1: tenant_id xxx table_ids 'xxx'
- 現在がV4.2.5 BP7の場合は、まずV4.2.5 BP7hotfix3以降のV4.2.5 BP7hotfixバージョンにアップグレードし、その後V4.4.2にアップグレードする必要があります。
- 現在がV4.3.5 BP2以前のバージョンで、アップグレード時にこの問題が発生した場合は、当該アップグレードは一時的にサポートされていないことを意味します。