すべてのプロダクト
Search
ドキュメントセンター

PolarDB:PolarDB for PostgreSQL(Oracle 互換)2.0 と PolarDB for PostgreSQL(Oracle 互換)1.0 の違い

最終更新日:Jul 15, 2025

PolarDB for PostgreSQL(Oracle 互換) 2.0 は、バージョン 1.0 と比較して、まったく新しい互換性アーキテクチャを備えており、Oracle 構文互換性を開発ベースラインとしています。バージョン 2.0 は、高同時実行性、高書き込み負荷、パラレルクエリ、および分散負荷条件下での論理レプリケーションにおいて、バージョン 1.0 よりも大幅なパフォーマンス向上を実現しています。このトピックでは、2 つのバージョンの具体的な違いについて詳しく説明します。現在リリースされている PolarDB for PostgreSQL(Oracle 互換) 2.0 バージョン(20250630)を参照してください。一部の機能は、後続のバージョンで順次サポートされる予定です。

大幅なパフォーマンスの向上

読み取り専用シナリオ(select-only)と読み書きシナリオ(tpcb-like)のパフォーマンステストは、polar.o.x8.xlarge クラスタ仕様で pgbench を使用して実施されました。テスト結果は次のとおりです。

シナリオ

PolarDB for PostgreSQL(Oracle 互換)1.0

PolarDB for PostgreSQL(Oracle 互換)2.0

パフォーマンスの向上

読み取り専用シナリオ(select-only)

109141.30

120803.95

10.69%

読み書きシナリオ(tpcb-like)

49226.71

64752.41

31.54%

PolarDB for PostgreSQL(Oracle 互換) 2.0 は、バージョン 1.0 と比較して大幅なパフォーマンスの向上を示しており、特に tpcb-like 読み書きシナリオでは 30% 以上向上しています。さらに、多数の接続があるシナリオでは、PolarDB for PostgreSQL(Oracle 互換) 2.0 はトランザクションのスループットを大幅に向上させており、テストシナリオでは最大 100% の向上を実現しています。

パフォーマンスをさらに向上させるために、バージョン 2.0 では多数のパラレルクエリ機能が追加されています。たとえば、PL/pgSQL 関数の RETURN QUERY は、結果を返す際に並列計算をサポートするようになり、REFRESH MATERIALIZED VIEW コマンドもパラレルクエリを使用できるようになりました。さらに、チャンクの並列シーケンシャルスキャンがサポートされ、大規模データスキャンの I/O スループットが向上し、ブロックデバイスの I/O スループット制限に近づきました。

インデックスの強化

PolarDB for PostgreSQL(Oracle 互換) 2.0 は、B-tree インデックス(標準データベースインデックス)の重複データの処理を効果的に最適化し、B-tree インデックスの全体的なスペース使用量を削減すると同時に、全体的なクエリパフォーマンスを向上させました。具体的には、重複排除テクノロジーのインデックス圧縮ポリシーを導入して、B-tree インデックスの重複データを自動的に重複排除および圧縮し、インデックスが占有するスペースを削減します。同時に、バージョン 2.0 は、頻繁なインデックス更新によって発生するテーブルの肥大化の問題など、B-tree インデックスのリソース消費の問題にも対処しています。

さらに、このバージョンでは、構築プロセス中にデータを事前にソートする GiST インデックスを提供し、GiST および SP-GiST インデックスの作成速度を大幅に向上させ、インデックスサイズを削減します。

パーティションテーブルの改善

PolarDB for PostgreSQL(Oracle 互換) 2.0 はパーティションシステムを改善し、パーティションテーブルをクエリする際のパフォーマンスが向上しました。より柔軟なパーティションプルーニングとインテリジェントな JOIN 操作を使用できるようになりました。さらに、このバージョンではトリガーのサポートが強化され、論理レプリケーションのサポートが追加されたため、データレプリケーションと同期がより効率的かつ信頼性の高いものになっています。

