Database 23c

Oracle Database 23cは、新しいマイクロサービス、グラフ、ドキュメント、およびリレーショナル・アプリケーションの構築を目的とした開発者向けに、最も完全でシンプルなコンバージド・データベースを提供します。

オラクルは、Oracle Database 23cの新機能とサンプルをを毎週共有しています。これにより、お客様はすぐに本番稼働ができます。このページを保存し、毎週チェックして新しい機能を確認しましょう。

注目の機能

楽しい休暇を!

2023年を終えるにあたり、1年を通して紹介してきたOracle Database 23cの新機能をまとめます。最新のOracle Databaseリリースをまだ試す機会がなかった方、特に開発者の方は、こちらまたはoracle.com/database/freeで、さまざまなオプションをご確認ください。

ブロックチェーン表

ブロックチェーンと不変表は、Oracle Database 19cのリリース以降利用可能になったもので、暗号化セキュアな方法を使用して、外部のハッカーや不正または侵入を受けた内部関係者によるデータの改ざんや削除からデータを保護します。これには、(DBAであっても)更新や削除を防止する挿入のみの制限、検証を可能にする暗号化ハッシュ・チェーン、大規模なロールバックを検出するための署名付き表ダイジェスト、秘密キーを使用したエンド・ユーザーによる挿入行の署名などが含まれます。Oracle Database 23cでは、Oracle GoldenGateによる論理レプリケーションやActive Data Guardを使用したローリング・アップグレードのサポート、ブロックチェーン表を含む分散トランザクションのサポート、期限切れ行の効率的なパーティションベースの一括削除、挿入およびコミットのパフォーマンス最適化など、多くの機能強化が行われています。

このリリースでは、暗号ハッシュ連鎖に影響を与えることなく列を追加および削除する機能、フィルタリングされた行に対するユーザー固有の連鎖および表ダイジェスト、委任署名機能、データベース・カウンターサインも導入されています。また、ブロックチェーン履歴テーブルを使用するように定義されたFlashbackアーカイブを介して、非ブロックチェーン表に対する履歴変更の監査を可能にすることで、暗号化セキュアなデータ管理を通常の表への拡張も行います。

組み込みの監査証跡やジャーナリングのユース・ケースに最適なこれらの機能は、財務台帳、支払い履歴、規制遵守の追跡、法的ログ、および改ざんや削除が法的、評判、または財務上の重大な結果につながる可能性のある資産を表すあらゆるデータに使用できます。



ブール・データ型

Oracle Databaseでは、ISO SQL標準に準拠したブール・データ型がサポートされるようになりました。これにより、True 値と False 値を表に格納し、SQL文ででブール式を使用できるようになります。ブール・データ型は、YesおよびNo値の格納を標準化し、Oracle Databaseへの移行を容易にします。



データベース・ドライバの非同期プログラミングおよびパイプライン化

Oracle Database 23cでは、パイプライン化機能により、.NET、Java、C/C++アプリケーションは、サーバーからのレスポンスを待たずに複数のリクエストをデータベースに送信できます。Oracle Databaseは、これらのリクエストを1つずつキューに入れて処理し、クライアント・アプリケーションは、リクエストが完了するまで作業を続行できます。この拡張機能により、エンド・ユーザー・エクスペリエンスの向上、データドリブンのアプリケーション応答性の向上、エンドツーエンドのスケーラビリティ、パフォーマンスのボトルネックの回避、およびサーバー側とクライアント側での効率的なリソースの使用が実現します。

クライアント・リクエストがすぐに返されるように、Oracle Databaseパイプライン処理では、.NET、JavaおよびC/C++ドライバで非同期またはリアクティブAPIが必要です。これらのメカニズムは、データベース・パイプライン処理の有無にかかわらず、Oracle Databaseに対して使用できます。

Javaの場合、Oracle Database 23cには、Java Database Connectivity(JDBC)、Universal Connection Pool(UCP)およびOracle R2DBC Driverのリアクティブ拡張機能が用意されています。また、ドライバでのJava仮想スレッド(Project Loom)や、Reactor、RxJava、Akka Streams、Vert.xなどのReactive Streamsライブラリもサポートしています。



DB_DEVELOPER_ROLE

