プライマリ・コンテンツに移動
Oracle® Database概要
11gリリース2 (11.2)
B56306-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

19 データベース開発者の概念

Oracle Database開発者は、データベース・アプリケーションを作成およびメンテナンスします。この項では、データベース開発者の作業内容と使用可能な開発ツールの概要について説明します。

この項には次のトピックが含まれます:

データベース開発者の業務

Oracle開発者は、Oracleテクノロジ・スタックを使用するアプリケーションのデータベース・コンポーネントの作成およびメンテナンスを担当します。Oracle開発者は、新しいアプリケーションを開発するか、既存アプリケーションをOracle Database環境で動作するように変換します。このため、開発者はデータベース管理者と緊密に連携し、知識や情報を共有する必要があります。

Oracleデータベース開発者は、次のタスクを担当します。

  • アプリケーションに必要なデータ・モデルの実装

  • スキーマ・オブジェクトの作成とデータ整合性規則の実装

  • 新しい開発プロジェクトのプログラミング環境の選択

  • サーバー側のPL/SQLまたはJavaサブプログラム、およびSQL文を使用するクライアント側の手続き型コードの記述

  • 選択した開発ツールを使用したアプリケーション・インタフェースの作成

  • グローバル・アプリケーション開発用のグローバリゼーション・サポート環境の構築

  • 本番環境での開発、テスト、教育およびデプロイメント用の異なるデータベースへのアプリケーションのインスタンス化

前述のタスク、および他の多くのタスクの詳細は、『Oracle Database 2日で開発者ガイド』および『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

データベース開発者向けのツール

Oracleでは、データベース・アプリケーションを開発するためのいくつかのツールを提供しています。この項では、一般的に使用されるいくつかの開発ツールについて説明します。

SQL Developer

SQL Developerは、Javaで記述された、SQL*Plusのグラフィカル版ツールで、SQLおよびPL/SQLの開発を支援します。標準的なデータベース認証を使用してOracleデータベース・スキーマに接続できます。SQL Developerでは、次のことを実行できます。

  • スキーマ・オブジェクトの参照、作成、編集、削除

  • SQL文の実行

  • PL/SQLプログラム・ユニットの編集およびデバッグ

  • データの操作およびエクスポート

  • レポートの作成および表示

SQL Developerは、デフォルトのOracle Databaseインストールに含まれており、無償でダウンロードできます。


関連項目:

SQL Developerの使用方法の詳細は、『Oracle Database 2日で開発者ガイド』およびOracle SQL Developerユーザーズ・ガイドを参照してください。

Oracle Application Express

Oracle Application Express(APEX)は、Oracle Database向けのWebアプリケーション開発ツールです。このツールのユーザー・インタフェースのテーマ、ナビゲーション・コントロール、フォーム・ハンドラ、柔軟なレポートなどの組込み機能を使用することで、効率よくアプリケーションを開発できます。

Oracle Application Expressはデータベースとともにインストールし、表形式のデータおよびPL/SQLコードで構成されています。アプリケーションを実行すると、Oracle Application Express PL/SQLコールに変換されたURLリクエストがブラウザから送信されます。データベースでPL/SQLが処理された後、その結果がHTMLとしてブラウザに送り返されます。このサイクルをページのリクエストまたは送信ごとに繰り返します。

Oracle Application Expressは、埋込み型PL/SQLゲートウェイと統合できます。このゲートウェイは、データベース内のXML DB HTTPサーバーで実行され、動的アプリケーションの作成に必要なインフラストラクチャを提供します。図19-1に示すように、埋込み型PL/SQLゲートウェイは、中間層をなくすことで、シンプルなアプリケーション・アーキテクチャを実現します。

図19-1 埋込み型PL/SQLゲートウェイを使用したApplication Express

図19-1の説明が続きます
「図19-1 埋込み型PL/SQLゲートウェイを使用したApplication Express」の説明


関連項目:

APEXの使用方法の詳細は、『Oracle Database Application Express 2日で開発者ガイド』を参照してください。

Oracle JDeveloper

Oracle JDeveloperは、最新の業界標準Java、XML、Webサービス、およびSQLを使用するサービス指向アプリケーションを構築するための統合開発環境(IDE)を提供します。Oracle JDeveloperは、アプリケーションをモデル化、コーディング、デバッグ、テスト、プロファイリング、チューニングおよびデプロイするための機能を統合することによって、ソフトウェア開発全般を支援します。

JDeveloperでは、各種アプリケーション開発ツールのウィンドウを使用します。たとえば、Javaアプリケーションを作成する場合、Javaビジュアル・エディタやコンポーネント・パレットなどのツールを使用できます。これらのツールに加えて、JDeveloperでは、プロジェクト・コンテンツを整理および表示するための様々なナビゲーション機能を提供しています。