さらに、バージョン 2.0 はパーティションプルーニング機能を最適化し、子パーティションの SubPlan と重複するキャッシュプランを削減することで、クエリの実行速度を向上させました。同時に、パーティションを追加または削除する際に、alter table detach|attach PARTITION concurrently モードを使用することでロックの競合を回避し、データベースの可用性と安定性を向上させます。

並列 VACUUM(ガベージコレクション)

PolarDB for PostgreSQL(Oracle 互換) 2.0 では、VACUUM メカニズムはデータベース管理において非常に重要です。これは、使用されなくなったテーブルスペースを解放して、一般的なテーブルの肥大化の問題を軽減できるためです。ガベージコレクションの効率とパフォーマンスをさらに最適化するために、バージョン 2.0 では並列インデックスリカバリメカニズムが導入されています。さらに、ニーズに合わせて並列ワーカーの数を指定できます。

これらの最適化により、PolarDB for PostgreSQL(Oracle 互換) 2.0 のデータベース管理は、効率、信頼性、安定性が向上し、データの管理と保守が容易になります。

クエリの最適化

  • 増分ソートが導入されました。これにより、クエリの初期ステップでソートされたデータを使用して、後続ステップのソートを高速化できます。この最適化により、クエリのパフォーマンスと効率が大幅に向上します。

  • PostgreSQL の効率的なハッシュ集約機能を活用できる、より多くの種類の集約クエリとグルーピングセットクエリが追加されました。これは、大規模な集約を含むクエリをメモリに完全にロードする必要がないことを意味し、メモリ使用量と I/O オーバーヘッドを大幅に削減します。

  • linear search TO hash table probe がサポートされ、IN 文の処理パフォーマンスが大幅に向上します。特に、複数の条件を持つ SQL や大量のデータのフィルタリングが必要な SQL では、パフォーマンスの向上が顕著になります。

LZ4 圧縮アルゴリズムのサポートとセキュリティ機能の強化

PolarDB for PostgreSQL(Oracle 互換) 2.0 では、データ列圧縮に LZ4 アルゴリズムを選択して圧縮パフォーマンスを向上させるためのサポートなど、いくつかの新機能が導入されています。また、元の pglz 圧縮方式も引き続きサポートされています。さらに、事前定義されたロール pg_read_all_datapg_write_all_data を使用して、テーブル/ビュー/シーケンスオブジェクトに対する読み取り専用または書き込み専用の権限を一度に付与できるため、より柔軟なデータ管理オプションが提供されます。

バージョン 2.0 は、クラウドベースの権限管理にオブジェクト権限の粒度を採用しており、データのセキュリティと信頼性を確保します。この最適化により、機密データが保護され、データリークやセキュリティ侵害を防ぎます。

コア機能

データ型の互換性

Oracle 標準データ型を包括的にサポート

  • PolarDB for PostgreSQL(Oracle 互換) 2.0 は、64 ビット Date 型ストレージのサポートを拡張し、Oracle の Date 型ストレージと年、月、日、時、分、秒レベルでの表示に完全に互換性があります。

  • charvarchar2nvarchar2nvarcharbinary_integernumberrowrowid などの Oracle 標準型をサポートし、nls_date_formatnls_timestamp_format を提供して時間型の出力形式を制御します。

  • 数値計算の場合、INT2INT4INT8 型の除算結果はすべて浮動小数点数になり、数値計算における Oracle の動作との互換性が向上します。

JSON および XML 型のサポート強化

  • JSON_ELEMENT_TJSON_OBJECT_TJSON_ARRAY_T 型をサポートし、JSON データ処理の柔軟性とより複雑な JSON 操作シナリオを強化します。

  • XMLELEMENTXMLAGGXmlType 型を返すことをサポートし、XML データの生成と操作を容易にします。

  • XmlTypeextract 関数と getStringVal 関数をサポートし、XML データ処理機能を拡張します。

  • ROW 型の NULL/NOT NULL 制約検証、ODCI 型の拡張、および複合型とデフォルト値を持つ record 型間の変換をサポートします。