Oracle Database 23cには、新しいロールDB_DEVELOPER_ROLEが含まれています。このロールは、Oracle Databasesでのアプリケーションの設計、実装、デバッグおよびデプロイに必要なすべての権限をアプリケーション開発者に提供します。このロールを使用することで、管理者はアプリケーション開発に必要な権限を推測する必要がなくなります。





UPDATEおよびDELETE文の直接結合

Oracle Databaseでは、UPDATEおよびDELETE文でFROM句を使用して対象表を他の表に結合できるようになりました。こうした他の表は、変更される行を制限したり、新しい値のソースになることがあります。直接結合により、データの変更および削除を行うSQLの記述が容易になります。



Fast Ingestの機能拡張

Memoptimize Rowstore Fast Ingestに機能拡張が追加されて、パーティション化、圧縮された表、直接書込みを使用した高速フラッシュ、およびインメモリー列ストアの直接移入がサポートされるようになりました。これらの機能拡張により、高速収集が必要な状況で、Fast Ingest機能を簡単に組み込むことができます。その結果、Oracle Databaseで高速データ収集機能を必要とするアプリケーションのサポートが強化されました。データは、同じデータベースで収集して処理できます。これにより、特殊なロード環境が不要になるため、複雑さとデータの冗長性が軽減されます。



Grafanaの可観測性

オラクルは、Oracle Database向けの新しいObservability Exporterでクラウド・ネイティブとKubernetesのサポートを継続しています。Observability Exporterを使用すれば、業界標準のPrometheus形式でデータベースとアプリケーションのメトリックを簡単にエクスポートでき、Grafanaダッシュボードを簡単に作成してOracle Databasesとアプリケーションのパフォーマンスを監視できます。



GROUP BYでの列の別名

GROUP BY、GROUP BY CUBE、GROUP BY ROLLUPおよびGROUP BY GROUPING SETS句で、列の別名を使用したり、SELECTで項目の位置を使用できるようになりました。また、HAVING句でも列の別名がサポートされています。これらの新しいDatabase 23cの機能拡張により、GROUP BY句とHAVING句の記述が簡単になり、SQL問い合わせがより読みやすくなってメンテナンス性が向上し、SQLコードの移植性が向上します。



IF [NOT] EXISTS

Oracle DatabaseのDDLオブジェクトの作成、変更、および削除は、現在、IF EXISTSおよびIF NOT EXISTS構文修飾子をサポートしています。これにより、指定したオブジェクトが存在する場合、または存在しない場合にエラーを発生させるかどうかを制御できるようになり、スクリプトやアプリケーションでのエラー処理が簡素化されます。



INTERVALデータ型の集計

Oracle Database 23cでは、開発者はINTERVAL値で合計および平均を簡単に計算できます。この機能拡張により、INTERVALデータ型をSUMやAVG集計関数および分析関数に渡すことができるようになりました。



JavaScriptストアドプロシージャ(GraalVM使用)

多言語エンジン(MLE)モジュール・コールを使用すると、開発者は、モジュールに格納されているJavaScript関数をSQLおよびPL/SQLから呼び出すことができます。PL/SQLで記述されたコール仕様によって、JavaScriptがPL/SQLコード・ユニットにリンクされます。この機能により、開発者は、PL/SQLファンクションがコールされる場所であればどこでもJavaScriptファンクションを使用できます。



JSONバイナリ・データ型

JSONデータ型は、OSONと呼ばれるOracleで最適化されたバイナリJSON形式です。この形式は、リリース21c以降のデータベースとデータベース・クライアントで、問い合わせとDMLのパフォーマンスを高速化するように設計されています。



JSON Relational Duality(JSONとリレーショナルの二面性)ビュー

Oracle Database 23cで導入されたイノベーションであるJSON Relational Duality(JSONとリレーショナルの二面性)は、リレーショナル・モデルとドキュメント・データ・モデルを統合して、両方の長所を提供します。開発者は、リレーショナルとJSONパラダイムのどちらからでも、信頼できる唯一の情報源(SSOT)にアクセスしてアプリケーションを簡単に構築でき、両方のモデルの長所を生かすことができます。データは一つのみ保管され、どちらのアプローチでもアクセス、書き込み、変更が可能です。開発者はACID準拠のトランザクションと同時実行性制御を利用できるため、複雑なオブジェクト・リレーショナル・マッピングやデータ不整合の問題との間でトレードオフを行う必要がなくなります。