関連項目:


Oracle JPublisher

Java Publisher(JPublisher)は、データベース表にアクセスするJavaプログラムを作成するためのシンプルで便利なツールです。JDeveloperで生成されるJavaコード・スタブによって、データベースのオブジェクト・リレーショナル構造がJavaクラスとして表現されます。これらのクラスにより、次のユーザー定義データベース・エンティティをJavaプログラムで表すことができます。

  • SQLオブジェクト型

  • オブジェクト参照型

  • SQLコレクション型

  • PL/SQLパッケージ

これらのエンティティからJavaクラスへのマッピングは、強い型指定のパラダイムで指定およびカスタマイズできるため、特定のJava型は特定のユーザー定義のSQL型に関連付けられます。また、JPublisherではPL/SQLパッケージ用のクラスも生成できます。これらのクラスには、パッケージのストアド・プロシージャをコールするラッパー・メソッドが含まれています。


関連項目:

『Oracle Database JPublisherユーザーズ・ガイド』

Oracle Developer Tools for Visual Studio .NET

Oracle Developer Tools for Visual Studio .NETは、Visual Studio .NET環境に統合された一連のアプリケーション・ツールです。これらのツールを使用すると、ユーザーはGUIを介してOracle機能にアクセスして、様々なアプリケーション開発タスクを実行でき、生産性および操作性が向上します。

Oracle Developer Toolsでは、Visual Basic、C#、およびその他の.NET言語を使用して.NETストアド・プロシージャをプログラミングおよび実装できます。これらのプロシージャは、.NET言語で記述され、SQLまたはPL/SQL文を含みます。


関連項目:

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

データベース開発者のためのトピック

第17章では、開発者と管理者の両方にとって大切なトピックについて説明します。この項では、他の箇所で説明されていないデータベース開発者に不可欠なトピックについて説明します。

この項には次のトピックが含まれます:

アプリケーション設計およびチューニングの原則

Oracle開発者は、セキュリティおよびパフォーマンス目標を達成できるよう、データベース・アプリケーションを設計、作成、およびチューニングする必要があります。アプリケーション設計およびチューニングに関する次の原則が、ガイドラインとして役立ちます。

  • Oracle Databaseの動作の理解

    開発者としてOracle Databaseを使用するアプリケーションの開発にかかる時間を最小限に抑えるには、データベースのアーキテクチャおよび機能を利用する必要があります。たとえば、Oracle Databaseの同時実行性制御やマルチバージョンの読取り一貫性に関する知識が不足していると、アプリケーションによってデータ整合性が破損したり、処理速度およびスケーラビリティが低下する場合があります(「データの同時実行性と整合性の概要」を参照)。

  • バインド変数の使用

    問合せバインド変数を使用すると、データベースは問合せを一度コンパイルした後で、問合せ計画共有プールに格納します。同じ文を再度実行する場合、データベースはソフト解析を実行し、計画を再利用できます。これに対し、ハード解析は、時間がかかる上、多くのリソースを消費します(「SQLの解析」を参照)。バインド変数を使用してソフト解析を可能にすることで、効率は大幅に向上し、また、データベースはそのように設計されています。

  • クライアントではなく、サーバーでの整合性制約の実装

    主キーと外部キーを使用すると、複数のアプリケーションでデータを再利用できます。クライアント側で規則をコーディングすると、データベースに対する実行中、他のクライアントはこれらの規則にアクセスできません(「整合性制約の利点」を参照)。

  • 代表的なデータおよびセッション・アクティビティが利用可能なテスト環境の構築

    稼働中の本番環境をシミュレートするテスト環境の構築には、複数の利点があります。たとえば、アプリケーションのベンチマークを実施でき、拡張性およびパフォーマンスが十分かどうかを確認できます。また、テスト環境を使用して、データベースの変更によるパフォーマンスへの影響を測定したり、アップグレードおよびパッチが正常に動作するかどうかを確認できます。

  • 高いパフォーマンス目標に沿ったデータ・モデルの設計

    通常、汎用データ・モデルを使用すると、パフォーマンスは低下します。データ・モデルは、最も一般的な問合せに最大限効率よく応答できるように綿密に設計します。たとえば、データ・モデルでは、最高のパフォーマンスを示す索引のタイプを使用する必要があります。論理および物理構造の変更は困難または不可能な場合があるため、デプロイ後のチューニングはお薦めしません。

  • 明確なパフォーマンス目標の定義およびメトリックの履歴レコードの保管

    開発での重要な要素として、アプリケーションのパフォーマンスおよび拡張性の正確な判断があります。たとえば、予想されるユーザー負荷、1秒当たりのトランザクション、許容レスポンス時間などのメトリックを使用する必要があります。このため、パフォーマンス・メトリックの履歴レコードを保管しておくことをお薦めします。これにより、パフォーマンスを予防的また対処的に監視できます(「パフォーマンス診断およびチューニング」を参照)。

  • アプリケーション・コードのインスツルメント処理

    開発の際、アプリケーションにデバッグ・コードを追加することをお薦めします。トレース・ファイルが生成可能である場合、パフォーマンス上の問題をデバッグおよび診断するときに便利です。