関数と演算子の互換性

豊富な Oracle 互換関数ライブラリ

  • decodegroup_id 演算子、集約関数での ORDER BY 演算子、組み込みバイナリ演算子間のスペース、minus 集合演算子、括弧のない a.b 形式の関数呼び出し、空の文字列を NULL として扱うなど、Oracle 固有の機能をサポートします。

  • to_dateadd_month、その他の組み込み時間型関数を含む時間関数をサポートします。

  • instrlpadrpad、その他の組み込み文字列関数を含む文字列関数をサポートします。

  • rawtohexhextorawvsize、その他のバイナリ関連関数を含むバイナリ関数をサポートします。

  • regexp_countregex_instrregex_substrregex_like、その他の正規関数を含む正規関数をサポートします。

継続的に強化される関数互換性

  • JSON_OBJECT 関数と JSON_ARRAYAGG 関数を追加して、JSON データ処理を最適化します。

  • XMLELEMENTXMLAGG.function を使用して呼び出すことをサポートし、XML 複合操作の柔軟性を高めます。

  • 日付型と間隔型のデータを処理するための組み込み関数 CONVERT(date,name,name)NVL(interval, interval) をサポートします。

  • TO_DATE/TO_CHAR 関数の syyyy 形式処理をアップグレードして、日付処理の精度を確保します。

  • 関数 OUT パラメータのネストされた暗黙の型変換をサポートし、XMLSEQUENCE 関数の XML データ処理機能を拡張します。

  • セッション環境情報を管理するための USERENV 関数をサポートします。

SQL 構文の互換性

包括的なクエリ構文の互換性

  • 異なるレベルのサブクエリで同じエイリアスを使用すること、大文字と小文字を区別しないテーブル名と列名、およびキーワードエイリアスとの完全な互換性をサポートします。

  • INSERT/SELECT 構文構造でエイリアスを使用すること、ターゲット列のデフォルトの DISTINCT 句と ORDER BY 句をサポートすること、および ORDER BY 句で COUNT(*) 集約関数を使用することをサポートします。

  • INSERT/UPDATE の後に namespace.table.col のような構文を使用すること、(+) テーブル結合演算子をサポートします。

  • UPDATE/DELETE 構文を WHERE とともに MERGE 句で並列に使用することをサポートします。

疑似列と強化された DML 構文

  • クエリ結果に行番号をマークするための ROWNUM 構文と、引用符を使用した ROWNUM の呼び出しをサポートします。

  • グローバルに一意なシーケンスをサポートします。

  • サブクエリに対する SELECT/DELETE/UPDATE の使用をサポートします。

  • SELECT FOR UPDATE WAIT 構文と SELECT FOR UPDATE ORDER BY 構文をサポートします。

  • ビューでの MERGE INFO 構文の使用をサポートします。

  • 基本的な HINT 構文をサポートします。

  • 階層クエリを実行する際に、行の親子関係を決定するための CONNECT BY 句をサポートします。

  • ビューとテーブルで EDITIONABLE キーワードを使用することをサポートします。

  • UNION 型と他の型間の TEXT 操作をサポートします。

DDL 構文の互換性

テーブルとオブジェクト管理構文

  • ALTER SESSION ENABLE 構文を使用してセッションの動作を制御することをサポートしています。

  • テーブルの作成時およびいくつかの特別なキーワードで、生成列構文をサポートしています。

  • MONITORING キーワードを使用してテーブルの使用状況を追跡することをサポートしています。

  • ALTER TYPE ADD(ATTRIBUTE) 構文をサポートし、オブジェクトタイプの管理における柔軟性を高めます。

  • REFRESH COMPLETE 構文を使用してマテリアライズドビューデータを更新することをサポートしています。

  • ビューの制約を適用するために WITH CHECK OPTION をサポートしています。

  • マテリアライズドビューの循環依存関係の手動作成をサポートします。

  • DROP FORCE を使用して、シノニムを強制的に削除できます。