JSONスキーマ

Oracle Databaseは、JSONでのスキーマ・フレキシブルなデータの格納と処理をサポートしています。Oracle Database 23cでは、Oracle DatabaseでJSONデータの構造と値を検証するJSONスキーマがサポートされるようになりました。SQL演算子IS JSONがJSONスキーマを受け入れるように拡張され、JSONを検証し、表、ビュー、型などのデータベース・オブジェクトをJSONスキーマ・ドキュメントとして記述するためのさまざまなPL/SQLファンクションが追加されました。

デフォルトでは、JSONデータはスキーマレスであり、柔軟性が提供されます。ただし、業界標準のJSONスキーマ検証により、JSONデータに特定の構造と型を指定することもできます。

JSONスキーマへの貢献
オラクルは、JSONドキュメントに注釈を付けて検証できるJSONベースの宣言言語を標準化するオープン・ソースの取り組みであるJSONスキーマに積極的に貢献しています。現在、JSONスキーマはRFC(Request for Comments)です。



Kafka API

Oracle Database 23cは、Apache KafkaアプリケーションとOracle Databaseとのより高度な互換性を提供します。この新機能により、Kafka JavaアプリケーションからTransactional Event Queues(TxEventQ)への移行が簡単になります。Kafka Java APIは、Oracle Databaseサーバーに接続し、メッセージング・プラットフォームとしてTxEventQを使用できるようになりました。

開発者は、JDBC Thinドライバを使用して、Kafkaを使用する既存のJavaアプリケーションをOracle Databaseに簡単に移行できます。また、Oracle Database 23cのクライアント側ライブラリ機能により、Kafkaアプリケーションは、KafkaクラスタではなくOracle Databaseに接続し、TxEventQのメッセージング・プラットフォームを透過的に使用できます。



ロックフリー列値の予約

ロックフリー予約は、更新の多い行の更新をブロックされることなく、同時トランザクションの進行を可能にします。ロックフリー予約は、行をロックする代わりに行に保持されます。これは、更新が成功するかを検証し、トランザクションのコミット時まで更新を延期します。ロックフリー予約は、ユーザー・エクスペリエンスとトランザクションの同時実行性を向上させます。



MongoDB互換API

Oracle Database API for MongoDBを使用することで、開発者は、Oracleのマルチモデル機能および自動運転データベースにアクセスしながら、MongoDBのツールおよびドライバをOracle Databaseに接続して引き続き使用できます。お客様は、Oracle Cloud Infrastructure(OCI)上でMongoDBワークロードを実行できます。多くの場合、接続文字列を変更する以外に既存のMongoDBアプリケーションにはほとんど(またはまったく)変更を加える必要はありません。

Oracle Database API for MongoDBは、標準のOracle REST Data Servicesに含まれています。Oracle Autonomous Databaseの一部として事前構成され、完全に管理されています。



オペレーショナル・プロパティ・グラフ

Oracle Databaseは、プロパティ・グラフ・データ構造とグラフ・クエリに対するネイティブなサポートを提供しています。トランザクション・データ、JSON、Spatial、その他のデータ・タイプと組み合わせてグラフを作成する柔軟性をお求めの場合は、オラクルにお任せください。開発者は現在、既存のSQL開発ツールやフレームワークを使用して、SQLでグラフ・アプリケーションを簡単に構築することができます。



集計タイプに対するPL/SQL JSONコンストラクタのサポート

PL/SQL JSONコンストラクタは、対応するPL/SQL集計タイプのインスタンスを受け入れ、集計型データが移入されたJSONオブジェクトまたは配列型を返すように拡張されました。

PL/SQL JSON_VALUE演算子も拡張され、RETURNING句では、演算子が返すインスタンスの型を定義する型名を受け入れることができます。JSONコンストラクタによる集計データ型のサポートにより、PL/SQLアプリケーションとJSONをサポートする言語間のデータ交換が合理化されます。



RETURNING INTO句

INSERT、UPDATEおよびDELETE文のRETURNING INTO句は、それぞれの文の影響を受ける古い値と新しい値を報告するように拡張されています。これにより、開発者はこれらのDMLタイプそれぞれに同じロジックを使用して、文の実行前後の値を取得できます。UPDATE文では古い値と新しい値の両方が有効です。INSERT文では古い値は報告されず、DELETE文では新しい値は報告されません。

