Oracle® Database

Extensions for .NET開発者ガイド

12c リリース1 (12.1) for Microsoft Windows

B72978-02(原本部品番号:E18596-03)

2014年9月

Oracle Database Extensions for .NET開発者ガイド 12c リリース1 (12.1) for Microsoft Windows

B72978-02

Copyright © 1996, 2014, Oracle and/or its affiliates.All rights reserved.

原本著者: Janis Greenberg

協力者: Kiminari Akiyama、Neeraj Gupta、Shailendra Jain、Chithra Ramamurthy、Gnanaprakash Rathinam、Christian Shay、Subramanian Venkatraman

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- サンプル・コードのパスワード

- 表記規則

Oracle Database Extensions for .NET開発者ガイドのこのリリースでの変更点

- Oracle Database 12c リリース1 (12.1)の変更点

1 Oracle Database Extensions for .NETの概要

- Oracle Database Extensions for .NETの概要

- Oracle Database Extensions for .NETのアーキテクチャ

- Oracle CLRホスト

- 外部プロセス

- 専用エージェント・アーキテクチャ

- マルチスレッド・エージェント・アーキテクチャ

- Oracle Data Provider for .NET

- Oracle Developer Tools for Visual Studio

- Oracle Deployment Wizard for .NET

2 インストールおよび構成

- システム要件

- .NETストアド・プロシージャおよび機能の要件

- インストール

- インストールおよび最初の使用

- Oracle CLRサービスおよびOracleホーム・ユーザー・アカウント

- OraClrAgentサービスを作成および実行するためのOraClrCtl Utilityの使用

- Windowsサービスを使用したExtprocエージェントの構成

- OraClrAgntサービス・パラメータ

- パフォーマンスのためのOraClrAgntのチューニング

- インストール後のファイルの場所

- リスナーおよびtnsnamesファイル

- Oracle Database 11.2からOracle Database 12.1への.NETストアド・プロシージャの移行

- .NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行

- コード変更の必要性の判断

- 移行方法

- ODP.NET for .NET 1.xとODP.NET for .NET 2.0以上の間のコードの非互換性の処理

- Oracle Database Extensions for .NETリリース1.xと2.0以上の間のコードの非互換性の処理

- ODP.NET for .NET 2.0 (以上)を使用した.NET 1.xストアド・プロシージャの再コンパイルおよび再デプロイ

- ODP.NET for .NET 2.0以上を使用した.NET 1.xストアド・プロシージャの構成

- Oracle Database Extensions for .NETレジストリ・オプション

- .NETアセンブリの簡易再デプロイのアンロード

- NULL可能ODP.NET接続型の後方互換性

- .NETランタイム・バージョンの選択

- デバッグ・トレース

- TraceOption

- TraceFileName

- TraceLevel

- 未処理の例外

- extproc.exe構成ファイル

3 Visual Studioによる開発とデプロイ

- ステップ1: ストアド・プロシージャまたはファンクションの開発とアセンブリへの組込み

- ステップ2: Oracle Deployment Wizard for .NETの実行

- ステップ3: デプロイするプロシージャまたはファンクションとセキュリティ・レベルの選択

- ステップ4: 適切なパラメータ型マッピングの判別

- ステップ5: プロシージャまたはファンクションのデプロイ

- ステップ6: プロシージャまたはファンクションのテスト

- ステップ7: プロシージャまたはファンクションのデバッグ

4 .NETストアド・ファンクションの開発およびデプロイのデモ

- .NETストアド・ファンクション・デモの概要

- ステップ1: GetDeptNoファンクションの作成とアセンブリへの組込み

- ステップ2: Oracle Deployment Wizard for .NETの起動

- ステップ3: デプロイするファンクションの選択

- ステップ4: 適切なパラメータ型マッピングの判別

- ステップ5: Oracleデータベースへのファンクションのデプロイ

- ステップ6: ファンクションのテスト

- Oracle Developer Tools for Visual Studioからの起動

- ODP.NETクライアントからのコール

- SQL*Plusからのコール

A データ型変換

B 一般的なエラーのトラブルシューティング

用語集

索引

はじめに

このドキュメントでは、Windows 2003、Windows 2000およびWindows XPプロフェッショナルの各オペレーティング・システムにインストールされたOracle Database for Windowsの機能を説明します。

このガイドは、Oracleデータベースに対する共通言語ランタイム(CLR)ホストおよびOracle Data Provider for .NET(ODP.NET)クラスからのデータ・アクセスを提供するOracle Database Extensions for .NETについて説明します。

「はじめに」では、次の項目について説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- サンプル・コードのパスワード

- 表記規則

対象読者

Oracle Database Extensions for .NET開発者ガイドは、Oracle Database Extensions for .NETを使用してOracleデータベースにアクセスするためのアプリケーションを開発するプログラマを対象としています。また、このドキュメントは、システム・アナリスト、プロジェクト・マネージャ、およびデータベース・アプリケーションの開発に関心のあるその他の読者にも役立ちます。

このドキュメントの使用にあたっては、Microsoft .NET FrameworkクラスおよびADO.NETに習熟し、Microsoft C#、Visual Basic .NETまたはその他の.NET言語を使用したアプリケーション・プログラミングの経験と知識を持っている必要があります。

ユーザーは、リレーショナル・データベース・システム内の情報にアクセスするため、Structured Query Language(SQL)の使用方法も熟知している必要があります。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

Oracleサポート・サービスでは、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

関連ドキュメント

詳細は、次のOracleドキュメントを参照してください。

- Oracle Developer Tools for Visual Studioヘルプ

- 『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』

- 『Oracle Database SQL言語リファレンス』

- 『Oracle Databaseインストレーション・ガイドfor Microsoft Windows』

- 『Oracle Databaseリリース・ノートfor Microsoft Windows』

- 『Oracle Databaseプラットフォーム・ガイドfor Microsoft Windows』

- 『Oracle Database新機能ガイド』

- 『Oracle Database Net Servicesリファレンス』

このドキュメントでは、サンプル・スキーマを例として多用しています。サンプル・スキーマは、Oracle Databaseのインストール時に「基本インストール」オプションを選択した場合に、デフォルトでインストールされています。Oracle Databaseのサンプル・スキーマが作成された方法および使用方法に関する情報については、Oracle Databaseサンプル・スキーマを参照してください。

リリース・ノート、インストール関連ドキュメント、ホワイト・ペーパーまたはその他の関連ドキュメントは、OTN(Oracle Technology Network)から、無償でダウンロードできます。OTN-Jを使用するには、オンラインでの登録が必要です。登録は、次のWebサイトから無償で行えます。

http://www.oracle.com/technetwork/index.html

すでにOTNのユーザー名およびパスワードを取得している場合は、次のURLでOTN Webサイトのドキュメントのセクションに直接接続できます。

http://www.oracle.com/technetwork/documentation/index.html

コード例のパスワード

この製品の例示を単純化したため、サンプル・コードでは、デプロイされたシステムで通常使用されるパスワード管理技術は実行されません。本番環境では、Oracleデータベースのパスワード管理ガイドラインに従い、サンプル・アカウントを無効にしてください。パスワード管理ガイドラインおよびその他のセキュリティに関する推奨事項については、Oracle Databaseセキュリティ・ガイドを参照してください。

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ドキュメントのタイトル、強調またはユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

Oracle Database Extensions for .NET開発者ガイドのこのリリースでの変更

この章の内容は次のとおりです。

- Oracle Database 12c リリース1 (12.1)の変更点

Oracle Database 12c リリース1 (12.1)での変更点

Oracle Database 12cリリース1 (12.1)のOracle Database Extensions for .NET開発者ガイドでは、次の点が変更されました。

新機能

このリリースの新機能は次のとおりです。

- 現在、Oracle CLRサービスは、データベースのインストール時に定義されるより権限の低いユーザーの可能性があるOracleホーム・ユーザーとして実行されます。これらのサービスは、インストーラによって自動的に作成されなくなりました。かわりに、新しいユーティリティであるOraClrCtl.exeを使用して作成します。

関連項目:
「Oracle CLRサービスおよびOracleホーム・ユーザー・アカウント」

1 Oracle Database Extensions for .NETの概要

この章では、Oracle Database for Microsoft Windowsで.NETストアド・プロシージャまたはファンクションを作成して実行できるようにするOracle Database Extensions for .NETの概要について説明します。

この章の内容は次のとおりです。

- Oracle Database Extensions for .NETの概要

- Oracle Database Extensions for .NETのアーキテクチャ

- Oracle Data Provider for .NET

- Oracle Developer Tools for Visual Studio

- Oracle Deployment Wizard for .NET

Oracle Database Extensions for .NETの概要

Oracle Database Extensions for .NETには、次の機能が用意されています。

- Oracleデータベース用共通言語ランタイム(CLR)ホスト

- Oracle Data Provider for .NETクラスを介したデータ・アクセス

- Oracle Deployment Wizard for Visual Studio .NET

Oracle Databaseは、同じコンピュータ上のOracleデータベース・プロセスの外にある外部プロセス内で、Microsoft Common Language Runtime(CLR)を管理します。Oracle DatabaseとMicrosoft Common Language Runtime (CLR)との統合により、アプリケーションではサポートされているMicrosoft Windowオペレーティング・システム上のOracle Databaseで.NETストアド・プロシージャまたはファンクションを実行できます。

アプリケーション開発者は、C#やVB.NETなど、任意の.NET準拠言語を使用してストアド・プロシージャおよびファンクションを記述し、これらの.NETストアド・プロシージャを他のPL/SQLまたはJavaストアド・プロシージャと同様にデータベースで使用できます。.NETストアド・プロシージャは、PL/SQLパッケージ、プロシージャ、ファンクションおよびSQL文からのトリガー、またはPL/SQLプロシージャやファンクションをコールできる場所ならどこからでもコールされます。

アプリケーション開発者は、通常はMicrosoft Visual Studioを使用して.NETプロシージャまたはファンクションを.NETアセンブリに組み込みます。Oracle Data Provider for .NETは、データ・アクセス用の.NETストアド・プロシージャおよびファンクションで使用されます。.NETプロシージャおよびファンクションを.NETアセンブリに組み込んだ後、開発者はOracle Developer Tools for Visual StudioのコンポーネントであるOracle Deployment Wizard for .NETを使用して、Oracleデータベースにデプロイします。

