1 Oracle Databaseの概要

この章では、Oracle Databaseの概要について説明します。

この章のトピックは、次のとおりです:

リレーショナル・データベースについて

すべての組織には、その要件を満たすために格納および管理する必要のある情報があります。たとえば、会社では従業員の人事管理レコードを収集し、管理する必要があります。この情報は、必要とする人が使用できるようにする必要があります。

情報システムとは、情報を格納および処理するための形式が定められたシステムです。情報システムは、フォルダを収納した一連の段ボール箱とフォルダの格納および取出し方法に関するルールとすることもできます。ただし、今日のほとんどの企業はデータベースを使用して情報システムを自動化しています。データベースとは、1つの単位として取り扱われる編成されたデータの集合です。データベースは、データベース・アプリケーションで使用するための関連情報の収集、格納、および取出しを目的としています。

データベース管理システム(DBMS)

データベース管理システム(DBMS)とは、データの格納、編成および取得を制御するソフトウェアです。

通常、DBMSの要素は次のとおりです。

  • カーネル・コード

    このコードでは、DBMS用のメモリーと記憶域を管理します。

  • メタデータのリポジトリ

    このリポジトリは、通常、データ・ディクショナリと呼ばれます。

  • 問合せ言語

    この言語を使用してデータにアクセスできます。

データベース・アプリケーションとは、データにアクセスして操作するためにデータベースと対話するソフトウェア・プログラムです。

第一世代のデータベース管理システムには次のタイプがありました。

  • 階層

    階層データベースは、データをツリー構造に編成したものです。ファイル・システムの構造と同様に、各親レコードが1つ以上の子レコードを持ちます。

  • ネットワーク

    ネットワーク・データベースは、レコードが1対多の関係ではなく多対多の関係を持つ点を除いて、階層データベースと同じです。

第一世代のデータベース管理システムでは、事前に定義された厳密な関係に基づいてデータが格納されていました。データ定義言語がなかったため、データ構造の変更は困難でした。また、これらのシステムには簡単な問合せ言語がなく、このことがアプリケーション開発の妨げになっていました。

リレーショナル・モデル

独創性に富んだ1970年の論文「A Relational Model of Data for Large Shared Data Banks」において、E. F. Codd氏は、数学的な集合理論に基づいてリレーショナル・モデルを定義しました。今日、最も普及しているデータベース・モデルはリレーショナル・モデルです。

リレーショナル・データベースとは、リレーショナル・モデルに準拠したデータベースです。リレーショナル・モデルには次の特徴があります。

  • 構造

    詳細に定義されたオブジェクトによって、データベースのデータの格納またはアクセスが行われます。

  • 操作

    明確に定義されたアクションによって、アプリケーションはデータベースのデータおよび構造を操作できます。

  • 整合性規則

    整合性規則は、データベースのデータおよび構造に対する操作を制御します。

リレーショナル・データベースでは、データは一連の単純なリレーションに格納されます。リレーションは一連のタプルです。タプルは、順不同の一連の属性値です。

は、行(タプル)と列(属性)の形式でのリレーションの2次元表現です。表の各行は同じ一連の列を持ちます。リレーショナル・データベースは、データをリレーション(表)に格納するデータベースです。たとえば、リレーショナル・データベースで会社の従業員に関する情報を従業員表、部門表、および給与表に格納できます。

リレーショナル・データベース管理システム(RDBMS)

リレーショナル・モデルは、リレーショナル・データベース管理システム(RDBMS)の基礎です。RDBMSではデータをデータベース内に移動して格納し、それを取り出してアプリケーションで操作できるようにします。

RDBMSでは、次のように操作のタイプが区別されます。

  • 論理演算

    この場合、アプリケーションは、必要な内容を指定します。たとえば、従業員の名前を要求したり、従業員レコードを表に追加します。

  • 物理演算

    この場合、RDBMSは、どのように実行すべきかを判断して演算を実行します。たとえば、アプリケーションが表に問合せを実行すると、データベースの索引を使用して要求した行が検索され、データがメモリーに読み込まれ、その他多くのステップが実行されてからユーザーに結果が戻されます。RDBMSがデータの格納と取得を行うため、物理演算はデータベース・アプリケーションに対して透過的です。

Oracle DatabaseはRDBMSです。ユーザー定義型、継承、ポリモフィズムなどのオブジェクト指向機能を実装したRDBMSは、オブジェクト・リレーショナル・データベース管理システム(ORDBMS)と呼ばれます。Oracle Databaseはリレーショナル・モデルを拡張したオブジェクト・リレーショナル・モデルであり、複雑なビジネス・モデルをリレーショナル・データベースに格納できます。

Oracle Databaseの歴史の概要

現行バージョンのOracle Databaseは、40年以上にわたる革新的な開発の成果です。