SQLコマンドの実行の一部として、INSERT、UPDATEおよびDELETE文の影響を受ける古い値と新しい値を取得する機能により、開発者はこれらの値を読み取るために統一されたアプローチを使用でき、データベースで実行する必要がある作業量を減らすことができます。



スキーマ権限

Oracle Databaseでは、既存のオブジェクト権限、システム権限および管理権限に加えてスキーマ権限もサポートされるようになりました。この機能により、データベース・オブジェクトの認可を簡素化して、最小権限の原則をより適切に実装し、誰が何にアクセスできるかを推測する必要がないようにすることで、セキュリティを向上させます。



FROM句なしのSELECT

FROM句を指定せずに、SELECT式のみの問合せを実行できるようになりました。この新機能により、SQLコードの移植性と使いやすさが向上します。



SQLマクロ

SQLマクロを作成して、一般的なSQL式および文を、他のSQL文で使用できるパラメータ化された再利用可能な構成に分解します。SQLマクロは、通常SELECTリストやWHERE句、GROUP BY句、HAVING句で使用されるスカラー式にすることができます。SQLマクロは、計算およびビジネス・ロジックをカプセル化するために使用することも、通常はFROM句で使用される表式にすることもできます。PL/SQL構成と比較して、SQLマクロはパフォーマンスを向上させることができます。SQLマクロは、開発者の生産性を高め、共同開発を簡素化し、コード品質を向上させます。



SQL分析レポート

今週は、開発者が優れたSQL文を記述するのに役立つ、使いやすいSQL分析レポート機能に注目します。SQL分析レポートでは、SQL文の一般的な問題、特にSQLのパフォーマンスが低下する可能性のある問題が報告されます。この機能はDBMS_XPLANおよびSQL Monitorで使用できます。



SQLファイアウォール

SQLファイアウォールを使用すれば、異常を検出し、SQLインジェクション攻撃を防ぐことができます。SQLファイアウォールでは、IPアドレスやOSユーザーなどのセッション・コンテキスト情報を含め、すべてのSQLが調査されます。SQLファイアウォールはデータベース・カーネルに組み込まれており、認可されていないSQLがログに記録され、ブロックされる(有効になっている場合)ため。バイパスできません。SQLおよび承認済セッション・コンテキストの許可リストを適用することで、SQLファイアウォールで多数のゼロデイ攻撃を防止し、資格証明の盗難や不正使用のリスクを軽減できます。



表値コンストラクタ

Oracle Database SQLエンジンが、さまざまな文でVALUES句をサポートするようになりました。これにより、既存の表に依存することなく、新しい構文を使用してデータ行を即座に実体化できます。Oracle Database 23cでは、SELECT文、INSERT文およびMERGE文でVALUES句がサポートされています。新しいVALUES句が導入されたことで、開発者がアドホックSQLコマンド用に記述するコードが少なくなり、少ない労力で読みやすくなりました。



使用アノテーション

アノテーションにより、データベース・オブジェクトに関するメタデータの保存および取得が可能になります。これは、アプリケーションがビジネス・ロジックやユーザー・インターフェースをカスタマイズするために使用できる自由形式のテキスト・フィールドです。アノテーションは名前と値のペア、または単に名前です。すべてのアプリケーションにわたり、同じ方法でデータベース・オブジェクトを使用し、開発を簡素化し、データ品質を向上させる上で役立ちます。



使用用途ドメイン

使用用途ドメイン(SQLドメインまたはアプリケーション使用用途ドメインとも呼ばれる)は、軽量タイプの修飾子として機能し、アプリケーションが意図するデータ使用用途を一元的に文書化する高レベルのディクショナリ・オブジェクトです。使用用途ドメインを使用すれば、データの使用用途を定義して操作を標準化することで、アプリケーション・レベルのメタデータを必要とせずに、一連のチェック制約、表示プロパティ、ソート・ルール、その他の使用プロパティをカプセル化できます。

表内の1つ以上の列に使用用途ドメインを使用しても、基礎となるデータ型は変更されないため、アプリケーションを破壊したり移植性の問題を生じることなく、既存のデータに追加できます。