oracleデータベースを利用したotndnld.oracle.co.jp/tech/windows/odpnet/pdf/odd_odpnet.pdfasp...

55
1

Upload: others

Post on 01-Feb-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

1

2

Oracleデータベースを利用したMicrosoft .NET開発

- 基礎編 -Session A-8

3

本セッションの内容

ODP.NET概要– OracleのWindows対応への取り組み

– ODP.NETとは?

– ODP.NETの機能面におけるポイント

– ODP.NETオブジェクトモデル

ODP.NETの使い方– ODP.NETの入手とインストール

– Visual Studioでの設定

– サンプルコード

本セッションのまとめ

4

ODP.NET概要

OracleのWindows対応への

取り組み

5

Windows版 Oracle の歴史

Windows NT 3.1

Windows NT 4.0

Windows 2000

Windows 2003( 32/64bit )2003.5

2000.2

1996.12

1993.12 1993.12Oracle7 Server R7.0

業界初のWindows NT対応データベースNTスレッドに対応パフォーマンスモニタとの統合

Oracle7 Server R7.31996.12

1997.7 Oracle Parallel Server Option

1997.9 Oracle8 Enterprise Edition R8.0

1998.1 Oracle Fail Safe

2002.1 Oracle8i Enterprise Edition R8.1.7

2002.9 Oracle9i Database Release2 (9.2.0)

2003.5 Oracle9i Release2 64-bit Itanium

2004.5 Oracle Database10g (10.1.0)

2004.6 Oracle Database10g 64-bit Itanium

6

OracleのWindows対応WindowsWindowsに対応したアーキテクチャに対応したアーキテクチャ

サービスとしてOSに登録されるバックグラウンド・プロセス

スレッドベース・サーバー・アーキテクチャOracle10gでは、新たにファイバーモデルへ対応

ファイルファイルI/OI/Oの拡張の拡張64bitファイルI/Oの全面的なサポート

44GB RAM Tuning GB RAM Tuning ((4GT4GT))のサポートのサポート ((R7.3.4~)R7.3.4~)3GBのSGAが確保できる

VLMVLM((Very Large MemoryVery Large Memory))対応対応最大64GBのデータベース・バッファAWE (Address Windowing Extensions) を使用

6464bit bit 版版 Windows 2003 Windows 2003 とと Intel ItaniumIntel Itaniumに対応に対応

システム拡張機能システム拡張機能Real Application Cluster、接続プーリング、マルチスレッド

7

Windowsアプリケーションの開発

Oracle10gでは、COM および         .NET データアクセスを完全にサポート

– COM データアクセスVisual Basic、Active Server Pages、Visual C++ など

4つのプログラミングインターフェースの提供

– .NET データアクセスVisual Basic .NET 、C#、ASP.NET など

従来は、OLE DB .NET と ODBC .NET を経由したアクセス

Oracle Data Provider for .NETによるアクセス

8

Visual Visual BasicBasic MS OfficeMS OfficeC/C++C/C++

ApplicationsApplicationsActive ServerActive Server

PagesPagesAny COM Any COM

ClientClient

Oracle DatabaseOracle Database

ActiveX Data ActiveX Data Objects (ADO)Objects (ADO)

Oracle Provider Oracle Provider for OLE DBfor OLE DB

Oracle Objects for OLE Oracle Objects for OLE (OO4O)(OO4O)

COM Automation COM Automation FeatureFeature

OracleへのCOMデータアクセス

9

Oracleへの.NETデータアクセス

VB .NETVB .NET C++ .NETC++ .NETC#C#ASP .NETASP .NET Any .NET Any .NET ClientClient

Oracle Data ProviderOracle Data Providerfor for .NET.NET

((ODP.NETODP.NET))Oracle ODBCOracle ODBCOracle OLE DBOracle OLE DB

OLE DB .NETOLE DB .NET ODBC .NETODBC .NET

Oracle DatabaseOracle Database

10

ODP.NET概要

ODP.NETとは

11

Oracle Data Provider for .NET

オラクルが開発した .NETへの高速な接続ミドルウェア– 他のミドルウェアよりも優れたパフォーマンスを提供– Oracle DB の持つ先進機能をサポート

XML DB、 RAC… etc– Microsoft ADO.NET に標準準拠

VB .NETVB .NET C++ .NETC++ .NETC#C#ASP .NETASP .NET Any .NET Any .NET ClientClient

Oracle Database 10Oracle Database 10gg