Oracle Databaseの発展における重要事項は次のとおりです。

  • オラクル社の設立

    1977年、Larry Ellison、Bob Miner、およびEd Oatesはソフトウェア開発研究所でコンサルタント業を始め、Relational Software, Inc.(RSI)となりました。1983年、RSIはOracle Systems Corporationとなり、その後Oracle Corporationになりました。

  • 最初の市販RDBMS

    1979年にRSIは、SQLベースの最初の市販RDBMSとしてOracle V2(バージョン2)を発表しました。これはリレーショナル・データベースの歴史において画期的な出来事でした。

  • 移植性の高いOracle Databaseのバージョン

    1983年にリリースされたOracleバージョン3は、メインフレーム、ミニコンピュータ、パーソナル・コンピュータ上で動作する最初のリレーショナル・データベースでした。このデータベースはCで記述されており、複数のプラットフォームにデータベースを移植することが可能になりました。

  • 同時実行性制御、データ配分、およびスケーラビリティの拡張

    バージョン4では、マルチバージョンの読取り一貫性が導入されました。1985年にリリースされたバージョン5では、クライアント/サーバー・コンピューティングおよび分散データベース・システムがサポートされました。バージョン6では、ディスクI/O、行ロック、スケーラビリティ、バックアップおよびリカバリに対する拡張が行われました。また、バージョン6では、SQLを手続き型に拡張した独自のPL/SQL言語の最初のバージョンが導入されました。

  • PL/SQLストアド・プログラム・ユニット

    1992年にリリースされたOracle7では、PL/SQLストアド・プロシージャおよびトリガーが導入されました。

  • オブジェクトとパーティション化

    Oracle8は、オブジェクト・リレーショナル・データベースとして1997年にリリースされ、多数の新しいデータ型をサポートしています。さらに、Oracle8で大規模な表のパーティション化がサポートされました。

  • インターネット・コンピューティング

    1999年にリリースされたOracle8i Databaseには、インターネット・プロトコルのネイティブ・サポートおよびサーバー側でのJavaサポートが備えられていました。Oracle8iはインターネット・コンピューティング用に設計され、複数層環境へのデータベースのデプロイが可能になりました。

  • Oracle Real Application Clusters(Oracle RAC)

    2001年のOracle9i Databaseでは、Oracle RACが導入され、複数のインスタンスによる単一データベースへの同時アクセスが可能になりました。さらに、Oracle XML Database(Oracle XML DB)ではXMLの格納および問合せの機能が導入されました。

  • グリッド・コンピューティング

    2003年のOracle Database 10gでは、グリッド・コンピューティングが導入されました。このリリースでは、組織は低コストの商用サーバーに基づくグリッド・インフラストラクチャを構築することにより、コンピューティング資源を仮想化できるようになりました。これは、データベースの自己管理および自己チューニングを実現することを目標としていました。Oracle Automatic Storage Management(Oracle ASM)では、データベース・ストレージ管理を仮想化および簡素化することによって、この目標の実現を支援しました。

  • 管理性、診断性、および可用性

    2007年にリリースされたOracle Database 11gでは、管理者および開発者が変化するビジネス要件に迅速に適応できるようにする多数の新機能が導入されました。適応のキーは、情報を統合し、できるかぎり自動化を採用することで、情報インフラストラクチャを簡素化することです。

  • Cloudへの接続

    2013年にリリースされたOracle Database 12cは、Cloud用に設計され、新しいマルチテナント・アーキテクチャ、インメモリー列ストア(IM列ストア)、およびJSONドキュメントのサポートを備えています。Oracle Database 12cは、コストの削減およびエンド・ユーザーのサービス・レベルの向上を継続して、DBAがITリソースを効率的に使用するのに役立ちます。

  • 統合およびメモリー・パフォーマンス

    Oracle Database 18cではMicrosoft Active Directoryなどのディレクトリ・サービスとの統合が簡略化されました。また、列データ・モデルのためのメモリー活用および行の高速アクセスのための機能も導入されました。

  • 高度な安定性

    Oracle Database 19cはOracle Database 12c (リリース12.2)製品ファミリの長期サポート・バージョンでした。このリリースの主なフォーカスは安定性でした。Oracle Database 19cでは、JSONやActive Data Guardなどの機能に、規模が小さいながらも重要な改善を加えています。

  • 開発者のエクスペリエンスの向上

    Oracle Database 21cでは、Oracle Blockchain TableやネイティブJSONデータ型などの機能を使用して開発者のエクスペリエンスを向上させています。自動インメモリーの機能拡張により、IM列ストアの大部分を自己管理できます。

スキーマ・オブジェクト

RDBMSの特性の1つは、物理データ記憶域が論理データ構造から独立していることです。

Oracle Databaseにおいて、データベース・スキーマとは、論理データ構造またはスキーマ・オブジェクトの集合です。データベース・スキーマはデータベース・ユーザーによって所有され、そのユーザー名と同じ名前になります。

スキーマ・オブジェクトは、ユーザーが作成する構造であり、データベース内のデータを直接参照します。データベースは多くのタイプのスキーマ・オブジェクトをサポートしますが、最も重要なのは表と索引です。

スキーマ・オブジェクトは、データベース・オブジェクトの1種です。プロファイルやロールなど、一部のデータベース・オブジェクトは、スキーマに常駐しません。

表は従業員などのエンティティを表します。

表は、employeesなどの表名と、列の集合で定義されます。通常は、表を作成するとき、各に名前、データ型、および幅を指定します。

表は行の集合です。列は、表として記述されるエンティティの属性を識別し、は、エンティティのインスタンスを識別します。たとえば、従業員というエンティティの属性は、従業員IDや姓の列に対応します。行は特定の従業員を識別します。

オプションで、列に対して整合性制約と呼ばれる規則を指定できます。一例としてNOT NULLの整合性制約があります。この制約では、列のすべての行に値が含まれている必要があります。

関連トピック

索引

索引は、表の1つ以上の列に対して作成可能なオプションのデータ構造です。索引によってデータ検索のパフォーマンスが向上する場合があります。