.NETストアド・プロシージャまたはファンクションは、PL/SQLラッパーが生成されているため、コール元にはPL/SQLストアド・プロシージャまたはファンクションとして表示されます。ユーザーは、このPL/SQLラッパーを介して.NETストアド・プロシージャまたはファンクションをコールします。Oracleデータ型と.NETデータ型の間に可能なマッピングはOracle Deployment Wizard for .NETにより決定されますが、ユーザーがオーバーライドできます。このマッピングは、PL/SQLラッパーによりシームレスに処理されます。

Oracle Database Extensions for .NETのアーキテクチャ

このアーキテクチャ・ダイアグラムは、クライアント・アプリケーションと2つのプロセス領域(Oracleプロセス領域および外部プロセス領域)を示しています。

Oracleプロセス領域にはOracleデータベース・インスタンスが含まれており、PL/SQLラッパーを管理します。

外部プロセス領域にはOracle CLRホストが含まれており、そこで.NETストアド・プロシージャまたはファンクションが実行されます。

Oracle CLRホスト

Oracle CLRホストは、Oracle Database Extensions for .NETインストールの一部としてインストールされ、extprocプロセスで実行されます。extprocプロセスによりOracle CLRホストがロードされ、Oracle CLRホストによりMicrosoft Common Language Runtime(CLR)のインスタンスがロードされ、ラップされているPL/SQLプロシージャ用のインタフェースが提供されます。これらの仕組みは、ユーザーには表示されません。ユーザーにとっては、単にアプリケーションが他のPL/SQLストアド・プロシージャまたはファンクションをコールしているようにみえます。

注意:
Microsoft .NET Frameworkをデータベースと同じコンピュータにインストールしておく必要があります。

外部プロセス

.NETストアド・プロシージャまたはファンクションは、Oracleデータベースの外部プロセスで管理されます。この外部プロセスは、extprocという異機種間サービス・エージェント、外部プロシージャ・エージェントまたは外部プロセスです。このマニュアルでは、extprocプロセスまたはextprocエージェントという用語を使用します。

関連項目:

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

extprocプロセスは、次のアーキテクチャをサポートします。

- 専用エージェント・アーキテクチャ

- マルチスレッド・エージェント・アーキテクチャ

専用エージェント・アーキテクチャ

専用(シングルスレッド)エージェント・アーキテクチャでは、extprocプロセスはユーザー・セッションごとに起動されます。ユーザー・セッションの終了時にプロセスが終了します。このアーキテクチャでは、ユーザー・セッションごとに新規のextprocプロセスを起動して停止する必要があるため、必要以上に大量のシステム・リソースを消費する可能性があります。したがって、専用エージェント・アーキテクチャは、システム・リソースとランタイム効率の点でパフォーマンスが十分であるとは言えません。

マルチスレッド・エージェント・アーキテクチャ

マルチスレッドextprocプロセスでは、共有スレッドのプールが使用されます。ユーザー・セッションから要求されたタスクはキューに置かれ、最初に使用可能なスレッドにより取り出されます。

マルチスレッド・エージェント・アーキテクチャでは、専用アーキテクチャよりも効率的にシステム・リソースを使用できます。

マルチスレッドextprocプロセスは、システム識別子(SID)ごとに個別に起動する必要があります。システムで実行中の各TNSリスナーは、一連のSIDについて着信接続要求をリスニングします。着信Oracle Net接続文字列内のSIDがリスナーのリスニング対象であれば、そのリスナーにより接続が処理されます。そのSIDに対してマルチスレッド・プロセスが起動されている場合、リスナーはそのプロセスに要求を渡します。

関連項目:

- 『Oracle Database開発ガイド』

- 『Oracle Database管理者ガイド』

Real Application Clusters(RAC)および外部プロセス

Oracleマルチスレッドextprocプロセスは、Oracleリスナーと緊密に連結されています。したがって、Real Application Clusters(RAC)環境の各ノードでは、そのノード上のリスナーにOracleマルチスレッドextprocプロセスが関連付けられています。

複数データベース・インスタンスおよび外部プロセス

1つのリスナーが複数のデータベース・インスタンス間で共有されている場合は、1つのOracleホームに関連付けられている複数のデータベース・インスタンスで1つのOracleマルチスレッドextprocプロセスが使用されます。

Oracle Data Provider for .NET

Oracle Data Provider for .NETは、任意のクライアント・アプリケーションからOracleデータベースへのデータ・アクセスを提供します。Oracle Data Provider for .NETは、Oracle Technology Network(OTN)から無償でダウンロードできます。

関連項目:
ODP.NETクラスの詳細は、『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)を参照してください。

Oracle Developer Tools for Visual Studio

Oracle Developer Tools for Visual Studioは、Visual Studio開発環境と緊密に統合されているアプリケーション・ツール・セットです。Oracle Developer Toolsを使用すると、開発者は表の作成、ストアド・プロシージャの編集およびOracle Databaseでのデータ表示など、多様なアプリケーション開発タスクを実行できます。Oracle Developer Tools for Visual Studioは、Oracle Technology Network(OTN)から無償でダウンロードできます。

関連項目:
Oracle Developer Tools for Visual Studioヘルプ

Oracle Deployment Wizard for .NET

Oracle Deployment Wizard for .NETは、Microsoft Visual Studioと統合されたグラフィカル・ツールで、任意の.NETプロシージャまたはファンクションを簡単にOracleデータベースにデプロイできます。これは、Oracle Developer Tools for Visual Studioの一部としてインストールされます。

関連項目:
詳細は、Oracle Developer Tools for Visual Studioのインストールにより使用できるOracle Developer Tools for Visual Studio動的ヘルプを参照してください。

2 インストールおよび構成

このトピックでは、Oracle Database Extensions for .NETのインストール、システム要件およびファイルの場所を説明します。

この章の内容は次のとおりです。

- システム要件

- .NETストアド・プロシージャおよび機能の要件

- インストール

- Windowsサービスを使用したExtprocエージェントの構成

- インストール後のファイルの場所

- リスナーおよびtnsnamesファイル

- Oracle Database 11.2からOracle Database 12.1への.NETストアド・プロシージャの移行

- .NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行

- Oracle Database Extensions for .NETレジストリ・オプション

- 未処理の例外

システム要件

Oracle Database Extensions for .NETの各リリースには、それぞれ固有のバージョン要件があります。次のシステム要件は、Oracle Database Extensions for .NETリリース 12.1にのみ適用されます。別のバージョンを使用する場合は、そのバージョン固有のドキュメントを参照してください。

- Windows上のOracle Database 12.1。

注意:
Oracle Database Extensions for .NETは、Windowsプラットフォームでのみサポートされます。

- Microsoft .NET Framework

- Oracle Database Extensions for .NET Framework 2.0は、Microsoft .NET Framework 2.0、3.0、3.5、4、4.5および.NET Framework 4 Client Profileでのみサポートされます。

- Oracle Database Extensions for .NET Framework 4は、Microsoft .NET Framework 4、4.5および.NET Framework 4 Client Profileでのみサポートされます。

注意:
Microsoft Framework 1.xは、Oracle Database Extensions for .NETリリース11.1.0.7.20からはサポートされていません。.NET Framework 1.xを必要とするストアド・プロシージャを持っている場合、このリリースで機能するよう、特別な手順をいくつか行う必要があります。詳細は、「.NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行」を参照してください。

- Oracle Data Provider for .NETリリース 12.1以上(ストアド・プロシージャでのデータ・アクセスが必要な場合)。

- Oracle Developer Tools for Visual Studio 11.2以上は、.NETストアド・プロシージャのデプロイに必要です。

注意:
Oracle Developer Tools for Visual Studioは、Oracleデータベースではリリースされません。OTNのOracle .NET Developer Centerから取得できます。

.NETストアド・プロシージャおよび機能の要件

.NETストアド・プロシージャまたはファンクションは次の要件を満たす必要があります。

- public staticメソッドが宣言されていること。

- コンストラクタまたはデストラクタでないこと。

- Oracleネイティブ・データベース・タイプと互換性のあるパラメータ・タイプの使用。

インストール

この項では、Oracle Database Extensions for .NETのインストールの結果について説明します。

内容は次のとおりです。

- インストールおよび最初の使用

- インストール後のファイルの場所

- Oracle CLRサービスおよびOracleホーム・ユーザー・アカウント

- OraClrAgentサービスを作成および実行するためのOraClrCtl Utilityの使用

インストールおよび最初の使用

Oracle Databaseの以前のリリースでは、Oracle Database Extensions for .NETでカスタム・インストールが必要でした。Oracle Database 12c以降、Oracle Database Extensions for .NETは常にインストールされますが、有効にはなっておらず、Windowsサービスは作成されません。

Oracle Database Extensions for .NETをはじめて使用する前に、次のことを行います。

1. Oracle Database 12cをインストールして、インストーラでのデータベースの作成を許可するか、またはデータベース・ソフトウェアのみをインストールし、Database Configuration Assistantを使用して、後でデータベースを作成します。

2. インストールとデータベース作成の後、次のように実行して、Oracle Database Extensions for .NETを有効にします。

chopt enable ode_net

関連項目:
『Oracle Databaseインストレーション・ガイドfor Microsoft Windows』

3. 次のように実行して、Oracle Database Extensions for .NETのWindowsサービスを作成します。

oraclrctl -new

関連項目:
「OraClrAgentサービスを作成および実行するためのOraClrCtl Utilityの使用」

Oracle CLRサービスおよびOracleホーム・ユーザー・アカウント

Oracle Database 12c以降、Oracle CLRサービスはOracleホーム・ユーザーとして実行されます。現在、データベース・インストールでは、ユーザーに対してインストール時に、Oracleホーム・ユーザー・アカウント(このアカウントを使用して様々なOracleサービスを実行する)を指定するための方法が提供されています。この権限の付与されていないアカウントには、ローカル・ユーザーまたは管理者権限のないドメイン・ユーザーを指定できます。

関連項目:
『Oracle Databaseプラットフォーム・ガイドfor Microsoft Windows』

Oracle Databaseの以前のリリースでは、これらのCLRサービスは、インストーラによって自動的に作成されました。現在これらは、インストール後にOraClrCtl.exeユーティリティを使用して手動で作成します。

データベースのインストールではOracle CLRサービスは作成されませんが、Oracle Database Extensions for .NETが適切に動作するために、データベースで必要な構成を行います。次の情報が含まれます。

- extprocに対してlistener.oraエントリを作成。

- ORACLE_BASE\\ORACLE_HOME\binの下にclrフォルダを作成。

- 「OraClrAgentサービスを作成および実行するためのOraClrCtl Utilityの使用」に記載されているOraClrCtl.exeユーティリティをインストール。