関連項目:

データベース・アプリケーションの設計およびデプロイの考慮事項は、『Oracle Database 2日で開発者ガイド』を参照してください。

クライアント側のデータベース・プログラミング

第8章「サーバー側プログラミング: PL/SQLとJava」で説明しているように、手続き型データベース・アプリケーションでSQLを使用するには、2つの基本テクニックがあり、1つはPL/SQLおよびJavaを使用したサーバー側のプログラミングで、もう1つはプリコンパイラおよびAPIを使用したクライアント側のプログラミングです。この項では、クライアント側のデータベース・プログラミングの概要について説明します。


関連項目:

プログラミング環境を選択する方法の詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

埋込みSQL

以前は、クライアント/サーバー・プログラムとデータベースの対話には埋込みSQLが使用されていました。この項では、埋込みSQLの使用に関するオプションについて説明します。

Oracleプリコンパイラ

一般的に、クライアント/サーバー・プログラムは、プリコンパイラを使用して記述されます(プリコンパイラは、高度なプログラムにSQL文を埋め込むためのプログラミング・ツールです)。たとえば、Oracle Pro*C/C++プリコンパイラを使用すると、CまたはC++のソース・ファイルにSQL文を埋め込むことができます。Oracleプリコンパイラは、COBOLおよびFORTRANにも使用できます。

プリコンパイラには、次のような複数の利点があります。

  • 同等のOCIアプリケーションに比べて一般的にコードの記述量が少ないことによる生産性の向上

  • 高度にカスタマイズされたアプリケーションを作成可能

  • リソース使用、SQL文実行および各種のランタイム・インジケータの緊密な監視

  • プリコンパイラにより各埋込みSQL文がOracle Databaseランタイム・ライブラリのコールへと自動変換されることによる時間の節約

  • Object Type Translatorによる、Pro*C/C++アプリケーションで使用可能なCデータ型へのOracle Databaseのオブジェクト型およびコレクションのマップ

  • オブジェクト型とコレクションのコンパイル時におけるタイプ・チェック機能、データベース型からCデータ型への自動型変換

SQL文を含むクライアント・アプリケーションがホスト・プログラムになります。このプログラムは、ホスト言語で記述されます。ホスト・プログラムでは、完全なSQL文と完全なC文を混合して使用でき、Cの変数または構造をSQL文に使用することもできます。SQL文を埋め込む場合は、文をEXEC SQLキーワードで開始して、セミコロンで終了する必要があります。EXEC SQL文は、Pro*C/C++によりランタイム・ライブラリSQLLIBへのコールに変換されます。

多くの埋込みSQL文は、新しい句が追加される点、またはプログラム変数が使用される点のみが同等の対話型SQLと異なります。次の例では、対話型と埋込み型のROLLBACK文を比較しています。

ROLLBACK;           -- interactive
EXEC SQL ROLLBACK;  -- embedded

これらの文は同じ働きをしますが、前者は対話型SQL環境(SQL Developerなど)で、また後者はPro*C/C++プログラムで使用します。

このプリコンパイラは入力としてホスト・プログラムを受け入れ、埋込みSQL文を標準のデータベース・ランタイム・ライブラリ・コールに変換し、通常の方法でコンパイル、リンクおよび実行できるソース・プログラムを生成します。図19-2に、プリコンパイラを使用したプログラム開発の典型的な手順を示します。

図19-2 プリコンパイラを使用したプログラム開発

図19-2の説明が続きます
「図19-2 プリコンパイラを使用したプログラム開発」の説明


関連項目:

  • Pro*C/C++プリコンパイラの詳細は、『Pro*C/C++プログラマーズ・ガイド』を参照してください。

  • 『Pro*FORTRAN Supplement to the Oracle Precompilers Guide』


SQLJ

SQLJは、SQL文をJavaソース・コードに埋め込むためのANSI SQL-1999規格です。SQLJは、クライアント側でJavaからSQLへのデータ・アクセスに使用されるJava Database Connectivity(JDBC)APIにかわるシンプルなAPIを提供します。

SQLJインタフェースは、Java版のPro*インタフェースです。SQL文をJavaソース・コードに挿入します。その後、Javaソース・ファイルをSQLJトランスレータに送信すると、SQLJトランスレータによって埋込みSQLが純粋なJDBCベースのJavaコードに変換されます。


