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

関連項目:

Codd氏の論文の抜粋およびリンクは、『A Relational Model of Data for Large Shared Data Banks』を参照

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

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

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

  • 論理演算

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

  • 物理演算

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

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

Oracle Databaseの歴史の概要

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

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は、メインフレーム、ミニコンピュータ、およびPC上で動作する最初のリレーショナル・データベースでした。このデータベースは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用に設計され、新しいマルチテナント・アーキテクチャ、インメモリー列ストア、およびJSONドキュメントのサポートを備えています。Oracle Database 12cは、コストの削減およびユーザーのサービス・レベルの向上を継続して、顧客がITリソースを効率的に使用するのに役立ちます。

スキーマ・オブジェクト

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

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

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

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

関連項目:

スキーマ・オブジェクトのタイプ、記憶域および依存性の詳細は、スキーマ・オブジェクトの概要を参照

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

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

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

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

関連項目:

  • 列および行、データ型、表の記憶域および表の圧縮の詳細は、表の概要を参照

  • 考えられる制約のタイプおよび状態の詳細は、データ整合性を参照

索引

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

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

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

関連項目:

索引の目的およびタイプの詳細は、索引の概要を参照

データ・アクセス

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

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を拡張した数多くの機能がサポートされています。

関連項目:

SQL標準およびSQL文の主要なタイプの詳細は、SQLを参照

PL/SQLとJava

PL/SQLは、Oracle SQLに対する手続きを拡張します。

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

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

Oracle Databaseは、Javaで作成されたプログラム単位も格納できます。Javaストアド・プロシージャは、SQLにパブリッシュされ、一般的な用途向けにデータベースに格納されるJavaメソッドです。既存のPL/SQLプログラムをJavaから呼び出したり、Javaプログラムを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データベースという用語が、インスタンスとデータベースの両方を示す場合があります。

これらの用語の厳密な意味は次のとおりです。

  • データベース

    データベースは、ディスク上に配置された、データを格納する一連のファイルです。これらのファイルはデータベース・インスタンスとは別に存在できます。

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

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

次の図に、データベースとそのインスタンスを示しています。インスタンスに対するそれぞれのユーザー接続に対して、クライアント・プロセスにより、アプリケーションが実行されます。各クライアント・プロセスは、独自のサーバー・プロセスに関連付けられています。サーバー・プールには、プログラム・グローバル領域(PGA)と呼ばれる独自のプライベート・セッション・メモリーがあります。

図1-1 Oracleインスタンスおよびデータベース

図1-1の説明が続きます
「図1-1 Oracleインスタンスおよびデータベース」の説明

Oracleデータベースは厳密には一連の物理構造(ファイルとメモリーの構造)ですが、アプリケーションは、単一の物理データベース内にある複数の論理データベースと対話したり、複数の物理データベース間に分散された単一の論理データベースと対話したりできます。

この項では、次の項目について説明します。

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

非CDBは、PDBを含めることができない従来のOracleデータベースです。CDBは、ユーザーが作成したプラガブル・データベースが0個、1個または多数含まれる単一の物理データベースです。プラガブル・データベース(PDB)は、Oracle Netクライアントに非CDBとして表示されるスキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトの移植可能な集合です。

注意:

CDBと非CDBには、アーキテクチャに違いがあります。このマニュアルでは、特に他に指示がないかぎり、非CDBのアーキテクチャを前提としています。

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

マルチテナント・アーキテクチャによって、従来の非CDBアーキテクチャが引き起こす多くの問題が解決されます。

大企業では数百から数千ものデータベースを使用し、多くの場合、これらは複数の物理サーバー上の様々なプラットフォームで稼働している可能性があります。最近のサーバーは以前より高い負荷を処理できるようになりました。1つのデータベースで使用するサーバー・ハードウェアの容量はごく一部です。この方法では、ハードウェアと人事管理の両方が無駄になります。

マルチテナント・アーキテクチャでは、別々のコンピュータにある複数の物理データベースを1つのコンピュータ上の1つのデータベースに統合することにより、次の利点が得られます。

  • ハードウェアのコスト削減

  • より簡単かつ高速なデータおよびコードの移動

  • 物理データベースの容易な管理および監視

  • データおよびコードの分離

  • 権限を付与されているPDBのみを管理するPDB管理者と、CDB全体を管理するCDB管理者との業務の分離

管理性には次のような利点があります。

  • PDBの切断と接続によるデータおよびコードのアップグレードの簡略化

  • PDBを本番CDBに接続する前に開発で使用することによる、テストの簡略化

  • 個々のPDBを前のSCNまでフラッシュ・バックする機能

  • PDBレベルでメモリーおよびI/Oのパフォーマンス制限を設定する機能

  • 共通のアプリケーション・ルートに接続されたPDBのセットである、アプリケーション・コンテナ内のマスターアプリケーション定義をインストール、アップグレードおよび管理する機能

関連項目:

マルチテナント・アーキテクチャの利点の詳細は、Oracleマルチテナント管理者ガイドを参照してください。