Microsoft .NET Data Provider for Oracle はMicrosoft社が提供するミドルウェアで、ODP.NETとは異なります

Oracle Data Provider for .NETOracle Data Provider for .NET

12

ODP.NETとその他ドライバの違い

ODP.NET– Oracleネイティブなドライバー– データ・アクセスにブリッジが入らない– Oracle固有の機能のサポート

OLE DB.NET、 ODBC.NET– オープン規格に基づいたドライバー– データ・アクセスにブリッジが入る– Oracle提供以外のドライバーでは固有の機能が無い

OO4O– COMサーバー– RCWによるデータ変換等のオーバヘッドが発生する– Oracle固有の機能のサポート

ODP.NETODP.NETはは..NETNETへの最適な高速アクセスを提供への最適な高速アクセスを提供

13

ODP.NET機能のポイント

PL/SQLの完全サポート– ストアド・プロシージャ、ストアド・ファンクションを完全に実行可

ネイティブなOracleデータタイプ– LOB型、REF カーソル、BFILE型、Nデータ型、DATE型、

TIMESTAMP型、LONG型、RAW型、など

– .NET データ型に対するSafe Mapping

トランザクション– Oracle Services for MTS を使用した企業向けサービス

(Microsoft Transaction Server との統合)

– セーブポイント対応

14

ODP.NET機能のポイント

パラメータ– 配列バインド

– 名前指定パラメータ、位置パラメータ

コネクション・プーリング– プール値のコントロール、タイムアウト値の設定

グローバリゼーション– Unicode の完全サポート

– クライアント設定は、文化的にふさわしい方法で Oracle のデータを表示するために使用される

透過的アプリケーションフェイルオーバー(TAF)– 接続失敗時に自動的にアプリケーションを再接続

15

ODP.NET 10g新機能

XMLDBサポート– XMLType型のサポート

XMLを直接DBに格納する場合に使用

パフォーマンスの改良– 特にLOB型の検索パフォーマンスが向上

16

OracleのXML対応

XML 機能 Oracle SQL Server

XML と SQL の並存性 Yes No

XML スキーマ Yes No

統合されたXMLリポジトリ Yes No

XML 処理のスケーラビリティ Yes No

柔軟なストレージ・モデル Yes No

XML 機能 Oracle SQL Server

XML XML とと SQL SQL の並存性の並存性 Yes No

XML XML スキーマスキーマ YYes No

統合された統合されたXMLXMLリポジトリリポジトリ Yes No

XML XML 処理のスケーラビリティ処理のスケーラビリティ Yes No

柔軟なストレージ・モデル柔軟なストレージ・モデル Yes No

ODP.NETは、XMLのあらゆる可能性に対して機能を用意

17

ODP.NETのパフォーマンス優位

接続方法の違いによる速度差

出典:月刊ドットネット・マガジン 2003年2月号

1.500.631.141.00プライマリーキー以外の更新

1.110.791.021.00挿入

2.111.721.611.00プライマリーキー以外の参照

1087.60543.80543.801.002回目のログオン

1.021.000.981.00プログラム起動直後のログオン

MicrosoftOracle

ODP.NETOLE DB .NET Data ProviderOO4O

数値が大きいほどOO4Oに比べて速度が速い(OO4Oの速度を1とした場合の値)

18

SQL Server使用時との生産性比較

.NET App

SQL ServerData Provider

OLE DBOLE DB.NET データプロバイダー

ODP for .NET

OracleProvider for OLE DB

OLE DB.NET Data Provider

プログラミングインターフェースは、ADO.NET準拠 - 接頭語がかわるだけ

OleDbDataReader    OLE DB.NET Data ProviderSqlDataReader   SQL Server Data ProviderOracleDataReader    Oracle Data Provider for .NET

19

.NETでのOracle Databaseの優位性

.NETでもDB層にはオープン・プラットフォーム– Linux、Unix、Windows等々から選択可能

Oracleだけが持つ機能が多数– RAC、パーティショニング、XMLDB… etc.

トランザクション制御の簡便性– ReadCommitedベースの開発はやっぱり簡単

– 他のトランザクションを意識する必要性が少ない

20

ODP.NET事例

某公共系大手企業様

ODP.NET(Oracle)採用のポイント

– Oracle Database(RAC)に対する期待サーバー数に比例したパフォーマンスの伸び

ノーダウンのシステムを構築したい

HA構成でのH/Wリソースの無駄を減らしたい