1つの要求を処理するとき、データベースでは、要求された行を効率よく見つけるために使用可能な索引を使用します。索引は、アプリケーションが特定の行または行範囲を頻繁に問い合せる場合に便利です。

索引は、データから論理的にも物理的にも独立しています。したがって、索引を削除または作成しても、表または他の索引に影響はありません。索引を削除しても、すべてのアプリケーションは機能し続けます。

関連トピック

データ・アクセス

DBMSの一般的な要件は、業界で受け入れられているデータ・アクセス言語の標準に準拠することです。

ノート:

JavaScriptを使用するにはLinux x86-64で実行されているOracle 23cが必要です。

Structured Query Language(SQL)

SQLは、Oracle DatabaseなどのRDBMSとのインタフェースを提供する集合ベースの宣言型言語です。

Cなどの手続き型言語では、処理の実行方法を記述します。SQLは非手続き型であり、処理の実行内容を記述します。

SQLはリレーショナル・データベース用のANSI標準言語です。Oracle Database内のデータの操作はすべて、SQL文を使用して実行されます。たとえば、SQLを使用して表を作成し、表内のデータを問い合せ、変更します。

SQL文は非常に簡単な文ですが、強力なコンピュータ・プログラム、または命令と考えることができます。ユーザーは、求める結果(たとえば、従業員の名前)を指定し、その結果をどのようにして導出するかは指定しません。SQL文は、次のようなSQLテキストの文字列です。

SELECT first_name, last_name FROM employees;

SQL文を使用して次のタスクを実行できます。

  • データの問合せ

  • 表内の行の挿入、更新および削除

  • オブジェクトの作成、置換、変更および削除

  • データベースおよびそのオブジェクトへのアクセスの制御

  • データベースの整合性と一貫性の保証

SQLでは、前述のタスクを1つの一貫した言語に統合します。Oracle SQLは、ANSI標準の実装の1つです。Oracle SQLでは、標準SQLを拡張した数多くの機能がサポートされています。

関連トピック

PL/SQL、JavaおよびJavaScript

PL/SQLは、Oracle SQLに対する手続きを拡張します。JavaおよびJavaScriptは、ビジネス・ロジックをデータベースに格納するために使用できる追加オプションです。

PL/SQLはOracle Databaseに統合されており、Oracle DatabaseのすべてのSQL文、関数、およびデータ型を使用できます。PL/SQLを使用すると、SQLプログラムのフローの制御、変数の使用、およびエラー処理プロシージャの作成を行うことができます。

PL/SQLの主な利点は、アプリケーション・ロジックをデータベースそのものに格納できることです。PL/SQLプロシージャまたはファンクションは、一連のSQL文と他のPL/SQL構文で構成され、グループとしてまとめてデータベースに格納されるスキーマ・オブジェクトであり、特定の問題を解決したり、一連の関連タスクを実行するために1つの単位として実行されます。サーバー側プログラミングの主な利点は、組込み機能を任意の場所にデプロイできることです。

Oracle Databaseは、JavaおよびJavaScriptで作成されたプログラム単位も格納できます。Javaストアド・プロシージャは、SQLにパブリッシュされ、一般的な用途向けにデータベースに格納されるJavaメソッドです。既存のPL/SQLプログラムをJavaおよびJavaScriptからコールしたり、JavaおよびJavaScriptプログラムをPL/SQLからコールできます。

マルチリンガル・エンジン(MLE)では、ビジネス・ロジックをJavaScriptに記述し、そのコードをMLEモジュールとしてデータベースに格納できます。MLEモジュールによってエクスポートされるファンクションは、コール仕様を使用してSQLおよびPL/SQLに公開できます。これらのコール仕様はPL/SQLユニット(ファンクション、プロシージャおよびパッケージ)であり、PL/SQLがコールされる任意の場所でコールできます。

トランザクションの管理

Oracle Databaseはマルチユーザー・データベースとして設計されています。データベースは、複数のユーザーが互いのデータを破損することなく同時に作業できることを保証する必要があります。

トランザクション

トランザクションは、1つ以上のSQL文を含むアトミックな論理作業単位です。

RDBMSは、SQL文をグループ化して、すべての文がコミットされた(つまりデータベースに適用された)状態にするか、すべての文がロールバックされた(つまり取り消された)状態にできる必要があります。

トランザクションが必要な例として、普通預金口座から当座預金口座への振替があります。振替は独立した次の操作で構成されます。

  1. 普通預金口座の減額

  2. 当座預金口座の増額

  3. トランザクション・ジャーナルへのトランザクションの記録

Oracle Databaseは、3つの操作すべてが1つの単位として成功したこと、または失敗したことを保証します。たとえば、ハードウェア障害によってトランザクション内の文の1つを実行できなかった場合は、その他の文をロールバックする必要があります。

トランザクションは、Oracle Databaseとファイル・システムとの明らかな違いを示す1つの機能です。複数のファイルを更新する不可分な操作を実行する場合、その途中でシステム障害が発生すると、ファイル間の整合性が失われます。対照的に、トランザクションは、Oracle Databaseを矛盾のない1つの状態から矛盾のない別の状態に移行します。トランザクションの基本的な原則は、100かゼロかであり、不可分の操作はその全体が成功するかその全体が失敗します。

関連トピック

データ同時実行性