セキュリティと権限管理

  • CREATE PROFILE 機能をサポートし、パスワードの再利用回数、時間、およびパスワード検証機能を提供することで、データベース セキュリティを大幅に向上させます。

  • CREATE TABLE CACHE 構文をサポートし、データ バッファリング戦略を最適化します。

  • システム トリガーは、ALTER TRIGGER ENABLE/DISABLE 構文をサポートします。

  • PUBLIC SCHEMA で PUBLIC シノニムの作成をサポートし、PACKAGE および TYPE BODY のシノニムをサポートします。

  • MODIFY COLUMN 構文をサポートします。

  • DROP AGGREGATE を使用した集約関数の削除をサポートします。

パーティションテーブル機能

完全なパーティションテーブルのサポート

  • Oracle 形式のパーティションテーブルをサポートします。これには、第 1 レベルと第 2 レベルのパーティションの作成、および LISTRANGEHASH の 3 つのパーティションタイプが含まれます。

  • CREATECOALESCEDROPEXCHANGEMERGEMODIFYMOVERENAMESPLITTRUNCATE などの一般的なパーティション管理操作をサポートします。

  • パーティションテーブルの子テンプレートパーティション、インターバルパーティションの自動作成、および Oracle と互換性のある A PARTITION(B) パーティション呼び出し構文をサポートします。

高度なパーティション機能

  • パーティションテーブルインデックスの自動追加をサポートします。グローバルインデックスを作成する必要がある場合、GLOBAL を明示的に使用せずに呼び出すことをサポートし、パーティションテーブルトリガーで REFERENCING OLD 構文を使用できます。

  • パーティションテーブルで Interval パーティションを使用すること、および Global Index でそれらを使用することをサポートします。

  • パーティションテーブルで MAXVALUE パーティションを DEFAULT パーティションに変換して、パーティションキーの null 値を受け入れることができます。

  • パーティションテーブルの作成に関する安定性の問題と、パーティションテーブルビュークエリの不具合を修正しました。

トランザクション処理機能

CSN トランザクションスナップショットメカニズム

PolarDB for PostgreSQL(Oracle 互換)2.0 は、MVCC パフォーマンスを向上させるために、新しいトランザクションスナップショットメカニズムである CSN トランザクションスナップショットメカニズムを導入しています。 xid トランザクション番号リストをトランザクションスナップショットとして使用するネイティブ PostgreSQL とは異なり、CSN スナップショットは単調増加する 64 ビット整数値を使用します。これにより、トランザクションスナップショットの生成が高速化されるだけでなく、MVCC での行の可視性判定のパフォーマンスも向上します。

自律型トランザクションと文レベルのロールバック

  • ストアドプロシージャと匿名ブロックで自律型トランザクションを使用することをサポートしており、トランザクションのコミットステータスを親トランザクションから独立させます。

  • 文レベルのトランザクションロールバックをサポートしています。 自動コミットが無効になっている場合、文レベルのエラーは現在のサブトランザクションのみをロールバックし、メイントランザクションの実行状態は保持されます。

これらの機能は、複雑なビジネスシナリオに対して、より柔軟なトランザクション制御メカニズムを提供します。

トリガー機能

  • DDL システムトリガーをサポートしており、DDL 操作関連のトリガーの処理を容易にします。

  • ALTER TRIGGER ENABLE/DISABLE をサポートしてシステムトリガーを管理し、トリガー動作の制御を容易にします。

  • スキーマ/データベース レベルで DDL システムトリガーをサポートしており、対応するレベルでの DDL 操作の処理を容易にします。

  • トリガーサブ関数用に updating('col') 構文をサポートしており、複雑なトリガーロジックの処理を容易にします。

PL/SQL プログラミングのサポート