– ODP.NETは .NET専用のネイティヴ・ドライバーであるODBCに比較して4~5倍のパフォーマンスが出る

– プラットフォームが異なるシステムとの接続が容易センターサーバー(UNIX)と連携させたい

Oracleの持つオープン性・堅牢性・高パフォーマンスを.NET環境下で!!

21

ODP.NET概要

ODP.NETオブジェクト・モデル

22

ODP.NETオブジェクト・モデル

接続レイヤー (ODP.NET)非接続レイヤー データレイヤー

ODP.NETODP.NETは、は、ADO.NETADO.NETの仕様に準拠の仕様に準拠Oracle DBOracle DB用にビルドされ、用にビルドされ、OracleOracleの機能を最大限に活用の機能を最大限に活用

DatasetDataset DataAdapterDataAdapter CommandCommandBuilderBuilder

CommandCommand

ConnectionConnectionTransactionTransaction

DataReaderDataReader

23

ODP.NETオブジェクト・モデル

データベースに接続

データベースとの接続中、データを操作する。SQLコマンドの実行

データベースとDataSet 間でデータを転送する

データの読み取りと更新

データベースからのデータストリームを格納する

ローカルのトランザクションを表すオブジェクト

DataSet が更新された時に DataAdapter に対する、自動SQL生成をおこないます

DatasetDataset

DataAdapterDataAdapter

CommandCommandBuilderBuilder

CommandCommand

ConnectionConnection

TransactionTransaction

DataReaderDataReader

24

ODP.NET使用方法

ODP.NETの入手とインストール

25

http://http://otnotn.oracle.co..oracle.co.jpjp/software/tech/windows//software/tech/windows/odpnetodpnet/index.html/index.html

FREE

ODP.NETはOTNからダウンロード

26

ODP.NETを使用するために

• 対応OS–Windows NT 4.0 SP6a以上–Windows 2000 SP1以上–Windows XP Professional (32-bit)–Windows Server 2003–Windows Small Business Server 2003

• 接続先データベース–Oracle8i R8.1.7.4以降 (各プラットフォーム)

• クライアント環境–Oracle Client R10.1.0.2.0 (ダウンロードファイルに含まれています)

–Microsoft .NET Framework

ODP.NET 10.1.0.2.0 システム要件

27

(参考) OO4O 10gについて

対応OS– Windows NT 4.0 SP6a以上

– Windows 2000 SP1以上

– Windows XP Professional (32-bit)– Windows Server 2003– Windows Small Business Server 2003

接続可能データベース– Oracle8i R8.1.7.4以降(各プラットフォーム)

新しいデータ形式のサポート (R9.2.0.4.8~)OO4Oオブジェクト名 Oracleデータ型

OraIntervalDS INTERVAL DAY TO SECONDOraIntervalYM INTERVAL YEAR TO MONTHOraTimeStamp TIMESTAMP、 TIMESTAMP WITH LOCAL TIME ZONEOraTimeStampTZ TIMESTAMP WITH TIME ZONE

Oracle Objects for OLE 10.1.0.2

28

ODP.Netのインストール

インストールはインストールはOracle Universal InstallerOracle Universal Installerで実施で実施““インストール先インストール先””にはにはOracle10.1.0.2Oracle10.1.0.2製品の製品の Oracle_Home Oracle_Home を選択を選択

29

ODP.Netのインストール

Oracle Data Access Software for Windowsコンポーネント– Oracle Data Provider for .NET (10.1.0.2.0)– Oracle ODBC Driver (10.1.0.2.0)– Oracle Objects for OLE (10.1.0.5.0)– Oracle Provider for OLE DB (10.1.0.2.0)– Oracle Services for Microsoft Transaction Server (10.1.0.2.0)– Oracle Client (10.1.0.2.0)– Oracle Universal Installer (10.1.0.2.0)

30

ODP.Netのインストールインストール後、OracleNetの設定が必要

手動設定、あるいは設定済の場合は省略可能

31

ODP.NET使用方法

Visual Studioでの設定

32

Visual StudioとODP.NET

機能はOracle.DataAccess.dllにより提供される– Oracle.DataAccess.dllを「参照設定」に追加する

GUIのデザイナには次期バージョン以降対応予定

プロジェクト毎に参照設定が必要

コーディング時の候補リストに対応

ダイナミック・ヘルプ– F1キーからODP.NET ドキュメントが閲覧可能