マルチユーザーRDBMSの要件の1つに、データ同時実行性(同じデータに複数のユーザーが同時にアクセスすること)の制御があります。

同時実行性が制御されていない場合、ユーザーがデータを不適切に変更し、データ整合性が損われることがあります。たとえば、あるユーザーが行を更新する一方で、別のユーザーがその行を同時に更新することがあります。

複数のユーザーが同じデータにアクセスした場合、同時実行性を管理する1つの方法は、ユーザーを待機させることです。ただし、DBMSの目標は待機時間をゼロまたはごくわずかまで減らすことです。データを変更するすべてのSQL文は、できるだけ干渉されない状態で処理する必要があります。破壊的な相互作用とは、不正確なデータの更新または基礎となるデータ構造の不正な変更を引き起こす相互作用であり、これを回避する必要があります。

Oracle Databaseは、ロックを使用してデータへの同時アクセスを制御します。ロックは、共有リソースにアクセスする複数のトランザクション間で、破壊的な相互作用が起きないようにするメカニズムです。ロックは、データ整合性を保証する場合に役立つ一方、データへの最大の同時アクセスを可能にします。

データ整合性

Oracle Databaseでは、各ユーザーに対して、ユーザー自身のトランザクションによる変更および他のユーザーのトランザクションのコミットによる変更を反映した、整合性のあるデータのビューが表示される必要があります。

たとえば、データベースは、あるトランザクションが別の同時トランザクションによるコミットされていない変更に遭遇した場合に発生する内容を保証しない読取りの問題を防止する必要があります。

Oracle Databaseでは、文レベルの読取り一貫性を適用することにより、ある特定の時点で1つの問合せによって戻されたデータがコミット済であり、一貫していることを保証しています。トランザクション分離レベルに応じて、この時点は文またはトランザクションが開始されたときになります。この時点は、Oracle Flashback Query機能で明示的に指定できます。

データベースは、トランザクションのすべての問合せに対して、トランザクション・レベルの読取り一貫性と呼ばれる読取り一貫性を実現することもできます。この場合、トランザクション内の各文には同じ時点(トランザクション開始時)のデータが表示されます。

Oracle Databaseアーキテクチャ

データベース・サーバーは、情報管理のキーとなります。

一般的にサーバーでは、多数のユーザーが同時に同じデータへアクセスできるように、マルチユーザー環境において大量のデータが確実に管理されます。権限のないアクセスに対して保護機能を備えながら、障害のリカバリについても効率のよい解決方法を提供します。

データベースおよびインスタンス

Oracleデータベース・サーバーは、1つのデータベースと1つ以上のデータベース・インスタンス(通常は単にインスタンスと呼ばれる)で構成されます。

インスタンスとデータベースは非常に密接に関連しているため、Oracle databaseという用語が、インスタンスとデータベースの両方を示す場合があります。これらの用語の厳密な意味は次のとおりです。

  • データベース

    データベースは、ディスク上に配置された、ユーザー・データを格納する一連のファイルです。これらのデータ・ファイルはデータベース・インスタンスとは別に存在できます。Oracle Database 21cから、データベースとは、具体的にはマルチテナント・コンテナ・データベース(CDB)プラガブル・データベース(PDB)またはアプリケーション・コンテナのデータ・ファイルを指すようになりました。

  • データベース・インスタンス

    インスタンスは、データベース・ファイルを管理する一連の名前付きメモリー構造です。データベース・インスタンスは、システム・グローバル領域(SGA)と呼ばれる共有メモリー領域と、一連のバックグラウンド・プロセスで構成されます。インスタンスはデータベース・ファイルとは別に存在できます。

マルチテナント・アーキテクチャ

マルチテナント・アーキテクチャを使用すると、Oracle DatabaseをCDBにすることができます。

すべてのOracleデータベースは、別のデータベースを格納しているか、別のデータベースに格納可能です。たとえば、CDBにはPDBが含まれており、アプリケーション・コンテナにはアプリケーションPDBが含まれています。PDBはCDBまたはアプリケーション・コンテナに含まれており、アプリケーション・コンテナはCDBに含まれています。

Oracle Database 21cから、マルチテナント・コンテナ・データベースがサポート対象の唯一のアーキテクチャになりました。前のリリースでは、Oracleは非コンテナ・データベース(非CDB)をサポートしていました。

CDB

CDBには、ユーザーが作成した1つ以上のPDBおよびアプリケーション・コンテナが含まれています。

物理レベルでは、CDBは制御ファイル、オンラインREDOログ・ファイルおよびデータ・ファイルの一連のファイルです。データベース・インスタンスは、CDBを構成するファイルを管理します。

次の図に、CDBおよび関連するデータベース・インスタンスを示します。

図1-1 データベース・インスタンスとCDB

図1-1の説明が続きます
「図1-1 データベース・インスタンスとCDB」の説明
PDB

PDBは、アプリケーションに別のデータベースとして表示されるスキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトのポータブル・コレクションです。

物理レベルでは、各PDBに、そのPDBのデータを格納する独自のデータ・ファイルのセットがあります。CDBには、そこに含まれるPDBのすべてのデータ・ファイルと、CDB自体のメタデータを格納する一連のシステム・データ・ファイルが含まれます。

PDBを移動またはアーカイブするには、切断できます。切断されたPDBは、PDBデータ・ファイルおよびメタデータ・ファイルで構成されます。切断されたPDBは、CDBに接続されるまで使用できません。