関連項目:

「SQLJ」

クライアント側のAPI

現在は、多くの開発者がAPIを使用してデータベース・アプリケーションにSQLを埋め込みます。たとえば、Oracle Databaseと通信するプログラムの有効化によく使用されるOpen Database Connectivity(ODBC)およびJDBCという2つのAPIがあります。その他、クライアント側のプログラミングによく使用されるOracle Call Interface(OCI)およびOracle C++ Call Interface(OCCI)という2つのAPIもあります。

OCIおよびOCCI

プリコンパイラのかわりとして、OracleではOCI APIおよびOCCI APIを提供しています。OCIでは、Cなどのホスト・プログラミング言語を使用して、データベース内のデータおよびスキーマを操作できます。OCCIは、オブジェクト指向のインタフェースで、C++を使用する場合に適しています。どちらのAPIを使用する場合も、開発者はシステム固有のサブプログラムを起動して、Oracle Databaseにアクセスし、SQLの実行を制御できます。

場合によっては、レベルの高いインタフェースよりも、OCIの方が高いパフォーマンスを示すことや、機能が豊富なことがあります。OCIおよびOCCIでは、次のような多くの機能を提供しています。

  • Oracle Database全体で使用可能なすべてのSQL DDLDML、問合せおよびトランザクション制御機能のサポート

  • ディスク領域が問題になる場合のアプリケーションをデプロイする方法であるインスタント・クライアント

  • Cアプリケーションからのスレッド管理、接続プール、グローバリゼーション・ファンクションおよびデータのダイレクト・パス・ロード

OCIおよびOCCIには、動的ランタイム・ライブラリ(OCILIB)という形式で、標準データベース・アクセスおよび検索関数のライブラリが提供されています。このライブラリは、実行時にアプリケーション内でリンクを設定できます。このように、非データベース・アプリケーションと同様の方法でOCIまたはOCCIプログラムをコンパイルおよびリンクすると、別の処理やプリコンパイル作業が不要になります。図19-3に、開発プロセスを示します。

図19-3 OCIまたはOCCIを使用した開発プロセス

図19-3の説明が続きます
「図19-3 OCIまたはOCCIを使用した開発プロセス」の説明


関連項目:

  • 『Oracle Call Interfaceプログラマーズ・ガイド』

  • 『Oracle C++ Call Interfaceプログラマーズ・ガイド』


ODBCおよびJDBC

ODBCは、アプリケーションをデータベースに接続し、SQL文を準備して実行するための標準APIです。ODBCは、プログラミング言語、データベース、およびオペレーティング・システムに依存しません。ODBCの目的は、任意のアプリケーションが任意のデータベースのデータにアクセスできるようにすることです。

データベース・ドライバは、アプリケーションとデータベースの間にあるソフトウェアです。このドライバは、アプリケーションによるAPIコールをデータベースが処理可能なコマンドへと変換します。ODBCドライバを使用することで、スプレッドシートに格納されているデータなど、あらゆるデータ・ソースにアプリケーションからアクセスできます。ODBCドライバは、ODBC標準とデータベースの間のマッピングをすべて実行します。

Oracleが提供するOracle ODBCドライバを使用すると、ODBCに準拠したアプリケーションはOracle Databaseにアクセスできます。たとえば、Visual Basicで記述されたアプリケーションでは、ODBCを使用してOracle Database表の問合せや更新を実行できます。

JDBCは、JavaアプリケーションがOracle Databaseと対話するための下位レベルのJavaインタフェースです。ODBCと同様、JDBCもベンダーに依存しないAPIです。Sun社により定義されるJDBC標準は、java.sqlインタフェースを介して実装されます。

JDBC標準では、個々のプロバイダが独自のJDBCドライバを使用して標準を実装および拡張できます。Oracleでは、クライアント側のプログラミング用に次のJDBCドライバを提供しています。

  • JDBC Thinドライバ

    このPure Javaドライバは、Oracleクライアントがインストールされていないクライアント側にインストールします。これはプラットフォームに依存せず、アプレットおよびアプリケーションの両方で使用できます。

  • JDBC OCIドライバ

    このドライバは、Oracleクライアントがインストールされているクライアント側にインストールします。これはアプリケーションでのみ使用できます。JDBC OCIドライバは、CおよびJavaの両方で記述されており、JDBCコールをOCIコールに変換します。

次のスニペットは、JDBC OCIドライバを使用してStatementオブジェクトを作成し、dual表に問合せを実行するJavaプログラムのスニペットです。

// Create a statement
Statement stmt = conn.createStatement();
 
// Query dual table
ResultSet rset = stmt.executeQuery("SELECT 'Hello World' FROM DUAL");