33

既存プロジェクトを選択し、ソリューション・エクスプローラーより「参照設定」を右クリックして「参照の追加」を選択

Visual Studioでの設定手順

34

ODP.NETのコンポーネントを追加

ファイル位置:ファイル位置:  %%ORACLE_HOME%ORACLE_HOME%¥¥binbin¥¥Oracle.Oracle.DataAccessDataAccess..dlldll

Visual Studioでの設定手順

35

ODP.NETを使用できるプロジェクトでは、

ソリューション・エクスプローラーの参照設定フォルダ以下に“Oracle.DataAccess”が表示される

Visual Studioでの設定手順ソリューション・エクスプローラーからの確認

36

ツールボックス> (右クリック)>アイテムの追加と削除

.NETコンポーネント・タブよりOracle名前空間のオブジェクトを選択

ODP.NETコントロールをツールボックスに追加

Visual Studioでの設定手順

37

Visual Studioでの設定手順

各コントロールの各項目プロパティへ、必要な文字列を直接入力する

デザイン画面からの操作

38

Visual Studioでの設定手順

「ダイナミックヘルプ」 を表示

– 最下部 「Visual Studioのヘルプのインストール」を選択

参照項目の「Visual Studio .NET連結ヘルプコレクションマネージャ」をクリック

下部の「VSCC に含めることのできるコレクション」の“ODP.NET Help”にチェック

「VSCCの更新」を行う。VS再起動後にヘルプを参照可能

ヘルプの導入方法

39

ODP.NET使用方法

サンプルコード

40

ODP.NETアセンブリ

Oracle.DataAccess.Client– ODP .NETのクラスを提供

Oracle.DataAccess.Types– Oracle RDBMS内のネイティブデータ型のクラスを提供

Oracle.DataAccess.dllでは2つの名前空間が提供される

‘===================================‘ Visual Basic.NET Coding Sample‘===================================

Imports Oracle.DataAccess.ClientImports Oracle.DataAccess.Types

41

Oracleへの接続

OracleConnectionオブジェクトの生成

– データベースへの接続を確立

– デフォルトでコネクション・プーリングが有効

' ユーザーID、パスワード、データ・ソースなどの接続パラメータを設定します。Dim con As OracleConnection = New OracleConnectioncon.ConnectionString = “User Id=Scott; Password=tiger; Data Source=serac;”

<接続名>.ConnectionString = “ User Id=<ユーザー名>; _ Password=<パスワード>; Data Source=<サービス名(インスタンス名)>; _Pooling=True/False/Yes/No;”

構文

42

問い合わせコマンドの定義

OracleCommandオブジェクト– OracleConnectionオブジェクトを設定

– SQL文の定義を行う

'SQLコマンドを定義しますDim cmd As New OracleCommandcmd.Connection = conncmd.CommandText = "select empno, ename, job from test_tab "

<コマンド名>.Connection = <接続名>

<コマンド名>.CommandText = “<SQL文> "構文

43

ODP.NETでの接続型アクセス

Connection

CommandText

ExecuteReader

①OracleConnection オブジェクトの生成

②OracleConnection オブジェクトを OracleCommand の  Connectionプロパティに設定

③SQL文を設定

④ExecuteReader メソッドの実行

Read⑤ReadメソッドがTrueならレコードあり

OracleConnectionOracleConnection

OracleCommandOracleCommand

OracleDataReaderOracleDataReader

ODP.NETODP.NETののクラスクラス

.NET.NET固有の固有の

クラスクラス

44

接続型の使用

SQLの発行と、OracleDataReaderオブジェクトへのデータの格納

Readメソッドによるレコードの取得

'クエリーを実行しますDim rd As OracleDataReaderrd = cmd.ExecuteReader

‘あるいは1行での記述も可能‘Dim rdr As OracleDataReader = cmd.ExecuteReader

‘レコードを取得しますDo While(rd.Read)

Label1(rd(“EMPNO”))Label2(rd(“ENAME”))

Loop

<OracleDataReader変数名>= <コマンド変数名>.ExecuteReader構文

45

ODP.NETでの非接続型アクセス

Connection

VB.NET

①OracleConnectionオブジェクトの生成

SelectCommand

Fill

③DataAdapterのプロパティに設定

④FillメソッドにてDataSetにデータ

を充填

自動連携

CommandText

②OracleConnection オブジェクトを OracleCommand の  Connectionプロパティに設定

DataSetDataSet

