oracleデータベースを利用したotndnld.oracle.co.jp/tech/windows/odpnet/pdf/odd_odpnet.pdfasp...
TRANSCRIPT
3
本セッションの内容
ODP.NET概要– OracleのWindows対応への取り組み
– ODP.NETとは?
– ODP.NETの機能面におけるポイント
– ODP.NETオブジェクトモデル
ODP.NETの使い方– ODP.NETの入手とインストール
– Visual Studioでの設定
– サンプルコード
本セッションのまとめ
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
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)– 接続失敗時に自動的にアプリケーションを再接続
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環境下で!!
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
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)
32
Visual StudioとODP.NET
機能はOracle.DataAccess.dllにより提供される– Oracle.DataAccess.dllを「参照設定」に追加する
GUIのデザイナには次期バージョン以降対応予定
プロジェクト毎に参照設定が必要
コーディング時の候補リストに対応
ダイナミック・ヘルプ– F1キーからODP.NET ドキュメントが閲覧可能
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での設定手順
38
Visual Studioでの設定手順
「ダイナミックヘルプ」 を表示
– 最下部 「Visual Studioのヘルプのインストール」を選択
参照項目の「Visual Studio .NET連結ヘルプコレクションマネージャ」をクリック
下部の「VSCC に含めることのできるコレクション」の“ODP.NET Help”にチェック
「VSCCの更新」を行う。VS再起動後にヘルプを参照可能
ヘルプの導入方法
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
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