関連項目:

  • JDBCの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』および『Oracle Database 2日でJava開発者ガイド』を参照してください。

  • 『Oracle Database Gateway for ODBCユーザーズ・ガイド』


グローバリゼーション・サポート

Oracle Databaseグローバリゼーション・サポートを使用すると、ネイティブ言語でデータを格納、処理および取得できます。このように、世界中から同時にアクセスおよび実行できる多言語アプリケーションおよびソフトウェアを開発できます。

グローバル・データベース・アプリケーションを記述する開発者は、次のことを実行する必要があります。

  • Oracle Databaseグローバリゼーション・サポートのアーキテクチャ(各キャラクタ・セット、地域、言語、言語ソート定義の特性など)の理解

  • 中間層プログラミング環境のグローバリゼーション機能(データベースのロケール・モデルとの対話および同期方法など)の理解

  • 異なるオペレーティング・システム、キャラクタ・セット、およびロケール要件で実行されている複数のクライアントを同時にサポートするコードの設計と記述

たとえば、アプリケーションはネイティブ・ユーザーが使用する言語およびロケールのプリファレンスに基づいてユーザー・インタフェースの内容をレンダリングしたり、データを処理する必要がある場合があります。たとえば、アプリケーションは、ユーザーに設定の変更を求めることなく、マルチバイトの漢字データを処理し、該当する地域の形式でメッセージや日付を表示して、7ビットASCIIデータを処理する必要があります。


関連項目:

グローバリゼーションの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

グローバリゼーション・サポート環境

グローバリゼーション・サポート環境には、クライアント・アプリケーションとデータベースが含まれます。言語に依存する処理は、クライアントとサーバー上でパラメータおよび環境変数を設定することによって制御します(クライアントとサーバーは別々の場所に存在する場合もあります)。


注意:

以前のリリースでは、Oracleではグローバリゼーション・サポート機能は各国語サポート(NLS)機能と呼ばれていました。実際、NLSはグローバリゼーション・サポートの一種で、NLSを使用して、各国語を選択し、特定のキャラクタ・セットでデータを格納できます。

Oracle Databaseでは、次の機能に対するグローバリゼーション・サポートを提供しています。

  • ネイティブ言語および地域

  • 日付、時間、数字、および通貨のローカル形式

  • 暦法(グレゴリオ暦、和暦、元号暦、タイ仏教暦など)

  • Unicodeなどの複数のキャラクタ・セット

  • キャラクタ・セマンティクス

キャラクタ・セット

キャラクタ・セットはグローバリゼーション・サポートの主要なコンポーネントであり、コンピュータ画面に文字を表示するときに使用されるコード体系です。アプリケーション開発においては、次の違いが重要です。

  • データベース・キャラクタ・セットによって、データベースで表現される言語が決定します。このキャラクタ・セットは、データベースの作成時に指定します。


    注意:

    データベースを作成した後でキャラクタ・セットを変更すると、一般的に、時間およびリソースの面で大きなコストがかかります。この操作では、データベース全体のエクスポートおよび再インポートによる、すべての文字データの変換が必要になる場合があります。

  • クライアント・キャラクタ・セットは、クライアント・アプリケーションによって入力および表示されるデータに使用されるキャラクタ・セットです。クライアントとデータベースのキャラクタ・セットは異なる場合もあります。

特定の文字グループ(アルファベット文字、表意文字、記号、句読点、制御文字など)をキャラクタ・セットとしてエンコードできます。エンコードされたキャラクタ・セットでは、セット内の各文字について、コード・ポイントまたはエンコード値と呼ばれる一意の数値コードが割り当てられます。グローバル環境では、異なるキャラクタ・セット間でデータの変換が必要になる可能性があるため、このコード・ポイントが重要になります。

コンピュータ業界では、多数のエンコードされたキャラクタ・セットが使用されています。これらのセットでは、使用可能な文字数、使用可能な文字および各文字に割り当てられているコード・ポイントなどが異なります。Oracle Databaseでは、各国の規格、国際規格およびベンダー固有のエンコードされたキャラクタ・セット規格のほとんどすべてをサポートしています。

Oracle Databaseでは、次のクラスのエンコードされたキャラクタ・セットをサポートしています。

  • シングルバイト・キャラクタ・セット

    各文字が占めるバイト数は、1バイトです。7ビット・キャラクタ・セットの例には、US7ASCIIなどがあります。8ビット・キャラクタ・セットの例には、WE8DECなどがあります。

  • マルチバイト・キャラクタ・セット

    1文字が2バイト以上を占めます。一般的に、マルチバイト・キャラクタ・セットは、アジア言語に使用されます。

  • Unicode

    ユニバーサル・エンコードされたキャラクタ・セットでは、1つのキャラクタ・セットで任意の言語の情報を格納できます。Unicodeでは、プラットフォーム、プログラムまたは言語に関係なく、すべての文字に一意のコード値が割り当てられています。


