| Oracle Database 2日で開発者ガイド 11g リリース1(11.1) E05694-03 |
|
この章ではOracle Databaseによるアプリケーション開発について説明します。
この章の内容は次のとおりです。
ユーザーは、Oracleテクノロジ・スタックを使用するアプリケーションのデータベース・コンポーネントの作成、またはメンテナンスの責任があるOracle Database開発者です。この項および次の項の説明では、ユーザーまたは組織内の責任者がマルチユーザー・アプリケーション(2層または複数の層)を構築する方法を確認し、データの整合性のある層のリレーショナル・データベースを使用する利点を理解する必要があります。
データベース開発者として、アプリケーションに必要なデータ・モデルの実装方法、データの整合性のルールの実装方法、およびアプリケーション・データのアクセスおよび操作に対して指定したファンクションの実装方法を知る必要があります。
クライアント・プログラムを介してのみOracle Databaseへのアクセスが可能なこと、およびSQL言語がOracle Databaseに対するクライアント・プログラム・インタフェースであることは確認済です。Oracle Databaseでパッケージされ、開発者用に設計された2つのクライアントを使用して、Oracle Databaseへのアクセス方法を学びます。SQL DeveloperおよびSQL*Plusを使用すると、クライアント・プログラミングすることなくアプリケーション・データベース・コンポーネントのテストおよび作成のために必要なSQL文を発行できます。クライアントなどのプログラミングは、ここでの説明の範囲外になります。
ソフトウェア・エンジニアリングにおいて広く指示されるベスト・プラクティスを簡単に確認するには、ビジネス機能のモデルであるAPIを定義し、実装を隠す必要があります。APIをPL/SQLサブプログラムとして指定でき、それによってOracle Databaseでこのプラクティスがサポートされます。表、索引、制約、トリガー、および表の行を変更およびフェッチする様々なSQL文が実装されます。これらのSQL文をPL/SQLサブプログラムに埋め込むこと、およびOracleスキーマと権限メカニズムを使用することによって、クライアント・プログラムから実装を安全に隠すことができます。多くのOracleの主要なカスタマはこのプラクティスに厳密に従っていて、クライアント・プログラムでは、PL/SQLサブプログラムをコールしたときにのみデータベースにアクセスできます。一部のカスタマはクライアントにRAW SQL SELECT文を発行させることでこのルールを受け入れています。ただし、この文は、データベースに変更を加えるすべてのビジネス機能に対するPL/SQLサブプログラムをコールするために必要です。
ここの一般的な説明では、Oracle Database開発者としての作業に関する章を設定します。
CREATE、ALTER、TRUNCATEおよびDROPを管理するために使用するSQLを知る必要があります。このSQLはデータ定義言語(DDL)と呼ばれます。「データベース・オブジェクトの作成および使用」を参照してください。
INSERT、UPDATE、DELETEおよびMERGEをメンテナンスするために使用するSQLを知る必要があります。このSQLはデータ操作言語(DML)と呼ばれます。「データの問合せおよび操作」を参照してください。
SELECT文および様々な句のSQL言語を知る必要があります。「問合せを使用したデータの取得」を参照してください。
COMMIT、SAVEPOINTおよびROLLBACKを管理するSQL言語およびトランザクションを知る必要があります。「トランザクションの制御」を参照してください。
この項では、Oracle Databaseスキーマについて説明します。
Oracle Databaseには、関連情報をグループ化したスキーマと呼ばれる論理構造が含まれます。ユーザー名とパスワードを使用してデータベースに接続すると、ユーザー名によってスキーマが命名され、スキーマの所有者であることが示されます。スキーマにはデータベースにおけるデータ記憶領域の基本単位である表が含まれています。表を使用して、情報の問合せや更新、あるいは追加データの挿入や削除を実行できます。各表には個別のデータのレコードを表す行が含まれています。表の行は様々なフィールドを表す列で構成されます。
スキーマには、表の他にも非常に便利なオブジェクトが数多く含まれています。索引は表からのデータ取得のパフォーマンスを改善するために作成できるオプションの構造です。索引は、表の1つ以上の列に対して作成され、Oracle Databaseにより自動的に維持されます。「表の作成および使用」を参照してください。
ビジネスのニーズに応じて、別の表の情報を組み合せて一元的に表示するビューを作成できます。ビューは、表および他のビューの情報に依存する可能性があります。「ビューの使用」を参照してください。
表のすべてのレコードが一意である必要があるアプリケーションでは、順序により、各レコードのIDを表す数値列に対する一意の整数番号のシリアル・リストを生成できます。「順序の使用」を参照してください。
シノニムとは、表、ビュー、順序、プロシージャなどの別名です。シノニムはしばしばオブジェクトの所有者をわからなくしたり、SQL文を単純化するなど、セキュリティや利便性の向上に使用されます。「シノニムの使用」を参照してください。
スキーマ・レベル・プロシージャ、ファンクションおよびパッケージは、総称してストアド・プロシージャと呼ばれます。ストアド・プロシージャは、データベースに実際に格納されたコードのブロックです。リレーショナル・データベース・システムにアクセスするクライアント・アプリケーションからコール可能です。「ストアド・プロシージャの開発および使用」を参照してください。
トリガーは、特定の表またはビューで指定したイベントが発生した際にデータベースによって自動的に実行されるプロシージャ・コードです。トリガーは、特定のデータへのアクセス、ロギングの実行またはデータの監視を制限できます。「トリガーの使用」を参照してください。
hrスキーマはサンプル・スキーマの1つで、Oracle Databaseの一部としてインストールされます。hrサンプル・スキーマには従業員、部門、事業所、職歴に関する情報および他の関連情報が含まれています。すべてのスキーマと同様、hrスキーマにも表、ビュー、索引、パッケージ、プロシージャ、ファンクション、その他すべてのOracle Databaseスキーマの属性があります。
hrスキーマを使用および拡張して、Oracle Databaseでのアプリケーション開発を習得します。
この項では、データに直接アクセスできる2つの開発言語(SQLおよびPL/SQL)、2つの開発ツール(SQL DeveloperおよびSQL*Plus)、サンプル・データ・セット(hrスキーマ)およびOracle Databaseのインスタンスへの接続方法について説明します。
広義のコンピュータ言語には何をする必要があるかを説明する宣言型言語と、どのように行うかを説明する命令型言語の2グループに分けられます。データベースに依存しない言語である構造化問合せ言語、つまりSQLはすでに熟知しているでしょう。SQLはセット・ベースの高度な宣言型言語で、目的のデータの条件を記述することで問題を説明します。SQL文によって、表を問い合せてデータを表示したり、オブジェクトを作成および修正したり、様々な管理タスクを実行できます。SQLコマンドを発行すると、SQL言語コンパイラが自動的にプロシージャを生成し、データベースにアクセスして目的のタスクを実行できます。
一方、C、C++、Javaなどの命令型言語は必要なデータを見つけることで、問題の解決方法を指定します。つまり計算を、プログラムの状態の変更や、より広範囲な問題の解決を行う文として記述します。
手続き型言語のSQL、つまりPL/SQLは、オラクル社が機能を拡張したSQLです。条件付き制御や反復フローのような手続き型の要素を追加することで、宣言型プログラム制御と命令型プログラム制御のギャップが埋められています。SQLと同様に、PL/SQLにもリレーショナル・データベース・ドメインの埋込み型があります。PL/SQLにより、定数および変数の宣言、プロシージャとファンクションの定義、コレクション・タイプおよびオブジェクト・タイプの使用、ランタイム・エラーの通知などを実行できます。また、Oracleのプログラム・インタフェースで記述されたアプリケーションで再利用することを目的としてデータベースに格納できるファンクション、パッケージ、プロシージャおよびトリガーを作成できます。
PL/SQLの詳細は、次のOracle Technology NetworkのPL/SQLのサイトを参照してください。
http://www.oracle.com/technology/tech/pl_sql/
|
参照:
|
SQL Developerは、Oracle Databaseのインスタンスにアクセスするためのグラフィカル・ユーザー・インタフェースです。SQL Developerは、SQLおよびPL/SQL言語の開発をサポートします。Oracle Databaseのデフォルトのインストールで使用可能です。ナビゲーション階層およびSQLワークシートを介してSQL Developerを使用します。
SQL Developerを実行する前に、Java1.5.0がインストールされていることを確認します。コマンド・プロンプトで次のコマンドを入力します。
java -version
次のような出力が表示されます。
java version "1.5.0_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05) Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
Windowsの場合:
たとえば、C:¥jdk1.5.0¥bin¥java.exeです。
このパスを指定する必要があるのは、SQL Developerの初回起動時のみです。
スプラッシュ画面が表示された後に、SQL Developerが起動します。
SQL Developerの詳細は、次のOracle Technology NetworkのSQL Developerのサイトを参照してください。
http://www.oracle.com/technology/products/database/sql_developer/index.html
SQL*PlusはOracle Databaseと一緒にインストールされます。SQL*PlusはOracle Databaseにアクセスするためのコマンドライン・ユーザー・インタフェースを持っています。また、SQL Developer内でもSQL*Plusにアクセスできます。
cmdと入力します。「OK」をクリックします。cmd.exeウィンドウのc:>¥プロンプトで、sqlplusを入力しキーボードの[Enter]を押します。SQL*Plusが起動すると、データベースへの接続を認証するように要求されます。
画面が次のように表示されます。
C:¥>sqlplus SQL*Plus: Release 11.1.0.1.0 - Production on Tue April 3 10:10:11 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Enter user-name:
画面が次のように表示されます。
Enter password:
データベース・インスタンスに接続され、SQLプロンプトが表示されます。
画面が次のように表示されます。
Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.1.0 - Production With the Partitioning, OLAP and Data Mining options
これでSQLコマンド・プロンプトを使用できます。
exitコマンドを入力します。Oracle Databaseインスタンスは停止しないように注意してください。
SQL> exit
画面が次のように表示されます。
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.1.0 With the Partitioning, OLAP and Data Mining options
Oracle Databaseではユーザーとユーザーが接続するスキーマの名前は同じです。この項ではOracle Databaseに同梱されているサンプル・スキーマの1つ、hrスキーマへの接続の作成方法を示します。まず、hrアカウントをロック解除します。
この項の内容は次のとおりです。
デフォルトでは、hrスキーマがインストールされた際にロックされ、パスワードが期限切れになります。hrスキーマを使用してOracle Databaseに接続する前に、管理者権限を持つユーザーはhrアカウントをロック解除し、パスワードをリセットする必要があります。
次の手順は、hrアカウントのロック解除の方法およびパスワード変更の方法を説明します。
SYSTEMなどの管理者権限を持つユーザーとしてログインします。「SQL*Plusの概要」を参照してください。
安全なパスワードを選択します。パスワード選択のガイドラインに関しては『Oracle Databaseセキュリティ・ガイド』を参照してください。
SQL> ALTER USER hr ACCOUNT UNLOCK IDENTIFIED BY password;
hrアカウントがロック解除され、パスワードが変更されたことが確認されます。
User altered
hrアカウントがロック解除される際、「ユーザー・アカウントのロック解除」で設定した新しいパスワードを使用して新しいhr接続を作成できます。
cmd.exeウィンドウのc:>¥プロンプトで、sqlplusを入力し、キーボードの[Enter]を押します。
hrを入力した後にパスワードを入力します。hrスキーマを介してデータベース・インスタンスに接続されます。
接続およびコマンド・ウィンドウ両方をクローズできます。
hrアカウントがロック解除される際、Oracle Database内のhrスキーマへのアクセスに使用できます。この項では、Oracle SQL Developerを使用して作業を行います。
hr_connと入力します。
hrと入力します。
hrアカウントのロック解除後にシステム管理者が作成したパスワードを入力します。パスワード・テキストはマスクされていることに注意してください。
「New/Select Database Connection」ウィンドウの「Oracle」タブで、次の情報を入力します。
localhostと入力します。
1521と入力します。
orclと入力します。
「New/Select Database Connection」ウィンドウ下部で、「Test」をクリックします。
新規のhr_conn接続で「Oracle SQL Developer」ウィンドウが表示されます。
hrスキーマへの接続を正常に確立しました。
この項では、独自のアプリケーション開発に使用できる他の開発環境および開発言語について説明します。
Oracle Data Provider for .NET(ODP.NET)は、Microsoft .NET Frameworkクラス・ライブラリを使用および拡張して、.NETデータを提供します。ODP.NETは.NET Frameworkを使用してプロバイダ固有の機能とデータ型を公開し、独自のOracle Database APIを使用してOracle Databaseの強力な機能を.NETのアプリケーションに提供します。
Oracle Database Extensions for .NETは、Oracle Database用Microsoft Common Language Runtime(CLR)ホスト、ODP.NETクラスを介したデータ・アクセスおよびOracle Deployment Wizard for .NETを提供します。CLRはOracle Databaseサーバーの外部プロセスとして実行されるため、この統合により.NETストアド・プロシージャおよびファンクションをMicrosoft Windows XP、2000および2003のOracle Database上で実行できます。これらのストアド・プロシージャおよびファンクションは、C#やVB.NETなど、任意の.NET準拠言語を使用して記述でき、PL/SQLまたはJavaストアド・プロシージャと同様にOracle Deployment Wizard for .NETを使用してOracle Databaseにデプロイできます。
Oracle Developer ToolsはVisual Studio .NETを介してOracle Databaseの機能にアクセスするためのグラフィカル・ユーザー・インタフェースを提供します。Oracle Developer Toolsにはデータベース・スキーマを参照するためのOracle Explorer、スキーマ・オブジェクトを作成および変更するためのウィザードとデザイナ、.NETデザイン・フォーム上にスキーマ・オブジェクトをドラッグしてコードを自動生成できる機能、および統合された状況依存ヘルプを使用したPL/SQLエディタなどの機能が含まれています。さらにOracle Data Windowを使用してデータベースの定型作業やストアド・プロシージャのテストをVisual Studio環境で実行できる他、「SQL問合せ」ウィンドウを使用してSQL文やスクリプトを実行できます。
Oracle Databaseによる.NETアプリケーション開発の概要は、『Oracle Database 2日で.Net開発者ガイド』を参照してください。
Oracle Databaseによる.NETアプリケーション開発に関するその他のドキュメントには、『Oracle Data Provider for .NET開発者ガイド』および『Oracle Database Extensions for .Net開発者ガイド』があります。
Oracle Databaseの.NET API、ODP.NET、Oracle Developer Tools、ダウンロード、チュートリアルおよび関連情報の詳細は、次のOracle Technology Networkの.NETサイトを参照してください。
http://www.oracle.com/technology/tech/dotnet/
Hypertext Preprocessor、いわゆるPHPは、ウェブ・アプリケーションを迅速に開発するための、強力なインタプリタ型のサーバー側スクリプト言語です。PHPはオープン・ソース言語であり、BSD型ライセンスでデプロイされています。PHPはOracle Databaseのアクセス要求を直接HTMLページに組み込めるよう設計されています。
Oracle DatabaseによるPHPアプリケーション開発の概要は、『Oracle Database 2日でPHP開発者ガイド』を参照してください。
Oracle DatabaseのPHP APIおよび関連情報の詳細は、次のOracle Technology NetworkのPHPのサイトを参照してください。
http://www.oracle.com/technology/tech/php/
Oracle Application Express、いわゆるAPEXは、プログラミングの経験が浅い開発者でも、短期間で確実かつスケーラブルなWebアプリケーションを開発およびデプロイできるツールです。Application Builderが組み込まれており、HTMLのインタフェースや、表またはストアド・プロシージャを使用するアプリケーションを、タブやボタン、ハイパーテキスト・リンクを介してリンクされたページに組み立てます。APEXの詳細は、『Oracle Database 2日でApplication Express開発者ガイド』を参照してください。
APEXおよび関連情報の詳細は、次のOracle Technology NetworkのAPEXのサイトを参照してください。
http://www.oracle.com/technology/products/database/application_express/
Oracle Call Interface(OCI)は、C言語のアプリケーションからOracle Databaseに直接アクセスするための、独自のC言語のAPIです。OCIの詳細は『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。
Oracle C++ Call Interface(OCCI)は、C++アプリケーションからOracle Databaseに直接アクセスするための、独自のC++言語のAPIです。OCIと非常に似ており、リレーショナルおよびオブジェクト指向型のプログラミング・パラダイムをサポートしています。C++の詳細は、『Oracle C++ Call Interfaceプログラマーズ・ガイド』を参照してください。
OCIおよびOCCIソフトウェア開発キットは、Oracle Instant Clientの一部としてインストールでき、標準のOracleクライアントをインストールしたりORACLE_HOMEを持つことなくアプリケーションを実行できます。アプリケーションは修正せずに使用でき、ディスク領域の使用を大幅に抑えることができます。Oracle Instant Clientは、次のOracle Technology NetworkのOracle Instant Clientのサイトから利用できます。
http://www.oracle.com/technology/tech/oci/instantclient/
Oracle DatabaseのOCIおよび関連情報の詳細は、次のOracle Technology NetworkのOCIのサイトを参照してください。
http://www.oracle.com/technology/tech/oci/
Oracle DatabaseのOCCIおよび関連情報の詳細は、次のOracle Technology NetworkのOCCIのサイトを参照してください。
http://www.oracle.com/technology/tech/oci/occi/
Oracle Java Database Connectivity(JDBC)は、JavaでSQL文をOracle Databaseのようなオブジェクト・リレーショナル・データベースに送ることができるようにするAPIです。Oracle DatabaseのJDBCは、JDBC 3.0およびJDBC RowSet(JSR-114)規格、XAおよび非XA接続に対応した先進の接続キャッシュ、SQLおよびPL/SQLデータ型のJavaへの公開、SQLデータへの迅速なアクセスを完全にサポートします。
OCIおよびOCCIと同様に、JDBCはOracle Instant Client Installationの一部です。これは、次のOracle Technology NetworkのInstant Clientのサイトから利用できます。
http://www.oracle.com/technology/tech/oci/instantclient/
JDBC APIの詳細は、次のSun社のDeveloper Networkを参照してください。
http://java.sun.com/javase/technologies/database/
Oracle DatabaseJDBC API、ドライバ、サポートの有無の通知および同様の情報の詳細は、次のOracle Technology Networkを参照してください。
http://www.oracle.com/technology/tech/java/sqlj_jdbc/
Javaを使用してOracle Databaseのデータにアクセスおよびデータを修正する方法の概要は、『Oracle Database 2日でJava開発者ガイド』を参照してください。
Open Database Connectivity(ODBC)は、データベースにアクセスするためのAPIのセットで、Oracle Database上でSQL文を実行します。ODBCドライバを使用するアプリケーションは、スプレッドシートやカンマ区切りファイルなど、不均一なデータ・ソースにアクセスできます。
Oracle ODBC DriverはODBC 3.51仕様に準拠します。すべてのコアAPIやLevel 1およびLevel 2のサブセットをサポートしています。Microsoft社はWindowsプラットフォーム用のドライバ・マネージャ・コンポーネントを提供しています。Oracle DatabaseのUNIXプラットフォーム用ドライバは、次のOracle Technology NetworkのODBCのサイトから利用できます。
http://www.oracle.com/technology/tech/windows/odbc/
unixODBCのスタンダードおよび最新のドライバ・マネージャの詳細は、次のunixODBCのサイトを参照してください。
http://www.unixodbc.org/
WindowsのOracle ODBCドライバの使用方法は、『Oracle Services for Microsoft Transaction Server開発者ガイド』を参照してください。
Linux上でのOracle ODBCドライバの使用方法は、Oracleデータベースの管理者リファレンスを参照してください。
OCI、OCCIおよびJDBCと同様に、ODBCはOracle Instant Client Installationの一部です。これは、次のOracle Technology NetworkのInstant Clientのサイトから利用できます。
http://www.oracle.com/technology/tech/oci/instantclient/
|
![]() Copyright © 2005, 2008, Oracle Corporation. All Rights Reserved. |
|