OraClrAgentサービスを作成および実行するためのOraClrCtl Utilityの使用

OraClrCtl.exeユーティリティは、ORACLE_BASE\\ORACLE_HOME\binディレクトリにOraClrAgntサービスを作成し、データベースのインストール中に指定したOracleホーム・ユーザー・アカウントを使用して実行するように構成します。このサービスは、OracleORACLE_HOMEClrAgentとしてサービス・コントロール・パネルを介してアクセスでき、ORACLE_HOMEはOracleホームを表します。

また、OraClrCtl.exeは、OraClrAgntサービスを開始、停止および削除できます。

例

oraclrctl.exe -start -host computer-pc5

OraClrCtl.exeには次の引数を指定できます。

-new: 新しいサービスを作成および開始します。

-delete: サービスを削除します。

-start: サービスを開始します。

-stop: サービスを停止します。

-host hostname: 指定されたホスト上で操作を実行します。ホストが指定されていない場合は、ローカル・ホストがデフォルトで指定されます。

OraClrCtl.exeはTRUE (1)またはFALSE (0)を返し、SUCCESSまたはFAILUREメッセージを表示します。失敗した場合、メッセージには、OSエラー番号および対応するメッセージが表示されます。

Windowsサービスを使用したExtprocエージェントの構成

「Oracle CLRサービスおよびOracleホーム・ユーザー・アカウント」に記載されているとおり、OraClrAgntはOraClrCtl.exeによって作成されます。このサービスは、OracleORACLE_HOMEClrAgentとしてサービス・コントロール・パネルを介してアクセスでき、ORACLE_HOMEはOracleホームを表します。

このサービスには、表2-1、「OraClrAgntサービス・パラメータ」にリストされているパラメータを指定できます。

これらのパラメータ値は、コントロール・パネル・サービスのプロパティ・ウィンドウにある開始パラメータの一部として指定できます。この場合、パラメータ値は保存されず後でサービスを再起動する場合、再指定する必要があります。

パラメータ値を永続的にするには、このサービスのWindowsレジストリのエントリを変更し、OraClrAgnt.exeにコマンドライン・パラメータとしてパラメータ値を使用できます。これを実行するには、次の場所にあるWindowsレジストリ・キー、ImagePathを設定します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ OracleOracleHomeClrAgent

値は次のようになります。

ORACLE_BASE\\ORACLE_HOME\bin\OraClrAgnt.exe agent_sid=CLRExtProc max_dispatchers=2 tcp_dispatchers=0 max_task_threads=6 max_sessions=25 ENVS="EXTPROC_DLLS=ONLY:ORACLE_BASE\\ORACLE_HOME\bin\oraclr12.dll"

サービスを開始または停止できない場合、エラー・メッセージがサービス名のイベントのソース名として、イベント・ビューアのアプリケーション・ログに記録されます。

OraClrAgntサービス・パラメータ

表2-1に、このサービスを使用して構成されるパラメータをリストします。

表2-1 OraClrAgntサービス・パラメータ

パラメータ

説明

agent_sid

これはextprocプロセスのSIDを表します。デフォルト値はCLRExtProcです。これは必須パラメータです。このパラメータ値を変更する場合、tnsnames.oraおよびlistener.oraファイルで適切な変更を行う必要があります。

ENVS

extprocをロードできるDLLを制限するEXTPROC_DLLS環境変数を指定する変数。

これはlistener.oraを使用して、外部プロシージャに環境変数を設定する操作と同様です。

詳細は、『Oracle Database Net Services管理者ガイド』の「表13-5 listener.oraファイルの外部プロシージャ設定」を参照してください。

listener_address

リスナーがリスニングするアドレス。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

max_dispatchers

extprocプロセスの最大ディスパッチャ数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

max_sessions

extprocプロセスの最大セッション数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

max_task_threads

extprocプロセスの最大タスク・スレッド数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

shutdown_address

エージェントがagtctlから停止メッセージをリスニングする必要があるアドレス。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

tcp_dispatchers

extprocプロセスのTCPディスパッチャ数。これはオプションのパラメータです。指定しない場合は、デフォルト値に設定されます。

関連項目:
『Oracle Call Interfaceプログラマーズ・ガイド』の表F-2、agtctlの構成パラメータ

パフォーマンスのためのOraClrAgntのチューニング

システムの予想負荷と一致するよう、OraClrAgntを調節する必要があります。

起動中のextproc.exeプロセスが多すぎる場合、設定した構成値が低すぎることを示しています。

次の値から開始して、システムのパフォーマンスをテストしながら増やします。

OraClrAgntパラメータ

初期値

max_sessions

25

max_task_threads

6

max_dispatchers

2

インストール後のファイルの場所

OraClr12.dllは、ORACLE_BASE\\ORACLE_HOME\binディレクトリにインストールされます。

Oracle.Database.Extensions.dllは、次の場所にインストールされます。

- .NET Framework 2.0:
ORACLE_BASE\\ORACLE_HOME\ODE.NET\bin\2.x

- .NET Framework 4:
ORACLE_BASE\\ORACLE_HOME\ODE.NET\bin\4

readmeファイル(readme.html)は、ORACLE_BASE\\ORACLE_HOME\ODE.NET\DOCディレクトリにインストールされます。

開発者がデプロイした.NETアセンブリは、 Oracle Deployment Wizard for .NETによりORACLE_BASE\ORACLE_HOME\bin\CLRディレクトリ(またはサブディレクトリ)にコピーされます。

リスナーおよびtnsnamesファイル

Oracle Database Extensions for .NET用に構成されたlistener.oraおよびtnsnames.oraファイルの代表例を次に示します。デフォルトでは、Oracle Database Extensions for .NETではSIDとしてCLRExtProcが使用されますが、これはDatabase Configuration Assistant(DBCA)を使用して変更できます。

listener.oraファイル

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\database_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oracle\database_1)
(PROGRAM = extproc)
(ENVS="EXTPROC_DLLS=ONLY:C:\oracle\database_1\bin\oraclr12.dll")
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

)
)

tnsnames.oraファイル

ORACLE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = user.us.oracle.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle.us.oracle.com)
)
)

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

Oracle Database 11.2からOracle Database 12.1への.NETストアド・プロシージャの移行

次の方法に従って、.NETストアド・プロシージャをOracle Databaseリリース 11.2からリリース 12.1に移行できます。

1. Oracle Database 11gリリース 2(11.2)データベースの.NETストアド・プロシージャが使用するライブラリを選択します。次に例を示します。
SELECT library_name, file_spec FROM ALL_LIBRARIES WHERE OWNER='SYS' and FILE_SPEC LIKE '$ORACLE_HOME\bin\clr\%';

library_nameは、通常dll_name_DLLという形式になります。たとえば、Project1.dllのlibrary_nameはPROJECT1_DLLになります。

2. 次のSQL文が記載されたSQLファイルを手動で作成します(たとえば、DotNetSP_Grant.sqlなど)。

CREATE LIBRARY "SYS"."library_name" AS 'file_spec'
GRANT EXECUTE ON "SYS"."library_name" TO "schema_name"
GRANT EXECUTE ON "SYS"."DBMS_CLR" TO "schema_name"
GRANT EXECUTE ON "SYS"."DBMS_CLRTYPE" TO "schema_name"
GRANT EXECUTE ON "SYS"."DBMS_CLRPARAMTABLE" TO "schema_name"

3. Oracle Database 11gリリース2(11.2)のOracle Data Pump Exportユーティリティを実行します。

Expdp system schemas="schema_name" directory=ORACLECLRDIR dumpfile=DotNetSP.dmp include=PROCEDURE,FUNCTION

4. Oracle Database 11g リリース2 (11.2)のORACLE_BASE\\ORACLE_HOME\bin\clrフォルダおよびそのサブフォルダからOracle Database 12c リリース1 (12.1)の同じディレクトリ構造内に、.NETストアド・プロシージャのアセンブリをコピーします。

5. Oracle Database 12c リリース1 (12.1)データベースに対して、SYSDBAでDotNetSP_Grant.sqlを実行します。

6. プラガブル・データベースに移行する場合は、次のようにします。

1. サーバーのDotNetSP.dmpへのパスとして、ディレクトリnameを作成します。

create directory name as 'path to DotNetSP.dmp on the server';

2. Oracle Database 12c リリース1 (12.1)データベースに対して、Oracle Data Pump Importユーティリティを実行します。

impdp system@TNS alias for pluggable database schemas="schema_name" directory=name          // name provided in step a
dumpfile=DotNetSP.dmp

3. 手順aで指定したディレクトリnameを削除します。

drop directory name           // name provided in step a

7. プラガブル・データベースに移行しない場合は、次のようにします。
Oracle Database 12c リリース1 (12.1)データベースに対して、Oracle Data Pump Importユーティリティを実行します。

impdp system schemas="schema_name" directory=ORACLECLRDIR
dumpfile=DotNetSP.dmp

注意:
ディレクトリORACLECLRDIRは削除しないでください。

.NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行

Oracle Database Extensions for .NETリリース11.1.0.7.20から、.NET 1.xストアド・プロシージャはサポートされなくなりました。特に、Oracle Database Extensions for .NET 1.xおよびOracle Data Provider for .NET 1.xは、このリリースには含まれません。以前のリリースの既存の.NET 1.xストアド・プロシージャを持つ場合、このリリースで機能するよう特別な移行手順を行う必要があります。

警告:

場合によって、この移行にはコードの変更が必要になります。.NET 1.xストアド・プロシージャを持っている場合、そのストアド・プロシージャが正常に移行されたテスト環境で検証されるまで本番環境にこのリリースをインストールしないでください。すでにこのリリースをインストールして.NET 1.xストアド・プロシージャでエラーが発生している場合は、ストアド・プロシージャに必要なコード変更が行えるまで以前のバージョンのOracle Database Extensions for .NETにダウングレードする必要があります。

コード変更の必要性の判断

.NET 1.xストアド・プロシージャを分析して、このリリースに移行するのにコード変更が必要かを判断する必要があります。特に、次の点について調べる必要があります。

- ODP.NET for .NET 1.xとODP.NET for .NET 2.0 (以上)の間のコードの非互換性。
「ODP.NET for .NET 1.xとODP.NET for .NET 2.0以上の間のコードの非互換性の処理」を参照してください。

- Oracle Database Extensions for .NET 1.xとOracle Database Extensions for .NET 2.0 (以上)の間のコードの非互換性。
「Oracle Database Extensions for .NETリリース1.xと2.0以上の間のコードの非互換性の処理」を参照してください。