基本的な構文の互換性

  • $$ 記号なしで PL/SQL 呼び出しをサポートします。

  • 関数/ストアドプロシージャは、参照渡しパラメーター値に INOUTINOUT パラメーターをサポートします。

  • 匿名ブロックは、変数バインディングと 2 フェーズ実行をサポートします。

  • constant 変数の互換性をサポートします。

  • 暗黙的に宣言された record 型ループ変数をサポートします。

  • ストアドプロシージャで :NEW/:OLD 構文をサポートします。

  • トリガーで戻り値なしを使用することをサポートします。

  • カスタム Exception 変数をサポートします。

PL/SQL の高度な機能

  • PROGRAM_ERROR 例外構文をサポートします。

  • サブ関数 recfield フィールドの存在チェックをサポートします。

  • FOR row IN ループ文をサポートします。

  • record 配列を関数パラメーターとして使用することをサポートします。

  • SQL レイヤー予約キーワードを関数名として使用することをサポートします。

  • PL レイヤーで collect および reverse をストアドプロシージャ名として使用することをサポートします。

  • goto loop 構文をサポートします。

  • PL ブロック内のサブクエリでパッケージ変数を使用することをサポートします。

  • func.var を使用して関数で宣言された変数を呼び出すことをサポートします。

サブ関数の機能

  • 外部変数をデフォルト パラメーター値として使用したサブ関数をサポートし、変数受け渡しロジックを簡素化します。

  • :new/:old を使用したトリガー サブ関数をサポートし、トリガー サブ関数の互換性を強化します。

  • サブ関数で外部変数を使用するコレクション型の要素をサポートします。

  • パッケージ内の非公開関数を使用するパッケージ サブ関数をサポートし、パッケージ リソースの統合スケジューリングを保証します。

  • サブ関数でパッケージ変数を使用することをサポートします。

  • デフォルトの照合順序で実行されるサブ関数をサポートします。

  • クロージャで外部変数を使用できます。

  • サブ関数下での変数の呼び出しをサポートします。

カーソルの機能

  • カーソル パラメーターのデフォルト値を指定するために => を使用することをサポートしています。

  • パラメーターのないカーソルの場合、open cursor() 構文をサポートしており、カーソルの初期化ロジックを簡素化します。

  • カーソルの定義時にデフォルトのパラメーター値を指定することをサポートしています。

  • 関数パラメーターの型を指定するために cursor%rowtype を使用することをサポートしています。

  • ROLLBACK 後に永続カーソルを使用することをサポートしており、データクエリ継続性を拡張します。

  • デフォルトの非スクロール可能なカーソルをサポートしており、メモリ使用量を削減し、実行パフォーマンスを最適化します。

  • パッケージ内の他の関数を使用するパッケージ関数でのカーソルをサポートしています。

  • カーソル サブクエリでのパッケージ変数の使用をサポートしています。

  • 明示的なカーソルの再オープンをサポートしています。

パッケージ機能

  • カスタムパッケージ機能の作成と削除をサポートします。

  • 連想配列、ネストテーブル、可変長配列などの一般的なコレクションタイプをサポートします。

  • コレクションタイプの基本的な初期化、呼び出し、および割り当て操作をサポートします。

  • パッケージ内の 1 次元 SUBTYPE をサポートし、パッケージのデータモデルサポートを拡張します。

  • パッケージ recordconstraint をサポートし、データの整合性を確保します。

  • 大文字と小文字を区別しないパッケージアクセスをサポートします。

  • 後続で定義された型に依存するパッケージ関数をサポートします。

  • デフォルト値を無視するパッケージ関数ストアドプロシージャをサポートします。

  • パッケージ変数を使用してパッケージ関数パラメータ型を指定することをサポートします。

  • ストアドプロシージャ変数およびサブ関数パラメータのデフォルト値としてパッケージ変数をサポートします。