関連項目:

キャラクタ・セットの移行の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

ロケール固有の設定

ロケールとは、システムまたはプログラムが実行されている、言語的および文化的な環境を表します。NLSパラメータは、クライアントとデータベースの両方におけるロケール固有の動作を指定します。データベース・セッションでは、クライアントにかわって文を実行するとき、NLSの設定が使用されます。たとえば、データベースでは、クライアントの地域の書式で3桁区切りを使用します。

一般的に、クライアント・ホストのNLS_LANG環境変数によって、サーバー・セッションとクライアント・アプリケーションの両方のロケールが指定されます。このプロセスは、次のとおりです。

  1. クライアント・アプリケーションは起動すると、環境設定に従ってクライアントのNLS環境を初期化します。

    Oracle Developerアプリケーションの表示形式の設定など、ローカルで実行されるすべてのNLS操作にこれらの設定が使用されます。

  2. クライアントは、データベースに接続すると、NLS_LANGで定義された情報をデータベースに伝達します。

  3. データベース・セッションは、クライアントから伝達された設定に基づいてNLS環境を初期化します。

    クライアントにより設定が指定されていなかった場合、セッションは初期化パラメータ・ファイルの設定を使用します。データベースが初期化パラメータの設定を使用するのは、クライアントがNLS設定をまったく指定しなかった場合のみです。クライアントが一部のNLS設定を指定した場合、残りのNLS設定はデフォルトの設定になります。

クライアント・アプリケーションにかわって開始された各セッションは、他のセッションと同じまたは異なるロケールで実行されます。たとえば、一方のセッションではドイツ語ロケールが使用され、別のセッションではフランス語ロケールが使用される場合があります。また、各セッションで同じまたは異なる言語要件が指定されます。

表19-1に、異なるNLS_LANG設定を使用する2つのクライアントを示します。ユーザーは、各ホスト上でSQL*Plusを起動して同じデータベースにhrとしてログオンし、同時に同じ問合せを実行します。各セッションの結果は、浮動小数点数に関するロケール固有のNLS設定のために異なります。

表19-1 ロケール固有のNLS設定

t クライアント・ホスト1 クライアント・ホスト2

t0

$ export NLS_LANG=American_America.US7ASCII
$ export NLS_LANG=German_Germany.US7ASCII

t1

$ sqlplus /nolog
SQL> CONNECT hr@proddb
Enter password: *******
SQL> SELECT 999/10 FROM DUAL;
 
999/10
----------
99.9
$ sqlplus /nolog
SQL> CONNECT hr@proddb
Enter password: *******
SQL> SELECT 999/10 FROM DUAL;
 
999/10
----------
99,9


関連項目:

NLS設定の詳細は、『Oracle Database 2日でJava開発者ガイド』および『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

Oracle Globalization Development Kit

Oracle Globalization Development Kit(GDK)は、開発プロセスを簡略化し、グローバル環境サポートが必要なインターネット・アプリケーションの開発コストを削減します。GDKには、Java用とPL/SQL用の包括的なプログラミングAPIとコード・サンプルが用意されています。また、グローバル・アプリケーションの構築時に直面する設計、開発および配置に関する数多くの問題の対処方法を解説したドキュメントも用意されています。

GDKは主に、GDK for JavaとGDK for PL/SQLの2つからなります。GDK for Javaは、Javaアプリケーションに対してグローバリゼーション・サポートを提供します。GDK for PL/SQLは、PL/SQLプログラミング環境に対してグローバリゼーション・サポートを提供します。これらの2つの要素で提供される機能は同じではありません。


関連項目:

『Oracle Databaseグローバリゼーション・サポート・ガイド』

非構造化データ

従来のリレーショナル・モデルは、単純な表に格納できる単純な構造化データを処理します。Oracle Databaseでは、標準構成要素に分解できない非構造化データもサポートしています。非構造化データには、テキスト、グラフィック・イメージ、ビデオ・クリップ、サウンド・ウェーブなどが含まれます。

Oracle Databaseには、非構造化コンテンツを処理するためのデータ型が組み込まれています。これらのデータ型は、データベースではシステム固有の型として表示され、SQLを使用して問い合せることができます。

Oracle DatabaseにおけるXMLの概要

Oracle XML DBは、高パフォーマンスのXMLの格納と取得に関連する一連のOracle Databaseテクノロジです。XML DBは、SQLデータ・モデルとXMLデータ・モデルの相互運用が可能な方法でサポートするシステム固有のXMLを提供します。