次の図に、MYCDBという名前のCDBを示します。

物理的に、MYCDBは、インスタンスに関連付けられている一連のデータ・ファイルを意味するOracleデータベースです。MYCDBには、1つのデータベース・インスタンス(ただし、Oracle Real Application Clustersでは複数のインスタンスが可能)と、1つのデータベース・ファイル・セットがあります。

MYCDBには2つのPDB、hrpdbsalespdbが含まれます。図1-2に示すように、これらのPDBは、それぞれのアプリケーションで別個の独立したデータベースとして表示されます。アプリケーションは、CDBとPDBのどちらに接続しているのかを認識しません。

CDB自体またはその中のPDBを管理するために、CDBルートに接続できます。ルートは、スキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトの集合で、すべてのPDBとアプリケーション・コンテナはこれに属します。

アプリケーション・コンテナ

アプリケーション・コンテナはオプションでCDB内にユーザーが作成したコンテナであり、1つ以上のアプリケーションのデータおよびメタデータが格納されます。

このような状況では、アプリケーション(マスター・アプリケーション定義とも呼ばれる)は、アプリケーション・ルートに格納される共通データおよびメタデータの名前付けおよびバージョニングされたセットです。たとえば、アプリケーションには一連のPDBに共通の表、ビュー、ユーザー・アカウント、PL/SQLパッケージの定義を含めることができます。

アプリケーション・コンテナはある意味で、CDB内のアプリケーション固有CDBとして機能します。アプリケーション・コンテナにはCDB自身のように複数のアプリケーションPDBが含まれ、これらのPDBはメタデータおよびデータを共有できます。物理レベルでは、アプリケーション・コンテナには、PDBと同様に独自のデータ・ファイルのセットがあります。

たとえば、SaaSデプロイメントでは、個々が別の顧客用で、アプリケーションのメタデータおよびデータを共有する複数のアプリケーションPDBを使用できます。たとえば次の図では、sales_appはアプリケーション・ルート内のアプリケーション・モデルです。cust1_pdbというアプリケーションPDBには顧客1用の販売データのみが含まれる一方、cust2_pdbというアプリケーションPDBには顧客2用の販売データのみが含まれます。接続、切断、クローニングおよびその他のPDBレベルの操作を、個々の顧客PDBで使用できます。

図1-3 SaaSのユースケース

図1-3の説明が続きます
「図1-3 SaaSのユースケース」の説明
シャーディング・アーキテクチャ

Oracle Shardingは、複数のPDB間におけるデータの水平パーティション化に基づくデータベース・スケーリング技術です。アプリケーションは、PDBのプールを単一の論理データベースとして認識します。

OLTPアプリケーションのシャーディングの主な利点には、垂直スケーラビリティ、障害の封じ込め、および地理的データ分散などが挙げられます。シャーディングは、Oracle Cloudでのデプロイメントに適しています。シャーディングを実装するNoSQLデータ・ストアとは異なり、Oracle ShardingはエンタープライズRDBMSの機能を犠牲にすることなく、シャーディングの利点を提供します。

シャーディング・アーキテクチャでは、各CDBは、独自のローカル・リソース(CPU、メモリー、フラッシュまたはディスク)を持つ専用サーバーでホストされます。PDBはシャードとして指定できます。異なるCDBからのPDBシャードが一体的に単一の論理データベースを形成し、これはシャード・データベースと呼ばれます。同じCDB内の2つのシャードは、同じシャード・データベースのメンバーにはできません。ただし、同じCDB内で、1つのPDBが1つのシャード・データベース内に存在し、別のPDBが別のシャード・データベースに存在することはできます。

水平パーティション化にはシャード間のデータベース表の分割が伴い、これによって各シャードには、列は同じですが行は異なるサブセットを持つ表が含まれます。この方法で分割された表はシャード表とも呼ばれています。次の図は、3つのシャード間で水平パーティション化されたシャード表を示しており、各シャードはそれぞれ別のCDB内にあるPDBです。

図1-4 シャード間への表の水平パーティション化

図1-4の説明が続きます
「図1-4 シャード間の表の水平パーティション化」の説明

ユースケースの1つは、複数のCDBへの顧客アカウント・データの分散です。たとえば、IDが28459361の顧客が自身のレコードを検索するとします。次の図に、考えられるアーキテクチャを示します。顧客のリクエストは、接続プールを介してルーティングされます。接続プールでは、シャード・ディレクタ(ネットワーク・リスナー)がリクエストをすべての顧客の行が含まれている適切なPDBシャードに送信します。

図1-5 Oracle Shardingのアーキテクチャ

図1-5の説明が続きます
「図1-5 Oracle Shardingのアーキテクチャ」の説明

データベース記憶域構造

データベースは、物理的な観点と論理的な観点の両方から検討できます。

物理データとは、オペレーティング・システム・レベルで表示可能なデータです。たとえば、Linuxのlspsなどのオペレーティング・システム・ユーティリティは、データベース・ファイルおよびプロセスをリスト表示できます。表などの論理データは、データベースに対してのみ意味を持ちます。Oracle Database内の表はSQL文でリスト表示できますが、オペレーティング・システム・ユーティリティでは表示できません。

データベースには物理構造と論理構造があります。物理構造と論理構造は分離されているため、論理記憶構造へのアクセスに影響を与えずに、データの物理記憶域を管理できます。たとえば、物理データベース・ファイルの名前を変更しても、このファイルにデータが格納されている表の名前は変更されません。