- ADO.NET 1.xおよびADO.NET 2.0の移行の問題
詳細は、Microsoft社のドキュメントを参照してください。

http://msdn.microsoft.com/en-us/netframework/aa570326.aspx

移行方法

.NET 1.xストアド・プロシージャをこのリリースで機能するようにするには、2つの方法が考えられます。

- ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを再コンパイルおよび再デプロイします。この方法を強くお薦めします。また、コード変更が必要な非互換性がある場合、この方法が必要です。「ODP.NET for .NET 2.0以上を使用した.NET 1.xストアド・プロシージャの再コンパイルおよび再デプロイ」を参照してください。

- ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを構成して実行します。この方法では、再コンパイルが不要ですが、処理されていない非互換性がある場合、ランタイム・エラーが発生する可能性があります。「ODP.NET for .NET 2.0以上を使用した.NET 1.xストアド・プロシージャの構成」を参照してください。

ODP.NET for .NET 1.xとODP.NET for .NET 2.0以上の間のコードの非互換性の処理

.NET 1.xストアド・プロシージャ内のODP.NETに関連する次のコードの非互換性を処理する必要がある可能性があります。

- ODP.NET for .NET 2.0 (以上)では、OracleParameter.OracleDbTypeがInt32、Doubleなどの数値型に設定されている場合、OracleParameter.Valueにより.NETネイティブ型のかわりにOracleDecimalが返されます。この動作変更の概要は、次の表のとおりです。

OracleParameter.OracleDbType

.NET 1.xで返されるOracleParameter.Value

.NET 2.xで返されるOracleParameter.Value

OracleDbType.Byte

System.Byte

OracleDecimal

OracleDbType.Double

System.Double

OracleDecimal

OracleDbType.BinaryDouble

System.Double

OracleDecimal

OracleDbType.Int16

System.Int16

OracleDecimal

OracleDbType.Int32

System.Int32

OracleDecimal

OracleDbType.Int64

System.Int64

OracleDecimal

OracleDbType.Single

System.Single

OracleDecimal

OracleDbType.BinaryFloat

System.Single

OracleDecimal

前述のOracleDbType列挙値をoutまたはin/out OracleParameterに.NET 1.xストアド・プロシージャで使用する場合、変更が必要な場合があります。

- ODP.NET for .NET 2.0 (以上)では、OracleParameter.OracleDbTypeが接続型に設定されている場合、OracleParameter.ValueによりDBNull.Valueのかわりにプロバイダタイプ固有のnull値(OracleClob.Null)が返されます。たとえば、OracleParameter.OracleDbTypeがOracleDbType.Clobに設定されている場合、OracleParameter.Valueは、DBNull.ValueのかわりにOracleClob.Nullを返してnull値を示します。これは、ODP.NET for .NET 1.xの場合です。

Oracle Database Extensions for .NETリリース1.xと2.0以上の間のコードの非互換性の処理

接続型がパラメータとして.NET 1.xストアド・プロシージャに渡された場合、およびプロシージャがnull値をチェックした場合、プロシージャを変更する必要がある可能性があります。パラメータが接続型だった場合、Oracle Database Extensions for .NET 1.xでは.NET nullを使用してnull値を表します。このような場合、Oracle Database Extensions for .NET 2.0 (以上)ではOracleBFile.Nullなどのプロバイダタイプ固有のnull値を使用します。

接続型のnull値にプロバイダ固有のタイプのnull値のかわりに.NET null値を使用するよう、Oracle Database Extensions for .NET 2.0 (以上)を構成できます。これには、次のレジストリ値を作成して0に設定します。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE\ProviderNull

このレジストリ値の説明は、『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)のnull値可能なODP.NET接続型の下位互換性に関する説明を参照してください。

ODP.NET for .NET 2.0 (以上)を使用した.NET 1.xストアド・プロシージャの再コンパイルおよび再デプロイ

コードの非互換性が見つかった場合、ODP.NET for .NET 2.0 (以上)を使用して.NET 1.xストアド・プロシージャを再コンパイルする必要があります。

コードの非互換性がなくても、.NET 1.xストアド・プロシージャを再コンパイルおよび再デプロイすることをお薦めします。処理されていない互換性の問題があった場合、再コンパイルにより、ランタイム・エラーが発生しなくなります。再コンパイルに成功した後、ストアド・プロシージャを再デプロイします。

ODP.NET for .NET 2.0以上を使用した.NET 1.xストアド・プロシージャの構成

もう1つの方法として、コードの非互換性がない場合、ODP.NET for .NET 2.0 (以上)で.NET 1.xストアド・プロシージャを構成して実行できます。この方法の場合、.NETストアド・プロシージャを再コンパイルおよび再デプロイする必要がありません。ただし、処理されていない非互換性がOracle Database Extensions for .NET, ODP.NETおよびADO.NETのリリース1.xと2.0の間にある場合、ランタイム・エラーが発生する可能性があります。再コンパイルおよび再デプロイせずにODP.NET for .NET 2.0 (以上)で.NET 1.xストアド・プロシージャを構成して実行するには、次の手順を実行します。

1. 「Oracle Database 11.2からOracle Database 12.1への.NETストアド・プロシージャの移行」に示すような手順を実行して、ストアド・プロシージャをOracle Database 12.1に移行します。

2. NewOracleHome\binフォルダでextproc.exe.configファイルを変更または作成して、ODP.NET(Oracle.DataAccess.dll)1.xリファレンスをインストールされたバージョンのODP.NET for .NET 2.0 (以上)にリダイレクトします。たとえば、ODP.NET 1.111.6.20リファレンスをODP.NET 2.111.7.20にリダイレクトするには、extproc.exe.configファイルに次の構成セクションが含まれている必要があります。

<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="1"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess"
publicKeyToken="89b483f429c47342"
culture="neutral" />
<bindingRedirect oldVersion="1.111.6.20"
newVersion="2.111.7.20"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Oracle Database Extensions for .NETレジストリ・オプション

次の場所にあるWindowsレジストリ・エントリを使用して、Oracle Database Extensions for .NETに機能を追加できます。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

表2-2に、Oracle Database Extensions for .NETに機能を追加するレジストリ・キーおよびキーを説明するセクションをリストします。

表2-2レジストリ・オプション

レジストリ・キー

セクション

.NETFramework

.NETランタイム・バージョンの選択

ProviderNull

NULL可能ODP.NET接続型の後方互換性

RecreateAppDomain

.NETアセンブリの簡易再デプロイの自動アンロード

TraceFileName

TraceFileName

TraceOption

TraceOption

TraceLevel

TraceLevel

.NETアセンブリの簡易再デプロイのアンロード

リリース 11.1.0.6.20からは、.NETストアド・プロシージャの実行が完了したときに.NETアセンブリをアンロードできます。これにより、開発中にコードを繰り返しテストするのが簡単になります。このレジストリ・キーが無効の場合、再デプロイするたびにexproc.exeプロセスを停止し、起動する必要があります。

この機能は、パフォーマンスに悪影響があるので、パフォーマンスのテストまたは生成時に使用することはできません。

アセンブリのロードの動作を定義するには、レジストリ・キーにあるタイプREG_SZのレジストリ値RecreateAppDomainを設定します。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

RecreateAppDomainの有効値は次のとおりです。

0 = .NETストアド・プロシージャの実行が完了すると、.NETアセンブリはロードされたままになります。

1 = .NETストアド・プロシージャの実行が完了すると、.NETアセンブリはアンロードされます。

NULL可能ODP.NET接続型の後方互換性

ODP.NET for .NET 2.0 (以上)は、OracleDecimalなど非接続型に対する既存のサポートに加えて、ODP.NET接続型の静的Nullプロパティをサポートします。また、これらの型の各パブリック・プロパティ、IsNullをサポートし、各型のオブジェクトに値が割り当てられているかもチェックします。

関連項目:
NULL可能な型については、『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)

これで、.NETストアド・プロシージャへODP.NET接続型のNullオブジェクトが伝播されます。この接続型のリストは次のとおりです。

- OracleBlob

- OracleClob

- OracleBFile

- OracleXmlType

.NETストアド・プロシージャの前のバージョンは、ODP.NETの接続型パラメータと考えられ、Type.NullオブジェクトではなくNULLとして渡されます。後方互換性をサポートするには、レジストリの文字列ProviderNullを使用して前の動作を維持します。

Oracle Database Extensions for .NETが.NETストアド・プロシージャのODP.NET接続型パラメータにNULL値を渡す方法を定義するには、このレジストリ・キーにあるレジストリの文字列ProviderNullを指定します。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

ProviderNullの有効値は次のとおりです。

0 = ODP.NET接続タイプ・パラメータはType.NullオブジェクトではなくNULLとして渡されます。

1 = Oracle Database Extensions for .NETは、.NETストアド・プロシージャにType.Nullオブジェクトを渡します(NULL値の場合)。

.NETランタイム・バージョンの選択

データベース・コンピュータに複数の.NETランタイム・バージョンがインストールされる場合、Oracle Database Extensions for .NETのデフォルトは、使用できる最新の.NETランタイムになります。ただし、レジストリ値を設定すれば、特定の.NETランタイムをロードするようOracle Database Extensions for .NETを構成できます。

.NETランタイム・バージョンを指定するには、このレジストリ・キーにあるレジストリ値.NETFrameworkを設定します。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

適切な.NETランタイム・バージョン(たとえば、v2.0.50727)にレジストリ値を設定します。

注意: .NETフレームワーク1.xはこのリリースではサポートされていません。詳細は、「.NET 1.xストアド・プロシージャの.NET 2.0以上への必須の移行」を参照してください。

デバッグ・トレース

Oracle Database Extensions for .NETは、トレース・ファイルにすべてのOracle Database Extensions for .NETをロギングできるデバッグ・トレースのサポートを提供します。異なるトレースのレベルが使用可能です。

次に示すレジストリ設定は、次の場所に構成してください。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

TraceOption

TraceOptionは、トレース情報を1つのファイルに記録するか、スレッドごとの複数のファイルに記録するかを指定します。単一トレース・ファイルを指定した場合は、TraceFileNameに指定されたファイル名が使用されます。複数トレース・ファイル・オプションが要求された場合は、指定されたファイル名にスレッドIDが付加され、スレッドごとにトレース・ファイルが作成されます。

TraceOptionの有効値は次のとおりです。

0 = 単一のトレース・ファイル

1 = 複数のトレース・ファイル

