...

基礎編 - OTN

by user

on
Category: Documents
78

views

Report

Comments

Transcript

基礎編 - OTN
1
Oracleデータベースを利用した
Microsoft .NET開発
- 基礎編 Session A-8
2
本セッションの内容
y ODP.NET概要
–
–
–
–
OracleのWindows対応への取り組み
ODP.NETとは?
ODP.NETの機能面におけるポイント
ODP.NETオブジェクトモデル
y ODP.NETの使い方
–
–
–
ODP.NETの入手とインストール
Visual Studioでの設定
サンプルコード
y 本セッションのまとめ
3
ODP.NET概要
Oracleの
Windows対応への
取り組み
4
Windows版 Oracle の歴史
Oracle7 Server R7.0
1993.12 Windows NT 3.1
1996.12 Windows NT 4.0
2000.2
2003.5
Windows 2000
Windows 2003
( 32/64bit )
1993.12
業界初のWindows NT対応データベース
NTスレッドに対応
パフォーマンスモニタとの統合
1996.12 Oracle7 Server R7.3
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
5
OracleのWindows対応
Windowsに対応したアーキテクチャ
サービスとしてOSに登録されるバックグラウンド・プロセス
スレッドベース・サーバー・アーキテクチャ
Oracle10gでは、新たにファイバーモデルへ対応
64bit 版 Windows 2003 と Intel Itaniumに対応
システム拡張機能
Real Application Cluster、接続プーリング、マルチスレッド
ファイルI/Oの拡張
64bitファイルI/Oの全面的なサポート
4GB RAM Tuning (4GT)のサポート (R7.3.4~)
3GBのSGAが確保できる
VLM(Very Large Memory)対応
最大64GBのデータベース・バッファ
AWE (Address Windowing Extensions) を使用
6
Windowsアプリケーションの開発
y Oracle10gでは、COM および .NET データアクセスを完全にサポート
–
COM データアクセス
y Visual Basic、Active Server Pages、Visual C++ など
y 4つのプログラミングインターフェースの提供
–
.NET データアクセス
y Visual Basic .NET 、C#、ASP.NET など
y 従来は、OLE DB .NET と ODBC .NET を経由したアクセス
y Oracle Data Provider for .NETによるアクセス
7
OracleへのCOMデータアクセス
Active Server
Pages
Visual
Basic
C/C++
Applications
MS Office
Any COM
Client
ActiveX Data
Objects (ADO)
Oracle Objects for OLE
(OO4O)
Oracle Provider
for OLE DB
COM Automation
Feature
Oracle Database
8
Oracleへの.NETデータアクセス
ASP .NET
VB .NET
C#
OLE DB .NET
ODBC .NET
Oracle OLE DB
Oracle ODBC
C++ .NET
Any .NET
Client
Oracle Data Provider
for .NET
(ODP.NET)
Oracle Database
9
ODP.NET概要
ODP.NETとは
10
Oracle Data Provider for .NET
z
オラクルが開発した .NETへの高速な接続ミドルウェア
–
–
他のミドルウェアよりも優れたパフォーマンスを提供
Oracle DB の持つ先進機能をサポート
y XML DB、 RAC… etc
–
Microsoft ADO.NET に標準準拠
ASP .NET
VB .NET
C#
C++ .NET
Any .NET
Client
Oracle Data Provider for .NET
Oracle Database 10g
Microsoft .NET Data Provider for Oracle はMicrosoft社が提供するミドルウェアで、ODP.NETとは異なります
11
ODP.NETとその他ドライバの違い
ODP.NET
– Oracleネイティブなドライバー
– データ・アクセスにブリッジが入らない
– Oracle固有の機能のサポート
OLE DB.NET、 ODBC.NET
– オープン規格に基づいたドライバー
– データ・アクセスにブリッジが入る
– Oracle提供以外のドライバーでは固有の機能が無い
OO4O
– COMサーバー
– RCWによるデータ変換等のオーバヘッドが発生する
– Oracle固有の機能のサポート
ODP.NETは.NETへの最適な高速アクセスを提供
12
ODP.NET機能のポイント
y PL/SQLの完全サポート
–
ストアド・プロシージャ、ストアド・ファンクションを完全に実行可
y ネイティブなOracleデータタイプ
–
–
LOB型、REF カーソル、BFILE型、Nデータ型、DATE型、
TIMESTAMP型、LONG型、RAW型、など
.NET データ型に対するSafe Mapping
y トランザクション
–
Oracle Services for MTS を使用した企業向けサービス
(Microsoft Transaction Server との統合)
–
セーブポイント対応
13
ODP.NET機能のポイント
y パラメータ
–
–
配列バインド
名前指定パラメータ、位置パラメータ
y コネクション・プーリング
–
プール値のコントロール、タイムアウト値の設定
y グローバリゼーション
–
–
Unicode の完全サポート
クライアント設定は、文化的にふさわしい方法で Oracle のデータを表
示するために使用される
y 透過的アプリケーションフェイルオーバー(TAF)
–
接続失敗時に自動的にアプリケーションを再接続
14
ODP.NET 10g 新機能
y XMLDBサポート
–
XMLType型のサポート
y XMLを直接DBに格納する場合に使用
y パフォーマンスの改良
–
特にLOB型の検索パフォーマンスが向上
15
OracleのXML対応
XML 機能
Oracle
SQL Server
XML と SQL の並存性
Yes
No
XML スキーマ
Yes
No
統合された
XMLリポジトリ
統合されたXMLリポジトリ
Yes
No
XML 処理のスケーラビリティ
Yes
No
柔軟なストレージ・モデル
Yes
No
ODP.NETは、XMLのあらゆる可能性に対して機能を用意
16
ODP.NETのパフォーマンス優位
接続方法の違いによる速度差
OO4O
OLE DB .NET Data Provider
Oracle
ODP.NET
Microsoft
プログラム起動直後のログオン
1.00
0.98
1.00
1.02
2回目のログオン
1.00
543.80
543.80
1087.60
プライマリーキー以外の参照
1.00
1.61
1.72
2.11
挿入
1.00
1.02
0.79
1.11
プライマリーキー以外の更新
1.00
1.14
0.63
1.50
数値が大きいほどOO4Oに比べて速度が速い(OO4Oの速度を1とした場合の値)
出典:月刊ドットネット・マガジン 2003年2月号
17
SQL Server使用時との生産性比較
SQL Server
Data Provider
OLE DB
.NET データプロバイダー
OLE DB
ODP for .NET
.NET App
OLE DB
.NET Data Provider
Oracle
Provider for OLE DB
プログラミングインターフェースは、ADO.NET準拠 - 接頭語がかわるだけ
OleDbDataReader
SqlDataReader
OracleDataReader
OLE DB.NET Data Provider
SQL Server Data Provider
Oracle Data Provider for .NET
18
.NETでのOracle Databaseの優位性
y .NETでもDB層にはオープン・プラットフォーム
–
Linux、Unix、Windows等々から選択可能
y Oracleだけが持つ機能が多数
–
RAC、パーティショニング、XMLDB… etc.
y トランザクション制御の簡便性
–
–
ReadCommitedベースの開発はやっぱり簡単
他のトランザクションを意識する必要性が少ない
19
ODP.NET事例
某公共系大手企業様
y ODP.NET(Oracle)採用のポイント
–
Oracle Database(RAC)に対する期待
y
y
y
–
ODP.NETは .NET専用のネイティヴ・ドライバーである
y
–
サーバー数に比例したパフォーマンスの伸び
ノーダウンのシステムを構築したい
HA構成でのH/Wリソースの無駄を減らしたい
ODBCに比較して4~5倍のパフォーマンスが出る
プラットフォームが異なるシステムとの接続が容易
y
センターサーバー(UNIX)と連携させたい
Oracleの持つオープン性・堅牢性・高パフォーマンスを.NET環境下で!!
20
ODP.NET概要
ODP.NET
オブジェクト・モデル
21
ODP.NETオブジェクト・モデル
非接続レイヤー
Dataset
接続レイヤー (ODP.NET)
DataAdapter
Command
Builder
DataReader
Command
Transaction
Connection
データレイヤー
ODP.NETは、ADO.NETの仕様に準拠
Oracle DB用にビルドされ、Oracleの機能を最大限に活用
22
ODP.NETオブジェクト・モデル
Connection
データベースに接続
Command
データベースとの接続中、データを操作する。
SQLコマンドの実行
DataAdapter
データベースとDataSet 間でデータを転送する
Dataset
DataReader
Command
Builder
Transaction
データの読み取りと更新
データベースからのデータストリームを格納する
DataSet が更新された時に DataAdapter に対する、
自動SQL生成をおこないます
ローカルのトランザクションを表すオブジェクト
23
ODP.NET使用方法
ODP.NETの入手と
インストール
24
ODP.NETはOTNからダウンロード
FREE
http://otn.oracle.co.jp/software/tech/windows/odpnet/index.html
25
ODP.NETを使用するために
ODP.NET 10.1.0.2.0 システム要件
• 対応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
26
(参考)
OO4O 10gについて
Oracle Objects for OLE 10.1.0.2
y 対応OS
–
–
–
–
–
Windows NT 4.0 SP6a以上
Windows 2000 SP1以上
Windows XP Professional (32-bit)
Windows Server 2003
Windows Small Business Server 2003
y 接続可能データベース
–
Oracle8i R8.1.7.4以降(各プラットフォーム)
y 新しいデータ形式のサポート (R9.2.0.4.8~)
OO4Oオブジェクト名
OraIntervalDS
OraIntervalYM
OraTimeStamp
OraTimeStampTZ
Oracleデータ型
INTERVAL DAY TO SECOND
INTERVAL YEAR TO MONTH
TIMESTAMP、 TIMESTAMP WITH LOCAL TIME ZONE
TIMESTAMP WITH TIME ZONE
27
ODP.Netのインストール
インストールはOracle Universal Installerで実施
“インストール先”にはOracle10.1.0.2製品の Oracle_Home を選択
28
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)
29
ODP.Netのインストール
インストール後、OracleNetの設定が必要
手動設定、あるいは設定済の場合は省略可能
30
ODP.NET使用方法
Visual Studioでの
設定
31
Visual StudioとODP.NET
y 機能はOracle.DataAccess.dllにより提供される
–
y
y
y
y
Oracle.DataAccess.dllを「参照設定」に追加する
GUIのデザイナには次期バージョン以降対応予定
プロジェクト毎に参照設定が必要
コーディング時の候補リストに対応
ダイナミック・ヘルプ
–
F1キーからODP.NET ドキュメントが閲覧可能
32
Visual Studioでの設定手順
既存プロジェクトを選択し、ソリューション・エクスプローラーより
「参照設定」を右クリックして「参照の追加」を選択
33
Visual Studioでの設定手順
ODP.NETのコンポーネントを追加
ファイル位置:
%ORACLE_HOME%¥bin¥Oracle.DataAccess.dll
34
Visual Studioでの設定手順
ソリューション・エクスプローラーからの確認
ODP.NETを使用できるプロジェクトでは、
ソリューション・エクスプローラーの参照設定フォルダ以下に
“Oracle.DataAccess”が表示される
35
Visual Studioでの設定手順
ODP.NETコントロールをツールボックスに追加
ツールボックス> (右クリック)>アイテムの追加と削除
.NETコンポーネント・タブよりOracle名前空間のオブジェクトを選択
36
Visual Studioでの設定手順
デザイン画面からの操作
各コントロールの各項目プロパティへ、必要な文字列を直接入力する
37
Visual Studioでの設定手順
ヘルプの導入方法
y
「ダイナミックヘルプ」 を表示
–
y
y
y
最下部 「Visual Studioのヘルプのインストール」を選択
参照項目の「Visual Studio .NET連結ヘルプコレクション
マネージャ」をクリック
下部の「VSCC に含めることのできるコレクション」の
“ODP.NET Help”にチェック
「VSCCの更新」を行う。
VS再起動後にヘルプを参照可能
38
ODP.NET使用方法
サンプルコード
39
ODP.NETアセンブリ
Oracle.DataAccess.dllでは2つの名前空間が提供される
y Oracle.DataAccess.Client
–
ODP .NETのクラスを提供
y Oracle.DataAccess.Types
–
Oracle RDBMS内のネイティブデータ型のクラスを提供
‘===================================
‘ Visual Basic.NET Coding Sample
‘===================================
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
40
Oracleへの接続
y OracleConnectionオブジェクトの生成
–
–
データベースへの接続を確立
デフォルトでコネクション・プーリングが有効
' ユーザーID、パスワード、データ・ソースなどの接続パラメータを設定します。
Dim con As OracleConnection = New OracleConnection
con.ConnectionString = “User Id=Scott; Password=tiger; Data Source=serac;”
構文
<接続名>.ConnectionString = “ User Id=<ユーザー名>; _
Password=<パスワード>; Data Source=<サービス名(インスタンス名)>; _
Pooling=True/False/Yes/No;”
41
問い合わせコマンドの定義
y OracleCommandオブジェクト
–
–
OracleConnectionオブジェクトを設定
SQL文の定義を行う
'SQLコマンドを定義します
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandText = "select empno, ename, job from test_tab "
構文
<コマンド名>.Connection = <接続名>
<コマンド名>.CommandText = “<SQL文> "
42
ODP.NETでの接続型アクセス
①OracleConnection オブジェクトの生成
OracleConnection
②OracleConnection オブジェクトを OracleCommand の
Connectionプロパティに設定
OracleCommand
Connection
③SQL文を設定
CommandText
ExecuteReader
④ExecuteReader メソッドの実行
OracleDataReader
⑤ReadメソッドがTrueならレコードあり
Read
ODP.NETの
ODP.NETの
クラス
.NET固有の
.NET固有の
クラス
43
接続型の使用
y SQLの発行と、OracleDataReaderオブジェクトへのデータの格納
'クエリーを実行します
Dim rd As OracleDataReader
rd = cmd.ExecuteReader
‘あるいは1行での記述も可能
‘Dim rdr As OracleDataReader = cmd.ExecuteReader
構文
<OracleDataReader変数名>= <コマンド変数名>.ExecuteReader
y Readメソッドによるレコードの取得
‘レコードを取得します
Do While(rd.Read)
Label1(rd(“EMPNO”))
Label2(rd(“ENAME”))
Loop
44
ODP.NETでの非接続型アクセス
①OracleConnectionオブジェクトの生成
OracleConnection
VB.NET
②OracleConnection オブジェクトを OracleCommand の
Connectionプロパティに設定
③DataAdapterの
プロパティに設定
OracleCommand
Connection
CommandText
OracleDataAdapter
④Fillメソッドにて
DataSetにデータ
を充填
SelectCommand
Fill
DataSet
自動連携
ODP.NETの
ODP.NETの
クラス
.NET固有の
.NET固有の
クラス
45
非接続型の使用
y OracleDataAdapterオブジェクト
–
SQLコマンドに対応するプロパティ
y
y
y
y
SelectCommand
UpdateCommand
InsertCommand
DeleteCommand
‘DataAdapterを作成します
Dim da As New OracleDataAdapter
da.SelectCommand = cmd
y OracleDataAdapterからのSQLコマンドを実行
–
OracleDataAdapterは、内部的にOracleCommandオブジェクトの機能を持つ
Dim da As New OracleDataAdapter( _
“select empno, ename, job from test_tab” , conn)
46
非接続型の使用
y DataSetとDataGridは、ADO.NETの標準オブジェクトを使用
‘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")
47
接続型の使用時のコード(サンプル)
Private Sub DataGrid1_Navigate(ByVal sender As System.Object, _
ByVal ne As System.Windows.Forms.NavigateEventArgs) Handles DataGrid1.Navigate
'Oracleへの接続を作成します
Dim conn As New OracleConnection
conn.ConnectionString = ("User Id=Scott; Password=tiger; Data Source=serac;")
'SQLコマンドを定義します
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandText = "select empno, ename from emp where empno=111"
'クエリーを実行します
Dim rd As OracleDataReader
rd = cmd.ExecuteReader
Dim rdr As OracleDataReader = cmd.ExecuteReader
conn.Close()
48
非接続型の使用時のコード(サンプル)
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'Oracleへの接続を作成します
Dim conn As New OracleConnection
conn.ConnectionString = ("User Id=Scott; Password=tiger; Data Source=serac;")
'SQLコマンドを定義します
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandText = "select empno, ename, job from emp"
'DataAdapterの作成をします
Dim da As New OracleDataAdapter
da.SelectCommand = cmd
'DataSetを作成し、そこへデータを格納します
Dim ds As New DataSet
da.Fill(ds, "EMP")
'DataGridへデータを表示します
Me.DataGrid1.DataSource = ds
Me.DataGrid1.DataSource = ds.Tables("EMP")
da.Dispose()
conn.Close()
End Sub
49
本セッションのまとめ
50
SQL Serverを使って
堅牢なシステムを作れるだろうか・・・?
SQL Serverを使って
パフォーマンスが出るのだろうか・・・?
.NETでもOracle!
シェアと実績に裏付けられた信頼の性能
Windows環境への迅速な対応
幅広い価格バリエーション
51
詳細情報はこちらから
y Oracle on Windows (OTN Japan)
http://www.oracle.co.jp/nt/
y Windows Technology Center (OTN Japan)
http://otn.oracle.co.jp/tech/windows/index.html y はじめてのODP.NET開発 (OTNコンテンツ)
http://otn.oracle.co.jp/beginner/odpnet/index.html
y Oracle Data Provider for .NET(OTNコンテンツ)
http://otn.oracle.co.jp/tech/windows/odpnet/index.html
y OTNフォーラム(掲示板) - プログラミングの部屋
http://otn.oracle.co.jp/forum/programming.html
52
試してみたい!という方は・・・
y Oracle Data Provider for .NET (US OTN )
http://otn.oracle.com/tech/windows/odpnet/
y Windows Technology Center (US OTN )
http://otn.oracle.com/tech/windows/
y US 製品版がダウンロード可能
http://otn.oracle.com/software/tech/windows/odpnet/content.html
y ドキュメント(英語)
http://otn.oracle.com/docs/tech/windows/odpnet/content.html
y ディスカッション・フォーラム(英語)
http://www.oracle.com/forums/forum.jsp?forum=146
53
Learn Oracle From Oracle
y Instructor led training
y Self-Study
y Online learning
y Oracle Certification
y Oracle iLearning
y Oracle Tutor
oracle.com/education
54
日本オラクル株式会社
無断転載を禁ず
この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることが
あります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書
の内容に関連したいかなる損害についても責任を負いかねます。
Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス
名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれ
ぞれの所有者の商標または登録商標の可能性があります。
55
Fly UP