物理記憶域構造

物理データベース構造とは、データを格納するファイルです。

CREATE DATABASEコマンドを実行してCDBを作成します。次のファイルが作成されます。

  • データ・ファイル

    すべてのCDBには、すべてのデータベース・データを含む1つ以上の物理データ・ファイルがあります。表や索引などの論理データベース構造のデータは、データファイルに物理的に格納されます。

  • 制御ファイル

    すべてのCDBには、制御ファイルがあります。制御ファイルには、データベース名やデータベース・ファイルの名前と位置など、データベースの物理構造を指定したメタデータが含まれています。

  • オンラインREDOログ・ファイル

    すべてのCDBには、2つ以上のオンラインREDOログ・ファイルのセットからなるオンラインREDOログがあります。オンラインREDOログは、データに加えられた変更をすべて記録するREDOエントリ(REDOログ・レコードとも呼ばれる)で構成されています。

CDB内でCREATE PLUGGABLE DATABASEコマンドを実行してPDBを作成します。PDBには、CDB内の専用のデータ・ファイル・セットが含まれています。PDBには、それぞれ専用の制御ファイルとオンラインREDOログはありません。これらのファイルはPDBで共有されます。

CDBが機能するために重要なその他多くのファイルがあります。これらには、パラメータ・ファイルやネットワーキング・ファイルが含まれます。バックアップ・ファイルとアーカイブREDOログ・ファイルは、バックアップおよびリカバリに重要なオフライン・ファイルです。

関連トピック

関連項目:

物理記憶域構造

論理記憶域構造

論理記憶域構造によって、Oracle Databaseのディスク領域の使用をきめ細かく制御できます。

このトピックでは、論理記憶域構造について説明します。

  • データ・ブロック

    最少レベルとして、Oracleデータベースのデータはデータ・ブロックに格納されます。1つのデータ・ブロックは、ディスク上の特定のバイト数に対応します。

  • エクステント

    エクステントは、1回の割当てで取得される特定数の論理的に連続したデータ・ブロックで、特定タイプの情報の格納に使用されます。

  • セグメント

    セグメントは、ユーザー・オブジェクト(表や索引)、UNDOデータ、または一時データに割り当てられるエクステントの集合です。

  • 表領域

    データベースは、表領域と呼ばれる論理記憶域の単位に分割されます。表領域はセグメントの論理コンテナです。各表領域は1つ以上のデータ・ファイルで構成されます。

関連トピック

データベース・インスタンス構造

Oracleデータベースは、メモリー構造とプロセスを使用してCDBの管理やアクセスを行います。すべてのメモリー構造は、RDBMSを構成するコンピュータのメイン・メモリー内に存在します。

アプリケーションがCDBまたはPDBに接続すると、データベース・インスタンスに接続されます。インスタンスは、SGAのみでなくその他のメモリー領域も割り当て、バックグラウンド・プロセスの他のプロセスも起動して、アプリケーションに対応します。

Oracle Databaseプロセス

プロセスは一連のステップを実行できるオペレーティング・システムのメカニズムです。オペレーティング・システムによっては、「ジョブ」、「タスク」または「スレッド」という用語を使用します。

このトピックの目的では、スレッドはプロセスと同等です。Oracleデータベース・インスタンスには次のタイプのプロセスがあります。

  • クライアント・プロセス

    これらのプロセスは、アプリケーション・プログラムまたはOracleツールのソフトウェア・コードを実行するために作成およびメンテナンスされます。ほとんどの環境ではクライアント・プロセス用に独立したコンピュータが使用されます。

  • バックグラウンド・プロセス

    これらのプロセスは、各クライアント・プロセスごとに実行されている複数のOracle Databaseプログラムが処理する機能を1つにまとめます。バックグラウンド・プロセスは、非同期的にI/Oを実行して他のOracle Databaseプロセスを監視することによって、並列性を高め、パフォーマンスと信頼性を向上させます。

  • サーバー・プロセス

    これらのプロセスは、クライアント・プロセスと通信し、Oracle Databaseと対話してリクエストに対応します。

Oracleプロセスには、サーバー・プロセスとバックグラウンド・プロセスがあります。ほとんどの環境では、Oracleプロセスとクライアント・プロセスは別々のコンピュータ上で実行されます。

インスタンスのメモリー構造

Oracle Databaseでは、プログラム・コード、ユーザー間で共有されるデータ、および接続している各ユーザーのプライベート・データ領域のために、メモリー構造が作成および使用されます。

次のメモリー構造がデータベース・インスタンスに関連付けられています。

  • システム・グローバル領域(SGA)

    SGAは、共有メモリー構造のグループであり、1つのデータベース・インスタンスに関するデータと制御情報が含まれています。SGAコンポーネントの例として、データベース・バッファ・キャッシュや共有SQL領域があります。SGAには、オプションのインメモリー列ストア(IM列ストア)を含めることができ、これにより、列形式でデータをメモリーに移入できます。

  • プログラム・グローバル領域(PGA)

    PGAは、サーバー・プロセスまたはバックグラウンド・プロセス用のデータや制御情報を含むメモリー領域です。PGAにアクセスできるのはプロセスのみです。それぞれのサーバー・プロセスおよびバックグラウンド・プロセスには専用のPGAがあります。

アプリケーションおよびネットワークのアーキテクチャ