コレクション型のサポート

  • 連想配列をパラメーターおよび戻り値として使用することをサポートし、複雑なデータ構造の処理を容易にします。

  • 可変長データ等価宣言をサポートし、コレクション型スペース管理ロジックを簡素化します。

  • コレクション型の有効値を削除できます。

  • 組み込みパッケージの組み込み連想配列をサポートします。

  • 3 次元連想配列をサポートし、コレクション型機能を拡張します。

  • 連想配列要素を 2 次元のレコードとしてサポートし、複合型の式を強化し、レコードとのネストをサポートします。

  • fetch bulk into から coll(idx).recfield コレクション型へのサポートにより、DML 実行効率を最適化します。

  • DML 文で高次元コレクション型を使用することをサポートします。

  • コレクション型関数パラメーターのデフォルト値をサポートします。

  • 連想配列コンストラクターをサポートします。

  • コレクション型の変換操作と集合演算をサポートします。

組み込みパッケージエコシステム

PolarDB for PostgreSQL(Oracle 互換) 2.0 は、エンタープライズ アプリケーションのさまざまな側面を網羅する、Oracle 互換の豊富な組み込みパッケージセットを提供します。

  • DBMS_AQ: メッセージキューのエンキューおよびデキュー操作のための関数を提供します。

  • DBMS_AQADM: メッセージキューの構成および管理関数を提供します。

  • DBMS_ALERT: アラートの登録、送信、および受信のための一連のストアドプロシージャを提供します。

  • DBMS_APPLICATION_INFO: パフォーマンス追跡とデバッグのためにデータベースで実行されているモジュールまたはトランザクションの名前を記録します。

  • DBMS_CRYPTO: 格納データの暗号化および復号機能を提供し、AES、DES、ハッシュ、およびメッセージダイジェスト関数をサポートします。

  • DBMS_DDL: DDL 関連の操作を容易にします。

  • DBMS_JOB: スケジュールされたタスクを作成および管理するために使用され、ユーザーはスケジュールされた時間にデータベースで実行されるスケジュールされたタスクを送信できます。

  • DBMS_LOB: BLOB および CLOB を含む、ラージオブジェクトへのアクセスおよび操作メソッドを提供します。

  • DBMS_LOCK: 現在のセッションを一定期間一時停止するための組み込み SLEEP 関数を提供します。

  • DBMS_METADATA: データベースオブジェクトのメタデータ情報を取得するためのメソッドを提供し、データベース内のオブジェクトの再構築に使用されます。

  • DBMS_MVIEW: 依存オブジェクトを含まない REFRESH をサポートします。

  • DBMS_OUTPUT: ストアドプロシージャ、パッケージ、またはトリガーからメッセージを送信できます。

  • DBMS_XMLGEN: XML データ変換を処理するための convert 関数を提供します。

  • DBMS_XMLPARSER: XML ドキュメントの解析メソッドを提供し、ドキュメントオブジェクトの生成に使用できます。

  • DBMS_PIPE: 同じインスタンス内の異なるセッション間のパイプ通信をサポートします。

  • DBMS_RANDOM: 一連のランダム関数とストアドプロシージャを提供します。

  • DBMS_REDACT: 権限の低いユーザーまたはアプリケーションによるクエリのデータマスキング機能を提供し、データベースデータのセキュリティを保護します。

  • DBMS_RLS: 仮想プライベートデータベース(VPD)が特定の PolarDB データベースオブジェクトで実行できるようにします。

  • DBMS_SESSION: PL/SQL からセッション、ユーザー、およびその他の情報にアクセスするためのインターフェイスを提供します。

  • DBMS_SPACE: 空間管理関連の操作を容易にします。

  • DBMS_SQL: 動的 SQL を使用した DML および DDL 文の実行、PL/SQL 匿名ブロックの実行、および PL/SQL ストアドプロシージャと関数の呼び出しのためのインターフェイスを提供します。

  • DBMS_TRANSACTION: トランザクション関連の操作に使用されます。

  • DBMS_UTILITY: さまざまなユーティリティサブルーチン、パッケージ依存関係の取得を提供します。

  • DBMS_XMLDOM: XML ドキュメントの DOM アクセスインターフェイスを提供し、さまざまな DOM オブジェクトの定義と生成をサポートします。

  • UTL_ENCODE: データのエンコードとデコードのための一連の関数を提供し、異なるホスト間のデータ転送を容易にします。

  • UTL_I18N: ESCAPE_REFERENCE 関数と UNESCAPE_REFERENCE 関数で構成されるサービスを提供し、PL/SQL で記述されたアプリケーションに追加のグローバリゼーション機能を提供します。

  • UTL_MATCH: 文字列パターンマッチング機能を強化し、テキスト操作プロセスを簡素化します。

  • UTL_HTTP: Web 相互作用機能を拡張します。

  • UTL_RAW: RAW タイプのデータを操作するための関数を提供します。

  • UTL_TCP: TCP 通信機能を強化し、ネットワーク転送シナリオを拡張します。

  • UTL_URL: URL 内の無効な文字と予約文字を変換するためのメソッドを提供します。