Oracle XML DBは、アプリケーションで処理されるデータの一部または全部がXMLで表現されているJavaまたはPL/SQLアプリケーションに適しています。たとえば、多数のXML文書を収集、生成、検証および検索する必要があるアプリケーションなどに適しています。

Oracle XML DBでは、次のような多くの機能を提供しています。

  • XML文書をデータベース内で表すことができ、SQLによるアクセスを可能にするシステム固有のXMLTypeデータ型

  • XMLスキーマ、XPath、XQuery、XSLT、DOMなどのXML標準のサポート

  • 高度に構造化されたデータから完全な非構造化データまで、すべての形式のXMLデータをサポートするXMLIndex

例19-1では、XMLType型のorders表を作成します。また、この例では、ホスト・コンピュータ上の物理ディレクトリに対するデータベース内の論理名となるSQLディレクトリ・オブジェクトも作成します。このディレクトリにXMLファイルが格納されます。次に、purchaseOrder.xmlファイルからorders表にXMLコンテンツを挿入します。

例19-1 XMLType

CREATE TABLE orders OF XMLType;
CREATE DIRECTORY xmldir AS path_to_folder_containing_XML_file;
INSERT INTO orders VALUES (XMLType(bfilename('XMLDIR', 'purchaseOrder.xml'),
                                       nls_charset_id('AL32UTF8')));

Oracle XML Developer's Kit(XDK)には、XML文書(ファイルシステム上にあるかデータベース内にあるかは不問)の読取り、操作、変換および表示のための基本ビルディング・ブロックが用意されています。APIおよびツールは、Java、CおよびC++で使用できます。Oracle XDKは本番環境で全面的にサポートされ、業務目的で再配布するためのライセンスが付属しています。


関連項目:

  • 『Oracle XML DB開発者ガイド』

  • 『Oracle XML Developer's Kitプログラマーズ・ガイド』

  • 『Oracle Database XML Java API Reference』


LOBの概要

ラージ・オブジェクト(LOB)データ型を使用すると、非構造化データの大きなブロックを、バイナリ形式または文字形式で格納し、操作できます。LOBを使用すると、個々のデータに対する効率的なランダム・アクセスが可能です。

内部LOB

内部LOBは、データを外部ファイルではなく、データベース自体に格納します。内部LOBは、次のとおりです。

  • テキスト・ファイルまたはXMLファイルなどの大量のテキストをデータベース・キャラクタ・セットで格納するCLOB(文字LOB)

  • Unicodeデータを格納するNCLOB(各国語キャラクタ・セットLOB)

  • 大量のバイナリ情報をビット・ストリームとして格納し、キャラクタ・セットの変換を行わないBLOB(バイナリLOB)

データベースは、他のデータ型とは異なる方法でLOBを格納します。LOB列を作成すると、暗黙的にLOBセグメントLOB索引が作成されます(「ユーザー・セグメントの作成」を参照)。LOBセグメントとLOB索引は常に一緒に格納され、これらを含む表領域は、表を含む表領域と異なる場合があります。


注意:

データベースは、少量のLOBデータを個別のLOBセグメントにではなく、表自体に格納できる場合があります。

LOBセグメントは、データをチャンクと呼ばれる単位に分割して格納します。チャンクは、論理的に連続するデータ・ブロックのセットであり、LOBに割り当てられる最小単位のデータです。表の行には、LOB索引を指すLOBロケータと呼ばれるポインタが格納されます。表に問合せが実行されると、データベースはLOB索引を使用して、LOBチャンクの場所をすばやく特定します。

データベースは、他のデータとは異なる方法で、LOBセグメントの読取り一貫性を管理します(「読取り一貫性とUNDOセグメント」を参照)。UNDOデータを使用して変更を記録するかわりに、データベースはビフォア・イメージをセグメント自体に格納します。トランザクションによってLOBに変更が加えられると、データベースは新しいチャンクを割り当て、古いデータを元の場所に残します。トランザクションがロールバックされると、データベースも古いチャンクを指す索引まで変更をロールバックします。

外部LOB

BFILE(バイナリ・ファイルLOB)は、データベースがオペレーティング・システム内のファイルを指定するポインタを格納するため、外部LOBです。外部データは、読取り専用です。

BFILEは、ディレクトリ・オブジェクトを使用してデータを検索します。使用領域量は、ディレクトリ・オブジェクト名の長さ、およびファイル名の長さによって決まります。

バイナリ・ファイルはデータベース外のファイルのため、BFILEでは内部LOBと同じ読取り一貫性メカニズムを使用できません。ファイルのデータに変更が加えられると、再度同じバイナリ・ファイルから読み込んだ場合に結果が異なることがあります。

SecureFiles