特定のコンピュータ・システムまたはネットワークを最大限に活用できるように、Oracle Databaseではデータベース・サーバーとクライアント・プログラムの間で処理を分割できます。RDBMSを実行しているコンピュータはデータベース・サーバーの処理を実行し、アプリケーションを実行しているコンピュータはデータの解釈と表示を行います。

アプリケーション・アーキテクチャ

アプリケーション・アーキテクチャは、データベース・アプリケーションがOracleデータベースに接続されているコンピューティング環境です。データベースの最も一般的なアーキテクチャは、クライアント/サーバーと複数層の2種類です。

クライアント・サーバー・アーキテクチャ

クライアント/サーバー・アーキテクチャでは、クライアント・アプリケーションは、データベース・サーバー上で実行される操作に関するリクエストを開始します。サーバーは、Oracle Databaseソフトウェアを実行し、同時実行の共有データ・アクセスに必要な機能を処理します。サーバーは、クライアントから発行されたリクエストを受け取って処理します。

複数層アーキテクチャ

複数層アーキテクチャでは、1つ以上のアプリケーション・サーバーが操作の各部分を実行します。アプリケーション・サーバーには、アプリケーション・ロジックの大部分が含まれ、クライアントのデータ・アクセスを可能にし、いくつかの問合せ処理を実行します。この方法で、データベースの負荷が軽減します。アプリケーション・サーバーは、クライアントと複数のデータベース間のインタフェースとして機能し、セキュリティ・レベルを高める役割を果します。

サービス指向アーキテクチャ(SOA)は、アプリケーション機能がサービスにカプセル化されている複数層アーキテクチャです。通常、SOAサービスはWebサービスとして実装されます。WebサービスはHTTP経由でアクセス可能なサービスであり、Webサービス記述言語(WSDL)やSOAPなどのXMLベースの規格に基づいています。Oracle Databaseは、従来の複数層またはSOA環境においてWebサービス・プロバイダとして機能できます。

Simple Oracle Document Access (SODA)は、データベースに格納されたデータへのアクセスを可能にするSOAのアダプタです。SODAは、リレーショナル・データベース機能やSQLおよびPL/SQLなどの言語に関する知識を使用しないスキーマレス・アプリケーション開発向けに設計されています。Oracle Databaseでは、ドキュメントがどのように格納されているかを把握しなくても、ドキュメント・コレクションの作成および格納や、それらのドキュメントの取得および問合せの実行を可能にします。RESTのためのSODAは、Representational State Transfer (REST)アーキテクチャ・スタイルを使用してSODAを実装します。

Oracle Net Servicesのアーキテクチャ

Oracle Net Servicesは、データベースとネットワークの通信プロトコルとの間のインタフェースであり、分散処理と分散データベースの実現を支援します。

通信プロトコルにより、ネットワーク上でのデータの送受信方法が定義されます。Oracle Net Servicesは、TCP/IP、HTTP、FTPおよびWebDAVなど、主要なネットワーク・プロトコルによる通信をすべてサポートしています。

Oracle NetはOracle Net Servicesのコンポーネントであり、クライアント・アプリケーションからデータベース・サーバーへのネットワーク・セッションを確立して維持します。ネットワーク・セッションの確立後は、Oracle Netはクライアント・アプリケーションとデータベース・サーバーのためのデータ伝達手段として機能し、これらの間でメッセージを交換します。Oracle Netは、ネットワーク上の各コンピュータにあるため、これらのジョブを実行できます。

Net Servicesの重要なコンポーネントにOracle Net Listener (リスナーと呼ばれる)があり、プロセスとしてデータベースまたはネットワークの別の場所で実行されます。クライアント・アプリケーションは、リスナーに接続要求を送信し、リスナーはデータベースに対するこれらの要求のトラフィックを管理します。接続が確立されると、クライアントとデータベースは直接通信します。

クライアント要求を処理するようにOracle Databaseを構成する最も一般的な方法は、次のとおりです。

  • 専用サーバー・アーキテクチャ

    各クライアント・プロセスは、専用サーバー・プロセスに接続します。サーバー・プロセスは、クライアントのセッションの継続中、その他のどのクライアントとも共有されません。それぞれの新規セッションに専用サーバー・プロセスが割り当てられます。

  • 共有サーバー・アーキテクチャ

    データベースは複数のセッションに対して共有サーバー・プロセスのプールを使用します。クライアント・プロセスはディスパッチャと通信し、ディスパッチャは、クライアントごとに専用のサーバー・プロセスがなくても多数のクライアントが同じデータベース・インスタンスに接続できるようにするプロセスです。

Oracle Databaseドキュメントのロードマップ

ユーザーが必要とする情報をできるだけ効率よく見つけられるように、マニュアル・セットは特定のアクセス・パスを使用して設計されています。

マニュアル・セットは、初級、中級、および上級の3つの層またはグループに分かれています。ユーザーは、初級グループのマニュアルから始め、中級グループのマニュアル(2日でシリーズ)に進み、最後に上級マニュアル(残りのマニュアルを含む)に進みます。

サポートされているOracle Databaseのリリースのドキュメントは、https://docs.oracle.com/en/database/oracle/oracle-database/を参照してください。

Oracle Databaseドキュメント: 初級グループ

技術者でOracle Databaseの新規ユーザーである場合は、初級グループのマニュアルを1冊以上、最初から最後まで読むことから始めてください。このグループの各マニュアルは、2日で読めるように設計されています。