システムビューの互換性

  • ALL_PART_KEY_COLUMNSUSER_PART_KEY_COLUMNSDBA_PART_KEY_COLUMNSDBA_ROLE_PRIVSUSER_ROLE_PRIVS などの Oracle 共通ビューをサポートします。

  • 列コメント情報の表示と管理のための DBA_COL_COMMENTS ビューをサポートします。

  • nls パラメータービューをサポートし、国際化パラメーターのサポートを拡張し、多言語構成管理を強化します。

  • すべてのパラメーターを含む DBA_TAB_COLUMNS ビューをサポートし、より包括的なテーブル列情報を提供します。

  • SESSION_ROLE 組み込みビューをサポートし、セッションロール管理機能を拡張します。

  • USER_TAB_PARTITIONS ビューの HIGH_VALUE フィールドをサポートし、パーティションテーブルの高い値の管理を最適化します。

  • DBA_OBJECTS ビューの CREATED フィールドをサポートし、オブジェクトの作成時刻を表示します。

その他の高度な機能

DBLink 異種接続

DBLink 機能をサポートしており、PostgreSQL データベースおよび Oracle データベースへの接続を可能にします。この機能は、クロスデータベースアクセス機能を提供し、データ統合および移行シナリオを容易にします。

文字エンコーディングのサポート

サーバー側の GBK および GB18030 エンコーディングをサポートしており、クライアント GBK 環境での追加のエンコーディング変換コストを削減します。この機能は、特に中国語環境でのアプリケーションシナリオに適しており、システムのローカライズサポート機能を強化します。

構文の互換性の違い

PolarDB for PostgreSQL(Oracle 互換) 2.0 とバージョン 1.0 との間には、次の違いがあります。

タイプ

説明

データ型

ABSTIME 型はサポートされていません。

DDL 構文

  • DROP USER の後に CASCADE 構文を使用することはサポートされていません。

  • GRANT EXEMPT ACCESS POLICY TO USERNAME 構文はサポートされていません。

  • SHOW ROLE 構文はサポートされていません。

  • CREATE INDEX の後に NOLOGGING 構文を使用することはサポートされていません。

ビューとパーティションテーブル

  • Oracle 互換ビュー定義の一部には、SCHEMA_NAME 列がありません。

  • パーティションテーブルでは、親テーブルにはデフォルトで少なくとも 1 つのパーティションがあります。

  • DEFAULT 以外のパーティションへの NULL 値の挿入はサポートされていません。

  • HASH パーティションに対する ATTACH 操作は許可されていません。

  • LIST タイプのパーティションテーブルでは、デフォルトパーティションが含まれる場合、ADD パーティション操作は許可されません。