注意: Oracle Data Provider for .NETのトレース・メカニズムを使用して、ODP.NET特定の問題を解決します。

TraceFileName

TraceFileNameは、トレース情報のロギングに使用されるファイル名を指定します。TraceOptionが0に設定されている場合、名前はそのまま使用されます。ただし、TraceOptionが1に設定されている場合は、指定されたファイル名にスレッドIDが付加されます。

TraceFileNameの有効値は、任意の有効なパス名およびファイル名です。

TraceLevel

TraceLevelは、Oracle Database Extensions for .NETでトレースのレベルを指定します。

TraceLevelの有効値は次のとおりです。

0 = なし

1 = 入力および終了情報

関連項目:
『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)のデバッグ・トレースに関する説明

未処理の例外

.NETストアド・プロシージャは、外部プロシージャ・エージェントextproc.exeの内部で管理されます。.NETランタイム・バージョン2.0 (以上)では、スレッド内でほとんどの未処理の例外はそのまま続行されます。未処理の例外によりextproc.exeは終了します。この動作は.NETランタイム・バージョン1.0および1.1とは異なります。.NETランタイム・バージョン1.0および1.1は、多数の処理不能な例外に対する防止策を提供しています。

extproc.exe構成ファイル

Oracle Database Extensions for .NETは、extproc.exe.configファイルをORACLE_BASE\\ORACLE_HOME\Binディレクトリにインストールします。そのため、.NETランタイム・バージョン2.0 (以上)は強制的に.NETランタイム・バージョン1.1の動作をします。.NETストアド・プロシージャ内部に作成されたガベージ・コレクタまたはスレッドが例外をスローした場合、およびこの例外が.NETストアド・プロシージャでは処理されない場合、トレーシング・メカニズムは例外を報告します。

extproc.exe.configファイルの例は次のとおりです。

<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="1"/>
</runtime>
</configuration>

次の方法に従ってextproc.exe.configファイルを変更すれば、このファイルを変更して.NET 2.0 (以上)の動作に戻すことができます。

<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="0"/>
</runtime>
</configuration>

3 Visual Studioによる開発とデプロイ

この章では、.NETストアド・プロシージャまたはファンクションを開発してOracleデータベースにデプロイするために必要な手順について説明します。

この章の内容は次のとおりです。

- ステップ1: ストアド・プロシージャまたはファンクションの開発とアセンブリへの組込み

- ステップ2: Oracle Deployment Wizard for .NETの実行

- ステップ3: デプロイするプロシージャまたはファンクションとセキュリティ・レベルの選択

- ステップ4: 適切なパラメータ型マッピングの判別

- ステップ5: プロシージャまたはファンクションのデプロイ

- ステップ6: プロシージャまたはファンクションのテスト

- ステップ7: プロシージャまたはファンクションのデバッグ

ステップ1: ストアド・プロシージャまたはファンクションの開発とアセンブリへの組込み

Microsoft Visual Studio .NETを使用して、適切な.NET言語でストアド・プロシージャまたはファンクションを記述します。

.NETストアド・プロシージャまたはファンクションにOracle Data Provider for .NET(Oracle.DataAccess.ClientおよびOracle.DataAccess.Types)を使用して、データ・アクセスを提供します。

ストアド・プロシージャまたはファンクションを、EXEではなくDLLとしてアセンブリに組み込みます。通常、この作業にはクラス・ライブラリ・プロジェクトを使用します。

データ・アクセスを使用する.NETプロシージャまたはファンクションを設計および開発する際には、Oracle Data Provider for .NETの制限事項、特に接続およびトランザクション・セマンティクスに関する制限に注意してください。

関連項目:
『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)

ステップ2: Oracle Deployment Wizard for .NETの実行

Microsoft Visual StudioからOracle Deployment Wizard for .NETを実行します。Oracle Deployment Wizard for .NETは、Oracle Developer Tools for Visual Studioの一部としてインストールされます。このウィザードでは、SYSDBA資格証明、デプロイするアセンブリの名前およびデプロイ先データベースを指定する必要があります。

ステップ3: デプロイするプロシージャまたはファンクションとセキュリティ・レベルの選択

アセンブリのメソッド・リストがOracle Deployment Wizard for .NETに表示された時点で、デプロイするプロシージャまたはファンクションを選択します。

また、セキュリティ・レベルも選択します。

Oracle Database Extensions for .NETにより、指定のセキュリティ・レベルで.NETストアド・プロシージャまたはファンクションが実行されます。セキュリティ・レベルは、.NETストアド・プロシージャまたはファンクションに付与されたコード・アクセス許可を示します。デフォルトでは、.NETストアド・プロシージャまたはファンクションはSAFEセキュリティ・レベルで実行されます。

セキュリティ・レベルは次のとおりです。

- 安全
「安全」レベルの場合、.NETストアド・プロシージャまたはファンクションからデータベース・リソースへのアクセスのみが許可されます。ローカル・ファイルやネットワークなどの外部リソースへのアクセスは許可されません。

- 外部
「外部」レベルの場合、.NETストアド・プロシージャまたはファンクションは、ローカル・ファイルの読取りまたは書込みと、ソケットやインターネット・ノードなどのネットワーク・リソースへのアクセスが許可されます。

- 危険
「危険」レベルの場合、.NETストアド・プロシージャまたはファンクションは、管理されていないコードの実行を含め、制限なしの実行が許可されます。このレベルは、他のすべてのセキュリティ・レベルのスーパーセットです。

関連項目:
セキュリティ・レベルの入力プロセスは、「ステップ3: デプロイするファンクションの選択」を参照してください

ステップ4: 適切なパラメータ型マッピングの判別

.NETストアド・プロシージャまたはファンクションのPL/SQLラッパーを作成するために、.NETデータ型とOracleデータ型の間の適切なマッピングを判別します。Oracle Deployment Wizard for .NETにはデフォルト・マッピングが用意されていますが、オーバーライドできます。

オーバーロードされる.NETストアド・プロシージャまたはファンクションの場合は、PL/SQLラッパーの個別名を指定する必要があります。

変換情報は、付録Aの表を参照してください。

関連項目:
「データ型変換」

ステップ5: プロシージャまたはファンクションのデプロイ

プロシージャまたはファンクションをデータベースにデプロイします。ウィザードを使用して、次の手順を実行します。

1. SYSDBAとして接続します。

2. ユーザー・アセンブリをORACLE_BASE\\ORACLE_HOME\bin\CLRディレクトリまたはサブディレクトリにコピーします。

3. Oracleライブラリ・オブジェクトを作成し、このライブラリ・オブジェクトに対するEXECUTE権限をデータベース・ユーザーに付与します。

CREATE OR REPLACE LIBRARY CLRLIBRARY1_DLL AS '$ORACLE_HOME\
bin\clr\CLRLibrary1_dll;
GRANT EXECUTE ON CLRLIBRARY1_DLL TO SCOTT;

4. ユーザーが定義したパラメータ型マッピングに従って、プロシージャまたはファンクションごとにユーザーのデータベース・スキーマにPL/SQLラッパーを作成します。

ステップ6: プロシージャまたはファンクションのテスト

PL/SQLラッパーをコールして、.NETストアド・プロシージャまたはファンクションをテストします。

PL/SQLラッパーは、Oracle Developer Tools for Visual StudioまたはSQL*Plusなどのツールを使用して容易に検索して実行できます。

ステップ7: プロシージャまたはファンクションのデバッグ

.NETストアド・プロシージャまたはファンクションがコールされると、Oracleデータベース・リスナーは要求をマルチスレッドCLR外部プロシージャ・エージェントextproc.exeにリダイレクトします。各.NETストアド・プロシージャまたはファンクションは、extproc.exeプロセスのコンテキスト内で実行されます。

1. .NETストアド・プロシージャまたはファンクションを表す.NETアセンブリのデバッグ・バージョンとそのpdbファイル、依存DLLおよびそれぞれのpdbファイルが、ライブラリの作成時に指定したパスに基づいてORACLE_BASE\\ORACLE_HOME\bin\clrディレクトリまたはサブディレクトリの1つにコピーされることを確認してください。

2. デバッガをextproc.exeプロセスに連結します。デバッガには.NETコードのデバッグ機能が必要であることに注意してください。デバッグにVisual Studioを使用する場合は、プロセスにアタッチ・ダイアログ・ボックスでネイティブ・オプションと共通言語ランタイム・オプションを選択します。すでに同じextproc.exeプロセスのコンテキスト内で実行済の.NETストアド・プロシージャがある場合は、ネイティブ・オプションの選択を解除できます。

3. デバッガの連結後に、.NETストアド・プロシージャまたはファンクションのソース・コードを開き、必要なブレークポイントを必要な位置に設定します。

4. .NETストアド・プロシージャをデバッグします。

注意:
アプリケーションの問題のトラブルシューティングには、Oracle Data Provider for .NETのトレーシング・メカニズムを使用できます。『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)のデバッグ・トレースに関する説明を参照してください。

4 .NETストアド・ファンクションの開発およびデプロイのデモ

この章では、.NETストアド・ファンクションの開発およびデプロイ方法を具体例に従って説明します。

この章の内容は次のとおりです。

- .NETストアド・ファンクション・デモの概要

- ステップ1: GetDeptNoファンクションの作成とアセンブリへの組込み

- ステップ2: Oracle Deployment Wizard for .NETの起動

- ステップ3: デプロイするファンクションの選択

- ステップ4: 適切なパラメータ型マッピングの判別

- ステップ5: Oracleデータベースへのファンクションのデプロイ

- ステップ6: ファンクションのテスト

関連項目:
これらのコンポーネントの詳細は、Oracle Developer Tools for Visual Studioヘルプを参照してください

.NETストアド・ファンクション・デモの概要

このデモでは、Oracle Developer Tools for Visual Studioのみを使用しますが、一部のプロセスは他のOracleツールを使用して実行できます。また、このデモではOracle Developer Tools for Visual Studioの次のコンポーネントを参照します。

- Oracleエクスプローラ

- Oracle Project

- Oracle Deployment Wizard for .NET

このデモでは、GetDeptNoという.NETストアド・ファンクションを開発し、PL/SQLラッパーGETDEPTNOとともにデプロイします。GetDeptNoファンクションは、従業員番号(EMPNO)を受け入れて問合せを実行し、従業員の部門番号(DEPTNO)を戻します。

ステップ1: GetDeptNoファンクションの作成とアセンブリへの組込み

このデモは、Visual Studioを開き、ファンクションを作成してアセンブリに組み込むことから始まります。