このマニュアルに加えて、初級グループには次の表に示すマニュアルが含まれます。

表1-1 初級グループ

手動 説明

『Oracle Database 2日で開発者ガイド』

このタスクベースのクイック・スタートでは、SQLおよびPL/SQLでOracle Databaseの基本機能を使用する方法について説明しています。

初級グループのマニュアルは密接に関連しており、そのために相互参照が多くなっています。たとえば、『Oracle Database概要』は、概念に基づいてタスクを実行する方法を学ぶことができるように、2日でシリーズのマニュアルを頻繁に参照しています。2日でシリーズのマニュアルでは、タスクの概念的な説明について、『Oracle Database概要』を頻繁に参照しています。

Oracle Databaseドキュメント: 中級グループ

初級グループの次のステップは、中級グループです。

中級グループのマニュアルは、初級グループの「2日で」シリーズのマニュアルに含まれる情報を前提とし、それと同じ「2日で」という言葉が先頭に付いています。「2日で」マニュアルでは、初級マニュアルよりも詳細にトピックを説明し、また、特に重要なトピックについて説明しています。マニュアルは、様々な読者を対象としています。

  • データベース管理者

    Oracle Database 2日でパフォーマンス・チューニング・ガイドは、Oracle Diagnostics Pack、Oracle Tuning PackおよびOracle Enterprise Manager Cloud Control (Cloud Control)で用意されている機能を使用して、日常のデータベース・パフォーマンス・チューニング・タスクの実行方法を学習するクイック・スタート・ガイドです。

  • データベース開発者

    Oracle Database 2日でJava開発者ガイドは、Javaアプリケーションの構築に使用されるすべてのJava製品を理解するのに役立ちます。このマニュアルでは、サンプルWebアプリケーションのOracle JDBC Thinドライバ、ユニバーサル接続プール(UCP)およびデータベースでのJava (OJVM)を使用する方法について説明します。

Oracle Databaseドキュメント: 上級グループ

上級グループのマニュアルは、特定のトピックについて、2日でシリーズのマニュアルよりも詳細な情報を必要とする専門家ユーザーを対象としています。

次の表に、上級グループの必須のリファレンス・マニュアルを示します。

表1-2 必須のリファレンス・マニュアル

手動 説明

Oracle Database SQL言語リファレンス

Oracle Databaseの情報の管理に使用する構造化問合せ言語(SQL)の詳細な説明を提供します。

Oracle Databaseリファレンス

データベース初期化パラメータ、データ・ディクショナリ・ビュー、動的パフォーマンス・ビュー、待機イベントおよびバックグラウンド・プロセスについて説明します。

Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス

Oracle Databaseサーバーに付属するPL/SQLパッケージについて説明します。提供されたパッケージは、アプリケーションの作成や、独自のストアド・プロシージャを作成するアイデアのために使用できます。

上級ガイドは数が多いため、この項にすべてを示すことはできません。次の表に、熟練したOracle DBAの多くが使用するガイドを示します。

表1-3 DBA向け上級グループ

手動 説明

Oracle Database管理者ガイド

データベースの作成と構成、データベースのメンテナンスと監視、スキーマ・オブジェクトの作成、ジョブのスケジューリング、問題の診断などのタスクを実行する方法について説明します。

『Oracle Databaseセキュリティ・ガイド』

デフォルトのデータベース機能を使用してOracle Databaseのセキュリティを構成する方法について説明します。

Oracle Databaseパフォーマンス・チューニング・ガイド

このマニュアルでは、Oracle Databaseのツールを使用して、データベース・パフォーマンスを最適化する方法について説明します。また、データベースの作成でのパフォーマンスのベスト・プラクティスを説明するとともに、パフォーマンス関連の参照情報を示します。

Oracle Database SQLチューニング・ガイド

SQL処理、オプティマイザ、実行計画、SQL演算子、オプティマイザ統計、アプリケーションのトレースおよびSQLアドバイザについて説明します。

『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』

Oracleデータベースのバックアップ方法、リストア方法およびリカバリ方法、データベース・ファイルのバックアップに対するメンテナンスの実行方法、およびストレージ・システム間のデータの転送方法について説明します。

Oracle Real Application Clusters管理およびデプロイメント・ガイド

Oracle RACデータベースのインストール方法、構成方法、管理方法およびトラブルシューティング方法について説明します。

次の表に、熟練したOracle開発者の多くが使用するガイドを示します。

表1-4 開発者向け上級グループ

手動 説明

Oracle Database開発ガイド

Oracle Database環境で実行するためのアプリケーションの開発方法または既存のアプリケーションの変換方法について説明します。このマニュアルでは、アプリケーション設計の基礎と、SQLおよびPL/SQLで開発するための必須の概念について説明しています。

Oracle Database PL/SQL言語リファレンス

データ型、制御文、コレクション、トリガー、パッケージ、エラー処理を含む、PL/SQL言語のあらゆる側面について説明します。

Oracle Database Java開発者ガイド

Oracle DatabaseでのJavaアプリケーションの開発、ロードおよび実行方法について説明します。

Oracle Database SecureFiles and Large Objects開発者ガイド

ラージ・オブジェクト(LOB)、SecureFiles LOBおよびデータベース・ファイル・システム(DBFS)を使用した新しいアプリケーションの開発方法について説明します。

特定のユーザーが必要とする他の上級ガイドは、そのユーザーの担当業務の分野によって異なります。