関数、ストアドプロシージャ、およびトリガー

  • 同じ名前の関数とストアドプロシージャはサポートされていません。また、パラメーターを持つ関数とストアドプロシージャをサブクエリとして使用することはサポートされていません。

  • REGEXP_REPLACE 関数の 4 番目の入力パラメーターが 'n' であることはサポートされていません。

  • 入力パラメーターが 2 つだけの DECODE 関数はサポートされていません。文字パラメーターに COLLATE 修飾子を使用することはサポートされていません。

  • 最初のパラメーターとして二重引用符を持つ関数 GET_RAW_PAGE はサポートされていません。

  • ROWNUM を関数パラメーターとして使用することはサポートされていません。

  • ストアドプロシージャに ANYELEMENT 型の入力が無い場合、出力に ANYELEMENT 型を含めることはできません。

  • SQL 関数では、パラメーターにデフォルト値がある場合、後続のパラメーターにもデフォルト値が必要です。

  • トリガー名は 54 文字の長さでなければなりません。

トランザクション

自律型トランザクションで書き込み操作が発生した場合、トランザクションを明示的にコミットまたはロールバックする必要があります。そうでない場合、トランザクションは失敗します。

SQL クエリ

  • 次の最適化手法はサポートされていません:CHOOSE/FIRST_ROWS/FIRST_ROWS_10/FIRST_ROWS_100/FIRST_ROWS_1000

  • サブクエリでシノニムを使用して、親クエリ内のオブジェクトを呼び出すことはできません。

  • INSERT ALL INTO xxxSELECT xxx の間に VALUES xxx がない構文はサポートされていません。

  • DUAL テーブルの DUMMY 列と数値型を比較することはサポートされていません。

  • '!!a' を使用して a の階乗を表すことはサポートされていません。

  • 非不変関数では他の関数を呼び出すことはできません。

  • COLLATION を作成するときに ICU_SHOR_FORM'AN_CX_EX_LROOT_NO_S3' に設定することはサポートされていません。

  • BIT 型を使用して BOOL 型にデフォルト値を割り当てることはサポートされていません。

  • 列を使用して他の列にデフォルト値を割り当てることはできません。

パッケージ

  • SQL 文でパッケージ変数を使用することはできません。

  • DBMS_SQL パッケージで DBMS_SQL.TO_REFCURSOR および DBMS_SQL.TO_CURSOR_NUMBER を使用することはサポートされていません。

  • DBMS_SQL パッケージで SELECT INTO 文を使用することはサポートされていません。SELECT 以外の文に DEFINE_COLUMN を使用することはサポートされていません。DBMS_SQL.NATIVE 定数を使用して値を割り当てることはサポートされていません。

  • DBM_UTILITY パッケージで純粋な数値をテーブル名として使用することはサポートされていません。GET_HASH_VALUE の入力パラメーターとして NULL を使用することはサポートされていません。

  • DBMS_CRYPTO パッケージの RANDOMBYTES の入力パラメーターとして 0 を使用することはサポートされていません。

  • UTLRAW パッケージの SUBSTR 関数で、開始位置を RAW の全長を超える値に設定することはサポートされていません。

  • DBMS_PIPE パッケージの SEND_MESSAGE 関数の TIMEOUT パラメーターに負の数値を使用することはサポートされていません。

  • DBMS_RLS ポリシー関数が NULL を返すことはサポートされていません。

  • DBMS_LOB パッケージの INSTR 関数で、入力パラメーターとして負の数値を使用することはサポートされていません。

PL/SQL およびコレクション型

  • 例外条件以外で SQLCODE および SQLERRM を呼び出すことはサポートされていません。

  • 動的 SQL 文を厳密に型指定されたカーソルにバインドすることはできません。

  • パラメーターを持つ動的 SQL 文で DDL 操作を実行することはできません。

  • 連想配列のインデックスタイプとして STRING 型または LONG 型を使用することはサポートされていません。

  • セット型に対して NULL 以外のプロパティをグローバルに宣言することはできません。