1. Visual Studioを開き、scott/passwordとして接続します。接続方法は、Oracle Developer Tools for Visual Studioヘルプを参照してください。

2. Visual Studioメニューから「File」、「New Project」の順に選択します。

3. Oracle Projectテンプレートを作成するには、プロジェクト・タイプVisual C#プロジェクトを選択し、Oracleプロジェクトを選択します。

4. プロジェクト名としてCLRLibrary1を指定し、場所を指定します。
クラスCLRLibrary1.Class1が表示されます。このクラスには、ストアド・プロシージャ用のテンプレートが含まれています。

5. 次のコードをコピーし、ベース・クラスに上書きして保存します。

using System;
// use the ODP.NET provider
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace CLRLibrary1
{
// Sample .NET stored function returning department number for
// a given employee number
public class Class1
{
public static int GetDeptNo(int empno)
{
int deptno = 0;

// Check for context connection
OracleConnection conn = new OracleConnection();
if( OracleConnection.IsAvailable == true )
{
conn.ConnectionString = "context connection=true";
}
else
{
throw new InvalidOperationException("context connection" +
"not available");
}

conn.Open();
// Create and execute a command
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT DEPTNO FROM EMP WHERE EMPNO = :1";

cmd.Parameters.Add(":1",OracleDbType.Int32,empno,
System.Data.ParameterDirection.Input);

OracleDataReader rdr = cmd.ExecuteReader();

if (rdr.Read())
deptno = rdr.GetInt32(0);

rdr.Close();
cmd.Dispose();
conn.Close();

return deptno;

} // GetDeptNo
} // Class1
} // CLRLibrary1

6. 「ビルド」メニューから、「ソリューションのビルド」または「CLRLibrary1のビルド」を選択します。
これにより、コードがアセンブリに組み込まれます。

7. 保存します。

ステップ2: Oracle Deployment Wizard for .NETの起動

ビルド・メニューからOracle Deployment Wizard for .NETを起動できます。

1. ビルド・メニューからCLRLibrary1の配置を選択します。

2. ようこそウィンドウが表示されると、必要に応じて「このページを再表示しない。」を選択します。
次に、「次へ」をクリックします。

3. OracleConnectionを構成しますウィンドウが表示されます。
ドロップダウン・リストから接続を選択して「次へ」をクリックするか、接続していない場合は「新規接続」をクリックします。

SYSBA接続を選択または追加する必要があります。

4. 「新規接続」を選択した場合は、接続の追加ウィンドウが表示されます。
「接続の詳細」タブで、ドロップダウン・リストからデータ・ソース名を選択します。「Windowsの統合認証の使用」オプションまたは「特定のユーザー名およびパスワードを使用」オプションを選択し、該当する情報を入力できます。必要な場合は、「パスワードの保存」を選択します。「ロール」には使用可能な唯一のオプションであるSYSDBAが表示されます。接続をテストする場合は、「接続のテスト」をクリックします。「OK」をクリックします。

5. デプロイメント・オプションを指定しますウィンドウが表示されます。
デプロイ・ウィザードを初めて実行するときには、「アセンブリをコピーしてストアド・プロシージャを生成」を選択します。後でファンクションまたはストアド・プロシージャを変更する場合は、デプロイ・ウィザードを再実行して、これらの操作の1つのみを実行するように選択できます。「次へ」をクリックします。

6. アセンブリおよびライブラリ名を指定しますウィンドウが表示されます。
アセンブリを指定するには、ドロップダウン・リストからプロジェクトを選択するか、「ファイル」を選択して「参照」をクリックし、該当のプロジェクトにナビゲートします。

選択したアセンブリに使用するライブラリ・データベース・オブジェクトの名前を指定するには、デフォルトを受け入れるか、ドロップダウン・リストから名前を選択するか、または新しい名前を入力します。

このデモでは、デフォルトのプロジェクトとライブラリ名を受け入れて「次へ」をクリックします。

7. コピー・オプションの指定ウィンドウが表示されます。
データベースにコピーする依存アセンブリを指定するには、リストから選択します。このリストには、依存アセンブリの候補がすべて表示されます。この場合、表示されるアセンブリはデータベースにコピー済であるため、コピーする必要はありません。アセンブリをデフォルトのbin\clr以外のディレクトリにデプロイするには、コピー先パスを変更します。コピー先には、bin\clrディレクトリまたは既存のサブディレクトリの1つを指定する必要があります。

このデモでは、依存アセンブリを選択せず、コピー先パスを変更しないでください。

必要な場合は、「データベースにファイルがすでに存在する場合は上書き」を選択します。

次に、「次へ」をクリックします。

ステップ3: デプロイするファンクションの選択

メソッドおよびセキュリティ詳細の指定ウィンドウが表示されます。

デプロイ対象となるプロジェクト全体を選択するか、展開して特定のファンクションをデプロイするように選択できます。このプロジェクトにはファンクションが1つしかないため、項目を1つ選択するとプロジェクト全体が選択されます。複数のファンクションまたはプロシージャがある場合は、デプロイする項目を個別に選択できます。

デプロイ対象として他のスキーマを選択する場合は、このウィンドウで選択できます。必要なスキーマがリストに表示されない場合は、別のフィルタを適用する必要があります。このプロセスの詳細は、Oracle Developer Tools for Visual Studioヘルプを参照してください。

ドロップダウン・リストを使用してセキュリティ・レベルを設定できます。設定可能なレベルは次のとおりです。

- 安全(デフォルト)

- 外部

- 危険

関連項目:
「ステップ3: デプロイするプロシージャまたはファンクションとセキュリティ・レベルの選択」

このデモでは、次を行います。

1. 選択したアセンブリに含まれるプロシージャとファンクションのリストから、GetDeptNo()を選択します。

2. スキーマは、最初はSYSと表示されます。scottスキーマにデプロイできるように、これをScottに変更します。

3. デフォルトのセキュリティ・レベルを受け入れます。「次へ」をクリックして続行するか、「パラメータ・タイプ・マッピング...」をクリックすることで型マッピングを表示できます。

ステップ4: 適切なパラメータ型マッピングの判別

「パラメータ・タイプ・マッピング...」を選択した場合は、パラメータ・タイプ・マッピング・ウィンドウが表示され、ドロップダウン・リストを使用してデータ型を変更できます。

このデモでは、.NETデータ型System.Int32からOracleのBINARY_INTEGER型へのデフォルト・マッピングを受け入れます。

「OK」をクリックしてメソッドおよびセキュリティ詳細の指定ウィンドウに戻ります。

関連項目:
データ型マッピングの表は、「データ型変換」を参照してください

ステップ5: Oracleデータベースへのファンクションのデプロイ

Oracle Deployment Wizard for .NETのサマリー・ウィンドウが表示され、指定した内容がすべて表示されます。このウィンドウで「戻る」を選択すると任意の値を変更できます。

このデモを完了するには、次を行います。

1. サマリーを検討します。

2. SQLコマンドを確認するには、「スクリプトの表示」を選択します。

3. SQLの表示ウィンドウが表示された時点で、PL/SQLラッパーのコードを確認し、「OK」をクリックしてサマリー・ウィンドウに戻ります。

4. 「終了」をクリックしてGetDeptNo()ファンクションをデプロイします。

ステップ6: ファンクションのテスト

この時点で、GetDeptNo()ファンクションがOracleデータベースにデプロイされ、PL/SQLラッパー・ファンクションをコールしてテストする準備が完了したことになります。

このデモでは、ファンクションをコールするためにデフォルト・ユーザーscottとして接続する必要があります。

ファンクションを次のツールからコールしてテストします。

- Oracle Developer Tools for Visual Studioからの起動

- ODP.NETクライアントからのコール

- SQL*Plusからのコール

Oracle Developer Tools for Visual Studioからの起動

Oracle Developer Tools for Visual Studioでファンクションを検索してコールする手順は、次のとおりです。

1. 「表示」メニューから、「Oracleエクスプローラ」を選択します。

2. 「ファンクション」ノードを開きます。

3. GETDEPTNOを検索します。

4. GETDEPTNOを右クリックし、メニューから「実行」を選択します。

5. 「ファンクションの実行」ダイアログ・ボックスが表示されたら、従業員番号7934を入力します。

6. 「OK」をクリックします。
ドキュメント・ウィンドウに出力値10が表示されます。これは、従業員番号7934が部門10に属していることを示します。

ODP.NETクライアントからのコール

次のコード例に、.NETファンクションのPL/SQLラッパーの起動方法を示します。

using System;
using System.Data;
using Oracle.DataAccess.Client;