SecureFilesはLOBデータ型の1つであり、Oracle Databaseの利点を保持しながら、従来のファイルシステムと比べ、ファイル・データの配布を高速化するように設計されています。SECUREFILE LOBパラメータを使用すると、通常はハイエンドなファイルシステムに見られる、重複除外、圧縮、暗号化、ジャーナルなどの拡張機能を使用できます。


関連項目:

  • 「Oracleデータ型」

  • LOBデータ型の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。


Oracle Textの概要

Oracle Text(Text)は、Oracle Databaseに統合されている、高速で正確な全テキスト検索テクノロジです。Oracle Textは、ファイルシステム、データベースまたはWeb上に格納されているすべてのドキュメントまたはテキスト形式のコンテンツに索引を付けます。これらのドキュメントは、テキスト形式のコンテンツ、メタデータまたは属性に基づいて検索できます。

Oracle Textには、次の利点があります。

  • Oracle Textを使用すると、テキスト検索と通常のデータベース検索を1つのSQL文にまとめることができます。Oracle Textの索引はデータベースにあり、Oracle Textの問合せはOracle Databaseプロセス内で実行されます。オプティマイザは、どのような問合せについても最善の実行計画を選択でき、テキストと構造化された基準を使用する非定型問合せに最高のパフォーマンスを提供します。

  • Oracle Textは、XMLデータにも使用できます。特に、XMLIndexとOracle Textの索引機能を組み合せることで、XML索引と全テキスト索引の両方の利点を活用できます。

  • Oracle TextのSQL APIにより、単純で直感的な方法でOracle Text索引を作成、メンテナンスしてテキスト検索を実行できます。

ユースケースとして、電子機器を販売するオークション・サイトのカタログ索引を作成する必要があるとします。新しい在庫が毎日追加されます。品物の説明、入札日、価格をともに格納する必要があります。アプリケーションは、複合問合せに対して適切な時間で応答する必要があります。最初に、catalog表を作成し、データを入力します。次に、Oracle Textを使用してCTXCAT索引を作成し、この索引は、SELECT ... WHERE CATSEARCH文のCATSEARCH演算子を使用した問合せが可能です。

図19-4に、catalog表とそのCTXCAT索引、およびCATSEARCH演算子を使用して索引を問い合せているカタログ・アプリケーションとの関係を示します。

図19-4 カタログ問合せアプリケーション

図19-4の説明が続きます
「図19-4 カタログ問合せアプリケーション」の説明


関連項目:

  • 『Oracle Textアプリケーション開発者ガイド』および『Oracle Textリファレンス』

  • XMLデータを対象とした全文検索の実行方法の詳細は、『Oracle XML DB開発者ガイド』を参照してください。


Oracle Multimediaの概要

Oracle Multimediaを使用すると、Oracle Databaseにおいて、イメージ、Digital Imaging and Communications in Medicine(DICOM)規格に準拠した医療画像、オーディオおよびビデオ・データを他の企業情報と統合された方法で格納、管理および取得できます。Oracle Multimediaでは、次の操作を実行するためのオブジェクト型およびメソッドを提供しています。

  • マルチメディア・データからのメタデータおよび属性の抽出

  • アプリケーションによって作成されたメタデータの、イメージおよびDICOMデータへの埋込み

  • Oracle Database、Webサーバー、ファイルシステム、およびその他のサーバーからのマルチメディア・データの取得と管理

  • イメージおよびDICOMデータ上のサムネイル生成などの操作

  • DICOMデータの匿名化

  • DICOMデータがユーザー指定の検証ルールに準拠しているかどうかのチェック


関連項目:

  • 『Oracle Multimediaユーザーズ・ガイド』および『Oracle Multimediaリファレンス』

  • 『Oracle Multimedia DICOM開発者ガイド』および『Oracle Multimedia DICOM Java API Reference』

  • 『Oracle Multimedia Java API Reference』および『Oracle Multimedia Servlets and JSP Java API Reference』


Oracle Spatialの概要

Oracle Spatial(Spatial)にはSQLスキーマおよび関数が用意されており、Oracle Database内にある空間機能の集まりを容易に格納、取得、更新および問合せできます。Oracle Spatialを使用すると、ロケーション対応アプリケーションや地理情報システム(GIS)・アプリケーションのユーザーは、より容易に空間データを管理できます。

空間データの一例は、ロード・マップです。空間データは、オブジェクトの地球上の位置(緯度や経度など)をマップ上に示します。マップがレンダリングされるときには、この空間データを使用してオブジェクトの位置が2次元の紙上に投影されます。通常、この相対的空間データの格納、取得およびレンダリングにはGISが使用されます。空間データがOracle Databaseに格納されている場合は、簡単に操作し、取り出して、他のデータに関連付けることができます。


関連項目:

『Oracle Spatial開発者ガイド』