この記事では、OceanBaseデータベースのOracleモードとネイティブOracleデータベースの互換性比較情報について説明します。
OceanBaseデータベースは、データ型、SQL機能、データベースオブジェクトなどの基本機能において、Oracleデータベースとの互換性を持ちます。特にPL/SQLに関しては、主要な開発機能との互換性があり、ほぼ完全に対応しています。また、データベースセキュリティ、バックアップ・リカバリ、高可用性、オプティマイザーなどの高度な機能においても、非常に高い互換性を誇り、一部の機能ではOracleデータベースよりも優れています。
これにより、OracleデータベースからOceanBaseデータベースへの移行に際して、ユーザーは新しい知識を習得するための時間を大幅に節約でき、スムーズに移行できることを意味します。ただし、両者は基盤となるアーキテクチャが異なるため、一部の機能ではOceanBaseが一時的に互換性を持たない、あるいはOracleと動作が異なる場合があります。この記事では、次のポイントからOceanBaseデータベースとOracleデータベースの互換性を比較します。
SQLデータ型
関数
SQL構文
PL (procedural language)
ビュー (view)
文字セット (character set)
言語ソートと照合順序 (collations)
データベースオブジェクトの管理
セキュリティ機能
バックアップ・リカバリ
SQLエンジン
データ型
OceanBaseデータベースは、Oracleデータベースでサポートされているほとんどのデータ型と互換性があります。詳細なサポート情報は、SQL データ型を参照してください。
最適化のため、LONGおよびLONG RAWデータ型は非推奨であるため、OceanBaseデータベースでは現在、これらのデータ型をサポートする予定はありません。
関数
OceanBaseデータベースは、Oracleデータベースでサポートされているほとんどの関数と互換性があります。詳細なサポート情報は、組み込み関数を参照してください。
SQL構文
OceanBaseデータベースはOracleデータベースのほとんどのSQL構文に対応していますが、一部の構文はサポートされておらず、エラーが発生することがあります。
SELECT
ほとんどのSELECT文をサポートしています。単一または複数のテーブル検索、サブクエリ、内部結合(INNER JOIN)、セミ結合(SEMI JOIN)、外部結合(OUTER JOIN)、グループ化、集計、階層クエリ(Hierarchical Query)、一般的な確率関数や線形回帰などのデータマイニング関数をサポートしています。
以下の集合演算子をサポートします:
UNION、UNION ALL、INTERSECT、MINUS。EXPLAIN構文を使用して、実行計画を確認することができます。
INSERT
テーブルに1行または複数行のデータを追加することができ、指定されたパーティションへのデータ追加もサポートしています。
INSERT INTO ... SELECT ...文単一および複数のテーブルへのデータ挿入
UPDATE
単一および複数列のデータ更新
サブクエリによるデータ更新
コレクションのデータ更新
DELETE
- 単一および複数テーブルのデータの削除
TRUNCATE
- 指定されたテーブルのデータの全削除
パラレルクエリ
Oracleデータベースに類似したパラレルクエリをサポートしています。
OceanBaseデータベースはAuto DOP (Automatic Degree of Parallelism)機能をサポートし、
Hint/Session変数を使用して手動でDOPを指定することもできます。パラレルDML
ヒント(Hint)
OceanBaseデータベースはをヒント句をサポートしています。ヒントに関する詳細な説明は、Hintを参照してください。
マテリアライズド・ビュー
CREATE MATERIALIZED VIEW(マテリアライズドビューの作成)。DROP MATERIALIZED VIEW(マテリアライズドビューの削除)。
マテリアライズド・ビュー・ログ
CREATE MATERIALIZED VIEW LOG(マテリアライズドビューログの作成)。説明
OceanBase データベースでは、
CREATE MATERIALIZED VIEW LOG構文のwith_clause(PRIMARY KEY、ROWID、SEQUENCE)のデフォルト動作は、Oracleデータベースと互換性がありません。DROP MATERIALIZED VIEW LOG(マテリアライズドビューログの削除)。
マテリアライズド・ビュー
CREATE MATERIALIZED VIEW(マテリアライズドビューの作成) 構文では、リフレッシュモードとしてON COMMITとON STATEMENTは現在サポートされていません。DROP MATERIALIZED VIEW(マテリアライズドビューの削除) 構文では、現在PRESERVE TABLE句はサポートしていません。
マテリアライズド・ビュー・ログ
CREATE MATERIALIZED VIEW LOG(マテリアライズドビューログの作成) 構文において:ASYNCHRONOUS句は現在サポートしていません (非同期でクリアを実行)。EXCLUDING NEW VALUES句を使用すると、エラーが発生します。- パーティションは現在サポートしていません。
PL
OceanBaseデータベースは、OracleデータベースのほとんどのPL/SQL機能と互換性があります。詳細については、PLリファレンスを参照してください。
OceanBaseデータベースがサポートするPL機能は以下のとおりです:
データ型
制御文(Control Statements)
コレクション(collection)とレコード(record)。 多次元コレクションはサポートされていません。
静的SQL (Static SQL)
動的SQL (Dynamic SQL)
サブプログラム(Subprogram)
トリガー(Trigger)
エラー処理
パッケージ
パフォーマンス最適化とチューニング
ユーザー定義のデータ型:サブタイプ
PLシステムパッケージは、
DBMS_CRYPTO、DBMS_DEBUG、DBMS_LOB、DBMS_LOCK、DBMS_METADATA、DBMS_OUTPUT、DBMS_RANDOM、DBMS_SQL、DBMS_XA、UTL_I18N、UTL_RAWなどを含みます。Label Security PL/SQLパッケージは、
SA_SYSDBA、SA_COMPONENTS、SA_LABEL_ADMIN、SA_POLICY_ADMIN、SA_USER_ADMIN、SA_SESSIONなどを含みます。
OceanBaseデータベースは、NOCOPYパラメータの動作に関して、Oracleデータベースとの互換性にいくつかの違いがあります。
プリミティブなデータ型および純粋な「OUT」パラメータとして渡される複雑なデータ型は、Oracleデータベースにおける参照渡しの動作とは互換性がありません。
「IN OUT」パラメータとして渡される複雑なデータ型は、Oracleの参照渡し動作と互換性があります。
条件付きコンパイル
ビュー(view)
OceanBaseデータベースは、一部のOracleデータベースのビューと互換性があります。互換性のあるビューの詳細なリストは、ビューを参照してください。システムビューのフィールド説明の詳細は、ビューの一覧を参照してください。
文字セット(character set)
OceanBaseデータベースのOracleモードがサポートする文字セットは以下のとおりです。
- binary
- utf8mb4
- gbk
- utf16
- gb18030
- latin1
- gb18030_2022
- ascii
- tis620
- utf16le
- sjis
- hkscs
- hkscs31
- dec8
- gb2312
- ujis
- euckr
- eucjpms
- cp932
- cp850
- hp8
- macroman
- swe7
説明
OceanBaseデータベースV4.3.5バージョンは、V4.3.5 BP1バージョンから文字セットをサポートします:gb2312、ujis、euckr、eucjpms、cp932、cp850、hp8、macroman および swe7。
照合順序(collations)
OceanBaseデータベースのOracleモードでサポートされているソート規則は以下の表に示されています。
| 照合順序 | 所属文字セット | 説明 |
|---|---|---|
| utf8mb4_general_ci | utf8mb4 | 汎用的なソート規則を使用します。 |
| utf8mb4_bin | utf8mb4 | バイナリソート規則を使用します。 |
| utf8mb4_unicode_ci | utf8mb4 | Unicode照合アルゴリズム(UCA)に基づくソート規則を使用します。 |
| binary | binary | バイナリソート規則を使用します。 |
| gbk_chinese_ci | gbk | 中国語の言語ソート規則を使用します。 |
| gbk_bin | gbk | バイナリソート規則を使用します。 |
| utf16_general_ci | utf16 | 汎用的なソート規則を使用します。 |
| utf16_bin | utf16 | バイナリソート規則を使用します。 |
| utf16_unicode_ci | utf16 | Unicode 照合アルゴリズム(UCA)に基づくソート規則を使用します。 |
| gb18030_chinese_ci | gb18030 | 中国語の言語ソート規則を使用します。 |
| gb18030_bin | gb18030 | バイナリソート規則を使用します。 |
| latin1_swedish_ci | latin1 | スウェーデン語/フィンランド語のソート規則を使用します。 |
| latin1_german1_ci | latin1 | ドイツ語(German)の言語環境におけるlatin1文字セットのソート規則を使用します。 |
| latin1_danish_ci | latin1 | デンマーク語(Danish)の言語環境におけるlatin1文字セットのソート規則を使用します。 |
| latin1_german2_ci | latin1 | ドイツ語環境で使用され、辞書順での文字比較が必要なアプリケーションシナリオに適しています。 |
| latin1_general_ci | latin1 | 一部のヨーロッパ言語のデータベース設計など、大文字と小文字を区別せず、アクセント記号のサポートが必要なシナリオで使用します。 |
| latin1_general_cs | latin1 | 大文字と小文字を区別する汎用的なソート規則で使用し、複数の言語(西ヨーロッパ言語など)をサポートします。 |
| latin1_spanish_ci | latin1 | スペイン語(Spanish)の言語環境のソート規則を使用します。 |
| latin1_bin | latin1 | latin1バイナリソート規則を使用します。 |
| gb18030_2022_bin | gb18030_2022 | バイナリソート規則を使用します。Oracleモードにおける同文字セットのデフォルト照合順序。 |
| gb18030_2022_chinese_ci | gb18030_2022 | ピンインのソート規則を使用します。大文字と小文字を区別しません。 |
| gb18030_2022_chinese_cs | gb18030_2022 | ピンインのソート規則を使用します。大文字と小文字を区別します。 |
| gb18030_2022_radical_ci | gb18030_2022 | 部首と筆順のソート規則を使用します。大文字と小文字を区別しません。 |
| gb18030_2022_radical_cs | gb18030_2022 | 部首と筆順のソート規則を使用します。大文字と小文字を区別します。 |
| gb18030_2022_stroke_ci | gb18030_2022 | 筆順のソート規則を使用します。大文字と小文字を区別しません。 |
| gb18030_2022_stroke_cs | gb18030_2022 | 筆順のソート規則を使用します。大文字と小文字を区別します。 |
| ascii_bin | ascii | バイナリソート規則を使用します。 |
| ascii_general_ci | ascii | アルファベットに基づく大文字と小文字を区別しないソート規則を使用します。大文字と小文字の区別を無視し、大文字と小文字を同一文字として扱っていました。 |
| tis620_bin | tis620 | バイナリソート規則を使用します。 |
| tis620_thai_ci | tis620 | タイ語のソート規則を使用し、大文字と小文字を区別しません。 |
| gb2312_chinese_ci | gb2312 | GB2312文字セットを使用し、中国語のソート規則で大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| gb2312_bin | gb2312 | GB2312文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| ujis_japanese_ci | ujis | UJIS文字セットを使用し、日本語のソート規則で大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| ujis_bin | ujis | UJIS文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| euckr_korean_ci | euckr | EUCKR文字セットを使用し、韓国語のソート規則で大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| euckr_bin | euckr | EUCKR文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| eucjpms_japanese_ci | eucjpms | EUCJPMS文字セットを使用し、日本語のソート規則で大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| eucjpms_bin | eucjpms | EUCJPMS文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| cp932_japanese_ci | cp932 | CP932文字セットを使用し、日本語のソート規則で、大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| cp932_bin | cp932 | CP932文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| cp850_general_ci | cp850 | CP850文字セットを使用し、汎用的なソート規則で大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| cp850_bin | cp850 | CP850文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| hp8_english_ci | hp8 | HP8文字セットを使用し、英語のソート規則で大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| hp8_bin | hp8 | HP8文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| macroman_general_ci | macroman | MacRoman 文字セットを使用し、汎用的なソート規則で大文字と小文字を区別せずにソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| macroman_bin | macroman | MacRoman文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| swe7_swedish_ci | swe7 | SWE7文字セットを使用し、スウェーデン語のソート規則で大文字と小文字を区別せずにソートします。
説明OOceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
| swe7_bin | swe7 | SWE7文字セットを使用し、バイナリソート規則で大文字と小文字を区別してソートします。
説明OceanBaseデータベースV4.3.5では、V4.3.5BP1以降、この照合順序をサポートします。 |
データベースオブジェクトの管理
テーブル管理
テーブルの作成:テーブルの作成をサポートしており、作成時にはパーティション、制約などの情報を指定できます。テーブル作成に関する詳細な構文は、CREATE TABLEを参照してください。
ベーステーブル(base table)の変更:
ALTER TABLEステートメントを使用して、列の追加、削除、変更、制約の追加、削除、パーティションの追加、削除、変更をサポートします。テーブル変更に関する詳細な構文は、ALTER TABLEを参照してください。ベーステーブルの削除:テーブル自体の削除に加え、関連するすべての参照整合性制約(
CASCADE CONSTRAINTS)の削除もサポートします。テーブル削除に関する詳細な構文は、DROP TABLEを参照してください。
制約
CHECK、UNIQUEおよびNOT NULL制約PRIMARY KEY制約FOREIGN KEY制約ALTER TABLEステートメントを使用して、CHECK制約、PRIMARY KEY制約、FOREIGN KEY制約、NOT NULL制約の追加をサポートします。SET NULLカスケード動作をサポートしています。
パーティション化
パーティション化に加え、テンプレート指定・非指定のサブパーティション追加をサポートします。
ハッシュ(Hash)、レンジ(Range)、リスト(List)、およびコンポジット(composite)など、さまざまなパーティション化方法をサポートします。
ローカルインデックスとグローバルインデックスもサポートします。
パーティションのメンテナンス操作について:
パーティションテーブルでは、パーティションの追加、削除、TRUNCATEをサポートします。
テンプレートベースのコンポジット・パーティションテーブルでは、パーティションの追加および削除がサポートされます。一方、テンプレート非依存のコンポジット・パーティションテーブルでは、パーティションの追加、削除、TRUNCATE操作と、サブパーティションの追加、削除、TRUNCATE操作がサポートされます。
パーティションの詳細な説明および使用方法は、パーティションの概要を参照してください。
インデックス管理
B-Treeインデックス、関数ベースのインデックス、および空間インデックスのみをサポートします。
インデックスの作成と削除
ビュー管理
Simple ViewやComplex Viewの作成
ビューの削除
SELECTステートメントDMLステートメント
シーケンス(sequence)管理
シーケンスの作成
シーケンスのリセット機能を含むシーケンスの変更
シーケンスの削除
シノニム(synonym)
テーブル、ビュー、別のシノニム、シーケンスなどのオブジェクトのシノニムの作成
パブリック・シノニムの作成
トリガー管理
トリガーの作成
トリガーの変更
トリガーの削除
データベース接続
OceanBaseデータベース間での読み書き操作
OceanBaseデータベースとOracleデータベース間での読み書き操作
制約
UNIQUE制約のDISABLE操作はサポートしていません。
パーティション化
- テンプレートベースのコンポジット・パーティションテーブルでは、サブパーティションの追加と削除はサポートしていません。
インデックス管理
- ビットマップインデックス(bitmap index)や転置インデックス(inverted index)などのタイプはサポートしていません。
- UPDATE GLOBAL INDEXを使用してインデックスを再構築している間、インデックスは使用できません。
更新可能なビュー
WITH CHECK OPTION句はサポートしていません。
セキュリティ機能
OceanBase データベースは豊富なセキュリティ機能を実装しています。
権限管理
Oracleデータベースのほとんどのシステム権限と互換性があります。詳細については、Oracleモードでの権限分類を参照してください。
権限の付与や削除など、一般的なオブジェクト権限管理をサポートします。
アローリストポリシーをサポートし、ネットワークセキュリティアクセス制御を実現します。
システム事前定義ロールとユーザー定義ロールをサポートします。
身元認証
OceanBaseデータベースのOracleモードは、Oracleデータベースのパスワードポリシーと互換性があります。
ユーザーのロックとロック解除機能をサポートします。
透過的データ暗号化(TDE)
OracleデータベースのTDE機能と互換性があります。TDEは、ストレージへの書き込み前に自動的にデータを暗号化し、ストレージからのデータの読み取り時に自動的にデータを復号化します。
監査(AUDIT)
Oracleデータベースの標準監査をサポートします。
ステートメントとオブジェクト監査タイプをサポートします。
オブジェクト監査は現在、テーブル、シーケンス、関数、およびパッケージオブジェクトのみをサポートします。
監査結果は、ファイルまたは内部テーブルに保存できます。
監査に関連する各種システムビューをサポートします。
Label Security
Oracleデータベースのラベルセキュリティ(Label Security)機能と互換性があります。
「level」コンポーネントをサポートします。
SSL暗号化通信
クライアントとOceanBaseデータベースサーバー間のデータ通信の暗号化、およびOceanBaseデータベースのノード間のデータ通信の暗号化をサポートします。
SSL片方向認証やX509相互認証に加え、暗号化アルゴリズムの選択、証明書の発行者指定、SSLサブジェクトの指定など、特別な相互認証にも対応しています。
監査(AUDIT)
統合監査とファイングレイン監査(FGA)はサポートしていません。
権限監査とネットワーク監査はサポートしていません。
監査データの変更、上書き、削除はサポートしていません。
Label Security
- 「compartment」と「group」コンポーネントはサポートしていません。
バックアップ・リカバリ
OceanBaseデータベースはバックアップ・リカバリ機能も提供しています。OceanBaseデータベースの物理バックアップ・リカバリ機能については、バックアップ・リカバリの概要を参照してください。
NFS、Alibaba Cloud OSS、AWS S3、およびS3プロトコルと互換性のあるオブジェクトストレージ (例:Google GCS、Huawei OBS、Tencent Cloud COS)をバックアップメディアとしてサポートします。
期限切れバックアップの削除
テナント・レベルのバックアップとリカバリ
データベースおよびテーブル・レベルのリカバリ
指定されたパスのリカバリ
ログのアーカイブとバックアップデータの検証
クラスタ・レベルのバックアップとリカバリはサポートしていません。
テーブル・レベルのバックアップはサポートしていません。
ログアーカイブの圧縮はサポートしていません。
指定されたパスのバックアップはサポートしていません。
バックアップの手動削除はサポートしていません。
バックアップの多重化はサポートしていません。
SQLエンジン
OceanBaseデータベースのSQLエンジンは、Oracleデータベースのほとんどの機能と互換性があります。SQLエンジンの詳細は、SQLチューニングガイドを参照してください。
クエリー・リライト機能
プリペアドステートメント(prepared statement)
コストベースのオプティマイザー
実行計画の生成と表示 (
EXPLAIN)実行計画キャッシュ
パラメータ化による実行計画の取得
実行計画の関連付け
Optimizer Hints
適応カーソル共有(Adaptive Cursor Sharing, ACS)
SQL計画管理(SPM)
Optimizerのestimatorコンポーネントはサポートしていません。
実行計画の分離機能はサポートしていません。
式統計ストア(ESS)はサポートしていません。
近似クエリ処理はサポートしていません。