データベースの統合

データベースの統合とは、1つ以上の非CDBのデータを1つのCDBに移動する一般プロセスです。

Oracle Database 12cから、データベースは、CDBか非CDBのいずれかとして作成する必要があります。従来の非CDBをPDBとしてCDBに接続できます。PDB/非CDB互換性保障とは、Oracle Netで接続しているクライアントから、PDBと非CDBの動作が同じように見えることです。

以下の図に、2つの別々の非CDB、hrsalesを示します。各非CDBは、それぞれのメモリーとデータベース・ファイルのセットを持ち、それぞれのコンピュータに常駐します。各非CDBには、独自の専用ユーザー・アプリケーションがあります。

以下の図に、MYCDBという名前のCDBに統合後の同じデータを示します。

図1-3 非CDBのCDBへの統合

図1-3の説明が続きます
「図1-3 非CDBのCDBへの統合」の説明

物理的に、MYCDBは1つのOracleデータベースです。MYCDBには、非CDBと同様に、1つのデータベース・インスタンス(ただし、Oracle Real Application Clustersでは複数のインスタンスが可能)と、1つのデータベース・ファイル・セットがあります。

MYCDBには2つのPDB、hrpdbsalespdbが含まれます。図1-3に示すように、これらのPDBは、それぞれのアプリケーションには、データベース統合前と同様に表示されます。CDB内でCDB自身またはPDBを管理するために、CDB管理者は、すべてのPDBが属するスキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトの集合であるCDBルートに接続できます。

関連項目:

非CDBをCDBに統合する方法の詳細は、Oracleマルチテナント管理者ガイドを参照してください。

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

Oracle Database 12cリリース2 (12.2)以降では、アプリケーション・コンテナはユーザーが任意に作成するコンテナであり、1つ以上のアプリケーション・モデルのデータおよびメタデータが格納されます。

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

アプリケーション・コンテナはある意味で、CDB内のアプリケーション固有CDBとして機能します。アプリケーション・コンテナにはCDB自身のように複数のアプリケーションPDBが含まれ、これらのPDBはメタデータおよびデータを共有できます。

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

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

図1-4の説明が続きます
「図1-4 SaaSのユースケース」の説明

関連項目:

アプリケーション・コンテナの概要については、Oracleマルチテナント管理者ガイドを参照してください。

シャーディング・アーキテクチャ

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

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

シャーディング・アーキテクチャでは、各データベースは、独自のローカル・リソース(CPU、メモリー、フラッシュまたはディスク)を持つ専用サーバーでホストされます。このような構成の各データベースはシャードと呼ばれます。すべてのシャードが一体的に単一の論理データベースを形成し、これはシャード・データベース(SDB)と呼ばれます。

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

次の図は、3つのシャード間に水平にパーティション化されたシャード表を示しています。

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

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

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

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

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

関連項目:

Oracle Shardingの概要については、Oracle Shardingの使用を参照してください。

データベース記憶域構造

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

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

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

物理記憶域構造

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

CREATE DATABASE文を実行すると、次のファイルが作成されます。

  • データ・ファイル

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

  • 制御ファイル

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

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

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

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

関連項目:

物理記憶域構造

論理記憶域構造

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

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

  • データ・ブロック

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

  • エクステント

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

  • セグメント

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

  • 表領域

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

関連項目:

論理記憶域構造

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

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

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

Oracle Databaseプロセス

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

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

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

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

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

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

  • サーバー・プロセス

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

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

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

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

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

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

    SGAは、共有メモリー構造のグループであり、1つのデータベース・インスタンスに関するデータと制御情報が含まれています。SGAコンポーネントの例として、データベース・バッファ・キャッシュや共有SQL領域があります。Oracle Database 12cリリース1 (12.1.0.2)以降、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サービス・プロバイダとして機能できます。

関連項目:

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ドキュメント: 初級グループ

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

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

表1-1 初級グループ

手動 説明

Oracle Database 2日でデータベース管理者

Oracle Database管理者(DBA)には、Oracle Databaseの運用全般に対する責任があります。このタスクベースのクイック・スタートでは、DBAにOracle Enterprise Manager Database Express (EM Express)を使用した日常のデータベース管理タスクの実行方法を指導します。このマニュアルでは、基本的なトラブルシューティングやパフォーマンス監視アクティビティの実行方法など、データベースの稼働を維持するために必要な、一般的なすべての管理タスクを実行する方法について説明しています。

『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 SQLに関する最も確実な情報ソースです。

Oracle Databaseリファレンス

このマニュアルは、初期化パラメータ、データ・ディクショナリ・ビュー、動的パフォーマンス・ビュー、待機イベントおよびバックグラウンド・プロセスに関する最も確実な情報ソースです。

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

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

手動 説明

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 PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス

このマニュアルは、Oracleデータベースに付属するPL/SQLパッケージおよびタイプのAPIリファレンスです。Oracle DeveloperやOracle Application Serverなど、他の製品に付属するパッケージについては説明しません。

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