OracleConnectionOracleConnection

OracleCommandOracleCommand

OracleDataAdapterOracleDataAdapter

ODP.NETODP.NETののクラスクラス

.NET.NET固有の固有の

クラスクラス

46

非接続型の使用

OracleDataAdapterオブジェクト– SQLコマンドに対応するプロパティ

SelectCommandUpdateCommandInsertCommandDeleteCommand

 ‘DataAdapterを作成しますDim da As New OracleDataAdapterda.SelectCommand = cmd

    Dim da As New OracleDataAdapter( _

“select empno, ename, job from test_tab” , conn)

OracleDataAdapterからのSQLコマンドを実行– OracleDataAdapterは、内部的にOracleCommandオブジェクトの機能を持つ

47

非接続型の使用

 ‘DataSetを作成し、データを充填します

Dim ds As New DataSet

da.Fill(ds, "EMP")

<OracleDataAdapter変数名>.Fill = ( <DataSet変数名> , “<Table名>”)構文

 'DataGridへデータを表示します

Me.DataGrid1.DataSource = ds

Me.DataGrid1.DataSource = ds.Tables("EMP")

DataSetとDataGridは、ADO.NETの標準オブジェクトを使用

48

接続型の使用時のコード(サンプル)

Private Sub DataGrid1_Navigate(ByVal sender As System.Object, _ ByVal ne As System.Windows.Forms.NavigateEventArgs) Handles DataGrid1.Navigate

'Oracleへの接続を作成しますDim conn As New OracleConnectionconn.ConnectionString = ("User Id=Scott; Password=tiger; Data Source=serac;")

'SQLコマンドを定義しますDim cmd As New OracleCommandcmd.Connection = conncmd.CommandText = "select empno, ename from emp where empno=111"

'クエリーを実行しますDim rd As OracleDataReaderrd = cmd.ExecuteReaderDim rdr As OracleDataReader = cmd.ExecuteReader

conn.Close()

49

非接続型の使用時のコード(サンプル)Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click

'Oracleへの接続を作成しますDim conn As New OracleConnectionconn.ConnectionString = ("User Id=Scott; Password=tiger; Data Source=serac;")

'SQLコマンドを定義しますDim cmd As New OracleCommandcmd.Connection = conncmd.CommandText = "select empno, ename, job from emp"

'DataAdapterの作成をしますDim da As New OracleDataAdapterda.SelectCommand = cmd

'DataSetを作成し、そこへデータを格納しますDim ds As New DataSet

da.Fill(ds, "EMP")'DataGridへデータを表示します

Me.DataGrid1.DataSource = dsMe.DataGrid1.DataSource = ds.Tables("EMP")

da.Dispose()conn.Close()

End Sub

50

本セッションのまとめ

51

.NETでもOracle!シェアと実績に裏付けられた信頼の性能

Windows環境への迅速な対応幅広い価格バリエーション

SQL Serverを使って

堅牢なシステムを作れるだろうか・・・?

SQL Serverを使って

パフォーマンスが出るのだろうか・・・?

52

Oracle on Windows (OTN Japan)http://www.oracle.co.jp/nt/

Windows Technology Center (OTN Japan)http://otn.oracle.co.jp/tech/windows/index.html 

はじめてのODP.NET開発 (OTNコンテンツ)http://otn.oracle.co.jp/beginner/odpnet/index.html

Oracle Data Provider for .NET(OTNコンテンツ)http://otn.oracle.co.jp/tech/windows/odpnet/index.html

OTNフォーラム(掲示板) - プログラミングの部屋http://otn.oracle.co.jp/forum/programming.html

詳細情報はこちらから

53

試してみたい!という方は・・・

Oracle Data Provider for .NET (US OTN )http://otn.oracle.com/tech/windows/odpnet/

Windows Technology Center (US OTN )http://otn.oracle.com/tech/windows/

US 製品版がダウンロード可能http://otn.oracle.com/software/tech/windows/odpnet/content.html

ドキュメント(英語)http://otn.oracle.com/docs/tech/windows/odpnet/content.html

ディスカッション・フォーラム(英語)http://www.oracle.com/forums/forum.jsp?forum=146

54

Learn Oracle From Oracle

Instructor led trainingSelf-StudyOnline learning

Oracle CertificationOracle iLearningOracle Tutor

oracle.com/education

55

日本オラクル株式会社

無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれ

ぞれの所有者の商標または登録商標の可能性があります。