namespace ODPNETClientApp
{
public class Class1
{
public static void Main()
{
int empno  = 7934;
int deptno = 0;

try
{
// Open a connection to the database
OracleConnection con = new OracleConnection(
"User Id=scott; Password=tiger; Data Source=inst1");
con.Open();

// Create and execute the command
OracleCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GETDEPTNO";

// Set parameters
OracleParameter retParam = cmd.Parameters.Add(":DEPTNO",
OracleDbType.Int32, System.Data.ParameterDirection.ReturnValue);
cmd.Parameters.Add(":EMPNO", OracleDbType.Int32, empno,
System.Data.ParameterDirection.Input);

cmd.ExecuteNonQuery();
deptno = (int)retParam.Value;

Console.WriteLine("\nEmployee# {0} working in department# {1}\n",
empno, deptno);

cmd.Dispose();
con.Close();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
} // Class1
} // ODPNETClientApp namespace

SQL*Plusからのコール

.NETファンクションであるGetDeptNo()ファンクションをSQL* Plusからコールする手順は、次のとおりです。

1. SQL*Plusを起動し、パスワードtigerを持つユーザーscottとしてログインします。

2. 次のコマンドを入力します。

SET SERVEROUTPUT ON;
DECLARE
deptno BINARY_INTEGER;
BEGIN
deptno := GetDeptNo(7934);
DBMS_OUTPUT.PUT_LINE(deptno);
END;

または、次の文を実行する方法もあります。

SELECT GetDeptNo(7934) FROM DUAL;

関連項目:

- Oracle Developer Tools for Visual Studioヘルプ

- 『Oracle Data Provider for .NET開発者ガイド』(Microsoft Windows用)

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』

- 『Oracle Database SQL言語リファレンス』

A データ型変換

この付録には、適切なパラメータ型マッピングを判別するために使用する次の表が記載されています。

- 表A-1「Oracleネイティブ・データ型から.NET Frameworkデータ型へのマッピング」

- 表A-2「.NET Frameworkデータ型からOracleネイティブ・データ型へのマッピング」

- 表A-3「Oracleネイティブ・データ型からODP.NETデータ型へのマッピング」

- 表A-4「ODP.NETデータ型からOracleネイティブ・データ型へのマッピング」

Oracleネイティブ・データ型から.NET Frameworkデータ型へのマッピング

表A-1に、Oracleネイティブ・データ型から.NET Framework型へのサポートされているマッピングを示します。

表A-1 Oracleネイティブ・データ型から.NET Frameworkデータ型へのマッピング

Oracleネイティブ・データ型

.NET Frameworkデータ型

BFILE

Byte[]

BINARY_DOUBLE

Byte、Byte[]、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

BINARY_FLOAT

Byte、Byte[]、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

BINARY_INTEGER

Byte、Byte[]、Char、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

BLOB

Byte[]

BOOLEAN

サポート対象外

CHAR

Byte、Char、Char[]、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

CLOB

Byte、Char、Char[]、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

DATE

Byte[]、Char[]、String、DateTime

FLOAT

Byte、Byte[]、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

INTERVAL DAY TO SECOND

Byte[]、Char、Char[]、String、TimeSpan

INTERVAL YEAR TO MONTH

Byte、Byte[]、Char、Char[]、int、Int16、Int32、Int64、long、short、String

LONG

Byte、Char、Char[]、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

LONG RAW

Byte[]

NCHAR

Byte、Char、Char[]、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

NCLOB

Byte、Char、Char[]、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

NUMBER

Byte、Byte[]、Char、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

NVARCHAR2

Byte、Char、Char[]、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

PLS_INTEGER

Byte、Byte[]、Char、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

RAW

Byte[]

REAL

Byte、Byte[]、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

ROWID

Char[]、String

TIMESTAMP

Byte[]、Char[]、String、DateTime

TIMESTAMP WITH LOCAL TIME ZONE

Byte[]、Char[]、String、DateTime

TIMESTAMP WITH TIME ZONE

Byte[]、Char[]、String、DateTime

UROWID

Char[]、String

VARCHAR2

Byte、Char、Char[]、DateTime、Decimal、Double、float、int、Int16、Int32、Int64、long、SByte、short、Single、String、uint、Uint16、Uint32、Uint64、ulong、ushort

XMLType

Char[]、String

.NET Frameworkデータ型からOracleネイティブ・データ型へのマッピング

表A-2に、.NET Frameworkデータ型からOracleネイティブ・データ型へのサポートされているマッピングを示します。

表A-2 .NET Frameworkデータ型からOracleネイティブ・データ型へのマッピング

.NET Frameworkデータ型

Oracleネイティブ・データ型

Byte

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Byte[]

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、BLOB、DATE、FLOAT、INTERVAL YEAR TO MONTH、LONG RAW、NUMBER、PLS_INTEGER、RAW、REAL、TIMESTAMP、TIMESTAMP WITH LOCAL TIME ZONE、TIMESTAMP WITH TIME ZONE

Char

BINARY_INTEGER、CHAR、CLOB、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、VARCHAR2、XMLType

Char[]

CHAR、CLOB、DATE、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NVARCHAR2、ROWID、TIMESTAMP、TIMESTAMP WITH LOCAL TIME ZONE、TIMESTAMP WITH TIME ZONE、UROWID、VARCHAR2、XMLType

DateTime

CHAR、CLOB、DATE、LONG、NCHAR、NCLOB、NVARCHAR2、TIMESTAMP、TIMESTAMP WITH LOCAL TIME ZONE、TIMESTAMP WITH TIME ZONE、VARCHAR2

Decimal

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NVARCHAR2、NUMBER、PLS_INTEGER、REAL、VARCHAR2

Double

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

float

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

int

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Int16

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Int32

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Int64

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

long

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

SByte

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

short

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Single

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

String

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、DATE、FLOAT、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、ROWID、STRING、TIMESTAMP、TIMESTAMP WITH LOCAL TIME ZONE、TIMESTAMP WITH TIME ZONE、UROWID、VARCHAR2、XMLTYPE

TimeSpan

INTERVAL DAY TO SECOND

uint

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Uint16

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Uint32

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Uint64

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

ulong

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

ushort

BINARY_DOUBLE、BINARY_FLOAT、BINARY_INTEGER、CHAR、CLOB、FLOAT、LONG、NCHAR、NCLOB、NUMBER、NVARCHAR2、PLS_INTEGER、REAL、VARCHAR2

Oracleネイティブ・データ型からODP.NETデータ型へのマッピング

表A-3に、Oracleネイティブ・データ型からODP.NET型へのサポートされているマッピングを示します。

表A-3 Oracleネイティブ・データ型からODP.NETデータ型へのマッピング

Oracleネイティブ・データ型

ODP.NETタイプ

BFILE

OracleBFile

BINARY_DOUBLE

OracleDecimal

OracleString

BINARY_FLOAT

OracleDecimal

OracleString

BINARY_INTEGER

OracleDecimal

OracleString

BLOB

OracleBinary

OracleBlob

BOOLEAN

サポート対象外

CHAR

OracleString

CLOB

OracleClob

OracleString

DATE

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

FLOAT

OracleDecimal

OracleString

INTERVAL DAY TO SECOND

OracleString

OracleIntervalDS

INTERVAL YEAR TO MONTH

OracleIntervalYM

OracleString

LONG

OracleString

LONG RAW

OracleBinary

NCHAR

OracleString

NCLOB

OracleClob

OracleString

NUMBER

OracleDecimal

OracleString

NVARCHAR2

OracleString

PLS_INTEGER

OracleDecimal

OracleString

RAW

OracleBinary

REAL

OracleDecimal

OracleString

ROWID

OracleString

TIMESTAMP

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

TIMESTAMP WITH LOCAL TIME ZONE

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

TIMESTAMP WITH TIME ZONE

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

UROWID

OracleString

VARCHAR2

OracleString

XMLType

OracleClob

OracleString

OracleXmlType

ODP.NETデータ型からOracleネイティブ・データ型へのマッピング

表A-4に、ODP.NET型からOracleネイティブ・データ型へのサポートされているマッピングを示します。

表A-4 ODP.NETデータ型からOracleネイティブ・データ型へのマッピング

ODP.NETタイプ

Oracleネイティブ・データ型

OracleBFile

BFILE

OracleBinary

BLOB

LONG RAW

RAW

OracleBlob

BLOB

OracleClob

CLOB

NCLOB

XMLType

OracleDate

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleDecimal

BINARY_DOUBLE

BINARY_INTEGER

BINARY_FLOAT

FLOAT

NUMBER

PLS_INTEGER

REAL

OracleIntervalDS

INTERVAL DAY TO SECOND

OracleIntervalYM

INTERVAL YEAR TO MONTH

OracleString

BINARY_DOUBLE

BINARY_FLOAT

BINARY_INTEGER

CHAR

CLOB

DATE

FLOAT

INTERVAL DAY TO SECOND

INTERVAL YEAR TO MONTH

LONG

NCHAR

NCLOB

NVARCHAR2

NUMBER

PLS_INTEGER

REAL

ROWID

STRING

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

UROWID

VARCHAR2

XMLType

OracleTimeStamp

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleTimeStampTZ

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleTimeStampLTZ

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleXmlType

XMLType

* .NET FrameworkへのBFILEのマッピング

OracleネイティブBFILE型のパラメータは、.NETのByte[]に変換できます。ただし、Byte[]からOracleネイティブのBFILE型への変換はサポートされていません。これは、BFILEから.NET Byte[]に変換できるのは、データベース側のBFILEパラメータ型がINパラメータで、.NETストアド・プロシージャの対応するパラメータがByte[]型のINパラメータである場合のみであることを意味します。BFILE INOUT、またはOUTパラメータまたはRETURN VALUEの場合、対応する.NETストアド・プロシージャのパラメータはOracle.DataAccess.Types.OracleBFile型である必要があります。それ以外の場合は、例外がスローされます。

PL/SQL連想配列

PL/SQL連想配列はサポートされていません。

B 一般的なエラーのトラブルシューティング

この付録では、一般的なエラーについて説明します。

PL/SQLラッパーの実行中に、各種のエラーが発生する場合があります。このようなエラーの原因と推奨措置を次に示します。

ORA-03113: 通信チャネルでファイルの終わりが検出されました

原因: クライアント・プロセスとサーバー・プロセスの間の接続が切断されました。このエラーは、なんらかの理由で外部エージェントextprocがクラッシュした場合にも発生することがあります。

措置: 通信エラーがありました。さらに調査する必要があります。最初に、ネットワークの問題の有無をチェックし、SQL*Netの設定を確認してください。また、alert.logファイルでもエラーの有無を調べてください。最後に、テストを実行して、サーバー・プロセスが停止しているかどうかと、障害時にトレース・ファイルが生成されたかどうかを確認してください。.NETファンクションにプロセスを終了するシステム・コールが含まれている可能性があります。この種のコールは削除してください。

ORA-03114: Oracleに接続されていません

原因: クライアント・プロセスとサーバー・プロセスの間の接続が切断されました。このエラーは、なんらかの理由で外部エージェントextprocがクラッシュした場合にも発生することがあります。

措置: 通信エラーがありました。さらに調査する必要があります。最初に、ネットワークの問題の有無をチェックし、SQL*Netの設定を確認してください。また、alert.logファイルでもエラーの有無を調べてください。最後に、テストを実行して、サーバー・プロセスが停止しているかどうかと、障害時にトレース・ファイルが生成されたかどうかを確認してください。.NETファンクションにプロセスを終了するシステム・コールが含まれている可能性があります。この種のコールは削除してください。

ORA-20100: System.BadImageFormatException。ファイルの書式が正しくありません。

原因: .NETアセンブリの書式が正しくありません。

措置: .NETストアド・プロシージャまたはファンクションを含む.NETアセンブリの書式を修正してください。.NETアセンブリを再コンパイルする必要があります。

ORA-20100: System.IO.FileNotFoundException。ファイルまたはアセンブリ名<assemblyname>.dll、または依存アセンブリの1つが見つかりませんでした。

原因: .NETアセンブリまたは依存アセンブリの1つが、ORACLE_BASE\\ORACLE_HOME\bin\clrまたはウィザードによるライブラリ・オブジェクトの作成中に指定されたサブディレクトリの1つで使用できません。

措置: .NETアセンブリとすべての依存アセンブリを、ORACLE_BASE\\ORACLE_HOME\bin\clrまたは該当するサブディレクトリの1つにコピーしてください。

ORA-20100: System.MissingMethodException

原因: MissingMethodExceptionがスローされました。次のような理由が考えられます。

- ストアド・プロシージャ名またはファンクション名が、.NETアセンブリに定義されている実際のストアド・プロシージャ名またはファンクション名と一致しません。

- 渡されたパラメータの数、順序および型が、.NETストアド・プロシージャにある実際のパラメータと一致しません。

措置: コールされたストアド・プロシージャまたはファンクションの名前に、スペルの誤りや大/小文字の不一致がないかどうかを調べてください。パラメータの数を確認し、パラメータの型と順序が.NETアセンブリに定義されているストアド・プロシージャまたはファンクションの型および順序と一致していることを確認してください。

ORA-20100: System.Reflection.TargetException。<typename>型が見つかりませんでした

原因: PL/SQLラッパーに使用されているネームスペースまたはクラス名、あるいはその両方が.NETアセンブリに定義されていません。

措置: クラス名にスペルの誤りや大/小文字の不一致がないかどうかを調べてください。.NETアセンブリ・コードで型を確認してください。

ORA-20100: System.Security.SecurityException

原因: 現行のセキュリティ・レベルでは.NETストアド・プロシージャまたはファンクションを実行できません。

措置: 適切なセキュリティ・レベルを使用してください。たとえば、.NETストアド・プロシージャまたはファンクションがファイル・システム・アクセスを必要とする場合は、EXTERNALセキュリティ・レベルで作成する必要があります。

ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません

原因: extprocエージェントへのネットワーク接続の初期化に失敗しました。この問題は、ネットワークの問題、不正なリスナー構成または不正な転送コードが原因で発生することがあります。

措置LISTENER.ORAおよびTNSNAMES.ORAでリスナー構成を確認するか、Oracle Names Serverを確認してください。マルチスレッドextproc構成のエントリが正しいことを確認してください。

ORA-28578: 外部プロシージャからのコールバック中にプロトコル・エラーが発生しました

原因: 内部プロトコル・エラーが発生しました。これは、PL/SQLラッパー作成時の登録に関するなんらかの問題が原因と思われます。

措置:ウィザードを使用してPL/SQLラッパーを再作成してください。

PLS-00201: 識別子DBMS_CLRを宣言してください

原因:Oracle Database Extensions for .NETが適切にインストールされ構成されていないか、.NETストアド・プロシージャがOracle Deployment Wizard for .NETを使用して適切にデプロイされていません。

措置: Oracle Database Extensions for .NETがインストールされていない場合は、Database Configuration Assistantを使用して構成してください。.NETストアド・プロシージャのデプロイには、Oracle Deployment Wizard for .NETを使用してください。

用語集

アセンブリ

アセンブリとはMicrosoft社の用語で、DLLまたは.EXEが.NETコンパイラによりコンパイルされたときに作成されるモジュールを指します。

共通言語ランタイム

Microsoft Common Language Runtime(CLR)は、同一のライブラリを使用して多数の言語でアプリケーションを作成および開発できる.NET frameworkのコンポーネントです。

動的リンク・ライブラリ(DLL)

必要な場合にWindowsアプリケーションがロード可能な実行可能ファイル。

外部プロシージャ

Cなどの第3世代言語(3GL)で書かれていて、PL/SQLファンクションまたはプロシージャのようにPL/SQLまたはSQLからコールできるファンクション。

暗黙的なデータベース・セッション

コール元のデータベース・セッション。

Microsoft .NET Frameworkクラス・ライブラリ

Microsoft .NET Frameworkクラス・ライブラリは、.NET Frameworkモデルのクラスを提供します。

ネームスペース

- .NET:
ネームスペースは、関連するタイプをグループ化するための命名機能です。アセンブリには複数のネームスペースを含めることができます。

- XML文書:
ネームスペースは、XML文書内で関連する一連の要素名または属性を記述します。

Oracle Net Services

任意のネットワーク・プロトコルおよびオペレーティング・システムを介してOracle Toolsまたはデータベースに対して透過的操作を提供するOracleのクライアント/サーバー通信ソフトウェア。

PL/SQL

OracleのSQLへの手続き言語実行。

結果セット

1行以上のデータで構成されるSQL問合せ出力。

ストアド・ファンクション

ストアド・ファンクションは、Oracleによりデータベースに格納され、アプリケーションから実行できるPL/SQLブロックです。

ストアド・プロシージャ

ストアド・プロシージャは、Oracleによりデータベースに格納され、アプリケーションから実行できるPL/SQLブロックです。

索引
A B C D E F I J L M N O P R S T U V W

A

agent_sid, 2.4.1

アーキテクチャ

Oracle Database Extensions for .NET, 1.2

アセンブリ, 2.5

ビルディング, 3.1, 4.2

アセンブリ

コピー, 4.3

B

下位互換性, 2.9.2

.NET FrameworkへのBFILEマッピング, A

ビルド, 4.3

構築

アセンブリ, 3.1, 4.2

C

C#, 1.1

接続の選択, 4.3

choptコマンド, 2.3.1

クラス・ライブラリ・プロジェクト, 3.1

CLR, 1.1

CLRホスト, 1.1, 1.2, 1.2.1

CLRExtProc, 2.4.1, 2.6

共通言語ランタイム(CLR), 1.1

接続

追加, 4.3

選択, 4.3

新規, 4.3

アセンブリのコピー, 4.3 コピー・オプション, 4.3 作成

ファンクション,デモンストレーション, 4

ファンクション, 4.2

.NETストアド・プロシージャまたはファンクション, 3.1

ストアド・プロシージャ, 4.2

D

データ型のマッピング, 4.5

データ型

マッピング, 3.4

.NET Framework, 3.4

ODP.NETタイプ, 3.4

データ型のマッピング

適切なものを選択, 3.4

Database Configuration Assistant, 2.3.1 デバッグ・トレース, 2.9.4 デバッグ, 3.7, 3.7

ストアド・プロシージャ, 3.7

デモンストレーション

ファンクションの作成, 4

デプロイ, 4.6 デプロイ

ファンクションまたはプロシージャ, 4.4

プロシージャまたはファンクションのデプロイ, 3.5 デプロイメント, 3.5

ディレクトリ, 4.3

オプション, 4.3

デプロイ・ウィザード, 1.1, 1.2, 3.4 DLL, 3.1

E

簡単な再デプロイ, 2.9.1

エラー・メッセージ, B

EXE, 3.1

exproc.exe, 2.9.1

extproc.exe

構成ファイル, 2.10.1

extproc.exeプロセス, 3.7

F

ファイルの場所, 2.5

初めての使用, 2.3.1

関数

作成, 4.2

テスト, 4.7

I

コード例, はじめに

デプロイに必要な情報

サマリー, 4.6

インストール, 2.3.1

J

Java, 1.1

L

言語, 1.1

レベル

セキュリティ, 4.4

ライブラリ・データベース・オブジェクト, 4.3 listener.ora, 2.4.1, 2.6

M

マッピング

データ型, 4.5

マッピング

データ型, 3.4

max_dispatchers, 2.4.1 max_sessions, 2.4.1 max_task_threads, 2.4.1 Microsoft .NET Framework, 2.1 .NETストアド・プロシージャの移行, 2.7 移行, 2.9.2 複数の.NETランタイム・バージョン, 2.9.3

N

.NETアセンブリ, 2.9.1

.NET Frameworkデータ型, 3.4

.NETファンクション, 3.1

.NET言語, 1.1

.NETランタイム・バージョン

選択, 2.9.3

.NETストアド・プロシージャ, 2.1, 3.1

要件, 2.2

サポート, 2.3.1

null値可能接続型, 2.9.2 null値可能型, 2.9.2

O

Oracle Developer Tools for .NETの取得, 2.1

ODP.NET, 1.1, 1.3, 3.1

オペレーティング・システム, 1.1, 2.1

Oracleクライアント・リリース, 2.1

Oracle Data Provider for .NET, 1.1, 1.3

Oracle Database Extensions for .NET, 1.2.1

アーキテクチャ, 1.2

アセンブリ, 2.5

概要, 1.1

Oracleデータベース・リリース, 2.1 Oracle Deployment Wizard for .NET, 1.2, 1.5, 2.5, 3.4, 4.3 Oracle Developer Tools for .NET

取得, 2.1

Oracle Developer Tools for Visual Studio, 1.1, 1.5, 4, 4.7 Oracle Technology Network, 2.1 Oracle Universal Installer, 2.3.1 Oracleユーザー定義タイプ(UDT), 2.1 ORACLE_BASE\ORACLE_HOME\binディレクトリ, 2.5 OraClrAgnt, 2.4.2

.exe, 2.4

サービス, 2.4

サービス・パラメータ, 2.4.1

OTN, 2.1 OUI, 2.3.1 概要

Oracle Database Extensions for .NET, 1.1

P

パラメータ型マッピング, 4.4, 4.5

パスワード, はじめに

pdbファイル, 3.7

パフォーマンス

OraClrAgnt, 2.4.2

PLSExtProc, 2.6 PL/SQL, 1.1

ラッパー, 1.1, 1.2

PL/SQLラッパー, 4.6

R

要件

for .NETストアド・プロシージャ, 2.2

システム, 2.1

S

スキーマ, 4.4, 4.5

セキュリティ, 4.4

SQL*Plus, 4.7

ストアド・プロシージャ, 1.2

ストアド・プロシージャ

作成, 4.2

テスト, 4.7

サマリー

デプロイに必要な情報, 4.6

システムの前提条件, 2.1

T

tcp_dispatchers, 2.4.1

テスト

ファンクションまたはストアド・プロシージャ, 4.7

tnsnames.ora, 2.4.1, 2.6 TraceFileName, 2.9.4 TraceLevel, 2.9.4 TraceOption, 2.9.4 トラブルシューティング

一般的なエラー, B

チューニング

OraClrAgnt, 2.4.2

チューニング, 2.4.2

U

UDT, 2.1

未処理の例外, 2.10

Universal Installer, 2.3.1

ユーザー定義タイプ(UDT), 2.1

V

VB.NET, 1.1

Visual Studio, 1.5

Visual Studio .NET, 1.1

W

Windowsオペレーティング・システム, 1.1, 2.1

Windowsレジストリ・エントリ

ImagePath, 2.4

.NETFramework, 2.9

ProviderNull, 2.9

RecreateAppDomain, 2.9

ウィザード

Oracle Deployment Wizard for .NET, 1.5

ラッパー, 1.1, 1.2

PL/SQL, 4.6

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2015, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。