ywindows server system center / otn...

75
Oracle on Windows 参考資料、コラム(オラクル都市伝説)、イベント・セミナー 情報 etc http://www.oracle.co.jp/campaign/mb_tech/ Windows Server System Center / OTN Japan http://www.oracle.com/technology/global/jp/tech/windows/ .NET + Oracle Database .NET Developer Center / OTN Japan http://www.oracle.com/technology/global/jp/tech/dotnet/ 意外と簡単!? .NETOracle / OTN Japan http://www.oracle.com/technology/global/jp/columns/easy/dotnet/

Upload: others

Post on 14-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle on Windows– 参考資料、コラム(オラクル都市伝説)、イベント・セミナー情報 etc

• http://www.oracle.co.jp/campaign/mb_tech/

Windows Server System Center / OTN Japan• http://www.oracle.com/technology/global/jp/tech/windows/

.NET + Oracle Database• .NET Developer Center / OTN Japan

http://www.oracle.com/technology/global/jp/tech/dotnet/

– 意外と簡単!? .NETでOracle / OTN Japanhttp://www.oracle.com/technology/global/jp/columns/easy/dotnet/

Page 2: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

オラクル都市伝説 / Oracle on Windows– http://www.oracle.co.jp/campaign/mb_tech/column/– シーズン2連載中!

其の一:地獄からの生還本当にあった怖い話

其の二:喪われた時間を取り戻せ!ある男の過ち

其の三:ベテランエンジニアの魂がデータベースに宿る

其の四:本当にオラクルデータベースを選択すると「ソースコードがスリム」になるのか?を徹底検証

Page 3: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

<写真欄>

日本オラクル株式会社 

Visual Studio 2008 + Oracle Database 11g アプリケーション開発入門

Oracle Direct Seminar

Page 4: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

4Copyright© 2009, Oracle. All rights reserved.

Agenda

Visual Studio 2008とOracleを組み合わせたアプリケーションの開発について

実践的な開発方法について

Page 5: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Visual Studioと融合Oracle Data Access Components

IIS

開発作業 配布

データベース接続

C++ / C#VB.NETアプリケーション

IIS(ASP/ASP.NET)MTS/COM

Oracle Data Provider for .NET(ODP.NET)

Oracle Services for MTS

Oracle DatabaseExtensions for .NET(ODE.NET)

ストアド開発作業 データベース接続

MicrosoftVisual Studio

Visual Studio 2005, 2008 および.NET Framework 2.0/3.xに対応

Oracle Developer Tools for Visual Studio .NET(ODT)

アプリケーション

5Copyright© 2009, Oracle. All rights reserved.

Page 6: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

6Copyright© 2009, Oracle. All rights reserved.

ODP.NETー NETからOracleへの接続 ー

Page 7: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

7Copyright© 2009, Oracle. All rights reserved.

ODP.NET概要

2002年より提供開始データベースサーバーのプラットフォームを選びません

VS.NET 2003および2005, 2008に対応.NET Framework 1.0以上に対応ADO.NETに準拠したデータプロパイダOracleに特化したデータプロバイダのため、パフォーマンス、機能面で優れている

Page 8: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

8Copyright© 2009, Oracle. All rights reserved.

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

ODP.NETはOracleデータベースのインストールCDに含まれています

最新版はOTN-Jから入手可能です– http://www.oracle.com/technology/global/jp/tec

h/dotnet/index.html – Oracleデータベースのライセンスに準じて利用可能です

ODTをインストールすると自動的にODP.NETのインストールとVS.NETの環境構成が行われます

Page 9: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

9Copyright© 2009, Oracle. All rights reserved.

OTN-J .NET Developer Centerからダウンロード可能

各コンポーネントのダウンロード

Page 10: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

10Copyright© 2009, Oracle. All rights reserved.

ODP.NET, ODTを使用するにはODACをインストール

Oracle Data Access Components (ODAC)のインストール

Page 11: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

11Copyright© 2009, Oracle. All rights reserved.

Oracle Universal Installerを利用したGUIインストール

Oracle Data Access Components (ODAC)のインストール

Page 12: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

12Copyright© 2009, Oracle. All rights reserved.

ODTー Visual StudioからOracleの管理 ー

Page 13: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

13Copyright© 2009, Oracle. All rights reserved.

Oracle ExplorerDB内部をツリー構造で表示すべての機能の出発点

ウィザードとデザイナオブジェクトの追加/編集が簡単

PL/SQLエディタPL/SQLのデバッグも可能

Data Windowテストデータの確認/編集に便利

Oracle Query WindowSQL*Plus代わりに使えるツール

ODT概要

Page 14: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

14Copyright© 2009, Oracle. All rights reserved.

Oracleエクスプローラデザイナーおよびウィザード

自動コード生成

PL/SQLエディタOracleデータウィンドウOracle問合せウィンドウOracleプロジェクト統合ヘルプ

ODT機能概要

Page 15: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

OracleエクスプローラからOracleデータベースに格納されているオブジェクトを全て管理

Oracle エクスプローラを利用した開発

15Copyright© 2009, Oracle. All rights reserved.

Page 16: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

PL/SQLエディタでコード補完、エラー内容の確認

PL/SQLストアドプロシージャの開発

16Copyright© 2009, Oracle. All rights reserved.

Page 17: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Visual Studioのデバッグ機能を利用したPL/SQLストアドプロシージャのデバッグ

PL/SQLストアドプロシージャのデバッグ

17Copyright© 2009, Oracle. All rights reserved.

Page 18: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0 新機能 – ODT

Server Explorerへの統合Oracle Databaseプロジェクトユーザ定義型

SQL*Plusスクリプト問合わせウィンドウの拡張

18Copyright© 2009, Oracle. All rights reserved.

Page 19: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0 新機能 – ODT

Server Explorerへの統合– Visual Studio 2005のServer ExplorerにODTの機能を統合– Visual Studio 2005が提供する各種デザイナーやウィザード、ドラッグ・アンド・ドロップの操作に対応

Oracle Databaseプロジェクト– 複数のSQLスクリプトを管理するためのプロジェクトが新たに提供– Visual Studioで使用可能なソース管理機能と連携

19Copyright© 2009, Oracle. All rights reserved.

Page 20: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0 新機能 – ODTユーザ定義型

– 「ユーザ定義型」ノードが追加され、ユーザ定義型の作成や確認がGUIから可能に

– ユーザ定義型から.NET Custom Class(C#,VB.NET,マネージドC++に対応)を生成するためのウィザードを提供

SQL*Plusスクリプト– EDITおよびHOSTコマンドを除く、SQL*Plusコマンドを含むSQLスクリプトの実行をサポート

問合わせウィンドウの拡張– 実行計画のタブが追加され、確認が容易に

– トランザクションの手動解決をサポート

20Copyright© 2009, Oracle. All rights reserved.

Page 21: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

21Copyright© 2009, Oracle. All rights reserved.

ODTの入手とインストール

ODTはOracleデータベースのインストールCDには含まれていません

最新版はOTN-Jから入手可能ですOracleデータベースのライセンスに準じて利用可能です入手したEXEファイルを実行するとsetup.exeが作成されますsetup.exeを実行するとOUIが起動しますので、そちらでインストールします

ODTをインストールすると自動的にODP.NETのインストールとVS.NETの環境構成が行われます

Page 22: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

22Copyright© 2009, Oracle. All rights reserved.

ODE.NETー .NET ストアドプロシージャの記述と配布 ー

Page 23: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Developer Tools for Visual Studio .NET

(ODT)

MicrosoftVisual Studio .NET 2005

C++ / C#VB.NETによる開発

DLLの作成(foo.dll)

開発作業

配布

ビルド

Oracle DatabaseExtensions for .NET

(ODE.NET)

PL/SQLストアド・プログラム

クライアントアプリケーション

Oracle Database 10g Release 2以上のWindows版でのみサポートされる機能です。

ODT 10.2.0以上が必要になります。

Oracle Database Extensions for .NET

23Copyright© 2009, Oracle. All rights reserved.

Page 24: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

クライアントプロセス

Oracleプロセス 外部プロセス

クライアントアプリケーション

Oracle Instance PL/SQL リスナー

Oracle CLRHost

Microsoft.NET CLR

ODE.NETの構成と動作原理

24Copyright© 2009, Oracle. All rights reserved.

Page 25: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Project テンプレートの利用による .NETストアドプロシージャの開発

.NETストアドプロシージャの開発

25Copyright© 2009, Oracle. All rights reserved.

Page 26: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

.NETストアドの作成と配置方法

1. Oracleプロジェクトを作成2. .NETアセンブリを作成3. 配布ウィザードで以下の処理を自動実行

.NETアセンブリ(DLL)をサーバーへコピーPL/SQLラッパーの作成

配布時にはSYSまたはSYSTEM接続を使い、配布先を本来のスキーマにしてください

26Copyright© 2009, Oracle. All rights reserved.

Page 27: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Deployment Wizard for .NETを利用した、.NETストアドプロシージャの配布

.NETストアドプロシージャの配布

27Copyright© 2009, Oracle. All rights reserved.

Page 28: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0 新機能 – ODE.NET

アセンブリ再配布機能– 既にロードされた状態の.NET Stored Procedureを再配布で置き換え可能にする設定を提供

– 開発およびテスト時の作業効率を向上

Nullable type– .NET Framework 2.0で追加されたNullable Typeに対応

28Copyright© 2009, Oracle. All rights reserved.

Page 29: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

29Copyright© 2009, Oracle. All rights reserved.

Agenda

Visual Studio 2008とOracleを組み合わせたアプリケーションの開発について

実践的な開発方法について

Page 30: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NETー パフォーマンス・チューニング ー

30Copyright© 2009, Oracle. All rights reserved.

Page 31: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET チューニングポイント 1~ ラウンドトリップの回数を減らす~

取得レコードが多い場合、フェッチサイズによっては多くのラウンドトリップが発生

データ取得の際のパケットサイズを変更することにより、ラウンドトリップ回数を減少

FetchSize・・・デフォルト値は、65,536バイト

31Copyright© 2009, Oracle. All rights reserved.

Page 32: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET チューニングポイント 2~キャッシュの利用~

DBサーバー

1人目

1人目の初回アクセス時 DBサーバーへの問合せ

WEBサーバー

問合せ結果の返信

コネクションプール

Select * from emp

結果セットをデータセットに格納

DBサーバー

2人目

2人目のアクセス時

WEBサーバー

コネクションプール

Select * from emp

結果セットをデータセットに格納

データキャッシュから結果を取得

32Copyright© 2009, Oracle. All rights reserved.

Page 33: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET チューニングポイント 3~ コネクション・プーリング ~

DBサーバーWEBサーバー

DBサーバーWEBサーバー

コネクションプール有

Client数 > Connection数

コネクションプール無

Client数 = Connection数

33Copyright© 2009, Oracle. All rights reserved.

Page 34: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NETー ラウンドトリップの回数を減らす ー

34Copyright© 2009, Oracle. All rights reserved.

Page 35: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET ラウンドトリップの回数を減らす~フェッチ・サイズの制御~

35Copyright© 2009, Oracle. All rights reserved.

エンドユーザーが大量のデータを使用する場合、アプリケーションによるデータ・フェッチのラウンドトリップ回数を最小限にするための仕組み。

FetchSizeの値はデフォルトで、「64KB」に設定

OracleCommand cmd = con.CreateCommand();

cmd.CommandText = "select * from fetch_test“;

OracleDataReader dr = cmd.ExecuteReader();

dr.FetchSize = cmd.RowSize * numRows;

while (dr.Read())

{

rowsFetched++;

}

Page 36: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET ラウンドトリップの回数を減らす~フェッチ・サイズ / BLOB ~

36Copyright© 2009, Oracle. All rights reserved.

BLOBでのラウンドトリップ回数を最小限にするための仕組み。Dim cnn As New OracleConnection( _

"user id=scott;password=tiger;data source=orcl")

Dim strSql As String = _

"select blob_fld from blob_test where blob_id=1"

Dim cmd As New OracleCommand(strSql, cnn)

cmd.InitialLOBFetchSize = 32767

cnn.Open()

Dim dr As OracleDataReader = cmd.ExecuteReader

If dr.Read Then

Dim blob As OracleBlob = dr.GetOracleBlob(0)

Dim ms As New System.IO.MemoryStream(blob.Value)

PictureBox1.Image = New Bitmap(ms)

End If

Oracle Data Provider for .NET 11.1から小さなサイズのLOB検索のパフォーマンスが向上。この機能拡張を使用できるのは、Oracle 11gリリース1.0以降のデータベース・バージョンで対応

Page 37: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET ラウンドトリップの回数を減らす~OracleBulkCopy~

Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータを高速に一括ロード

'// ExcelからOracle Datbaseへデータを一括コピーDim eConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:¥¥Temp¥¥SmplData.xls;Extended Properties=""Excel 8.0;HDR=YES;"";")

eConn.Open() Dim cmdFrom As New OleDbCommand("Select EMPID,EMPNAME From [Sheet1$]") cmdFrom.Connection = eConn Dim rdrFrom As OleDbDataReader = cmdFrom.ExecuteReader Dim oConn As New OracleConnection("User Id=scott;Password=tiger;Data Source=orcl11g") oConn.Open() Dim obCopy As New OracleBulkCopy(oConn) obCopy.DestinationTableName = "emp" obCopy.ColumnMappings.Add("empid", "empno") obCopy.ColumnMappings.Add("empname", "job") obCopy.WriteToServer(rdrFrom)

Oracle Data Provider for .NET 11.1からの機能

37Copyright© 2009, Oracle. All rights reserved.

Page 38: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NETー キャッシュの利用 ー

38Copyright© 2009, Oracle. All rights reserved.

Page 39: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

39Copyright© 2009, Oracle. All rights reserved.

Oracle Datatbase 11g リリース 1.0の新機能

Oracle Database キャッシュの利用~ Result Cache ~

OrdersInventory

Back Orders

LineItems

PickLists

SQL検索結果のみキャッシュ

結果キャッシュ

従来のキャッシュ

OrdersInventory

Back Orders

LineItems

PickLists

読み込みブロック 全体をキャッシュ

メモリの使用効率をあげ、レスポンスの高速化をはかるメモリの使用効率をあげ、レスポンスの高速化をはかる

Page 40: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

40Copyright© 2009, Oracle. All rights reserved.

Oracle Database キャッシュの利用~ Result Cache ~

SQLの結果キャッシュによってキャッシュされた情報は SGA 上(共有プール内の領域)に格納され、ユーザ間でその情報が共有される。アクセス対象のテーブルのデータの更新が行われた場合、そのキャッシュは無効になる。

共有プール

SGA

SQL結果キャッシュ

ユーザーA ユーザーB① ②③

Select …Select …

キャッシュ済みの結果が返され、高速レスポンス

大量データにアクセスするが、結果として返す行が少量な場合に非常に有効例)定型的なレポートなどのクエリー

Page 41: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Database キャッシュの利用~ Result Cache ~

リザルト・キャッシュを有効化する

alter system set RESULT_CACHE_MODE = 'FORCE';

MANUAL(デフォルト) ユーザが手動でリザルト・キャッシュを行う指定をした場合のみ、リザルト・ キャッシュの機能が使用されるFORCE 常にリザルト・キャッシュの機能が働く

リザルト・キャッシュを有効化する

select /*+ result_cache */ first_name, last_name from employees

RESULT_CACHE_MODEの値が「MANUAL」となっていた場合は、SQLの中にヒント句を入れることにより、クライアント・リザルトキャッシュ機能を有効にすることが可能

41Copyright© 2009, Oracle. All rights reserved.

Page 42: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET キャッシュの利用~ステートメント・キャッシュ ~

42Copyright© 2009, Oracle. All rights reserved.

同じSQL文を(場合によっては異なるパラメータ値を使用して)後で実行する場合、カーソルから解析された情報を再利用して、文を解析せずに実行

"User Id=SCOTT;Password=TIGER;Data Source=ORCL;Statement Cache Size=100"

Where句に指定されている条件を次のようにパラメータ変数を使用する必要があり

OracleCommand cmd = new OracleCommand("SELECT * FROM emp WHERE empno=:pEmpNo", conn);

OracleParameter pEmpNo =cmd.Parameters.Add("pEmpNo", OracleDbType.Int32, ParameterDirection.Input);

pEmpNo.Value = 7369;

Page 43: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0.7 新機能 – ODP.NET ステートメント・キャッシュの自動チューニング

機能

– ODP.NETが自動的に稼動状態のモニタを行い、ステートメント・キャッシュ・サイズを最適な値に設定

– ステートメント・キャッシュによりSQL or PL/SQL のリパースを排除– 実行頻度に応じてステートメント・キャッシュの大きさを動的に変更

ODP.NET

Application (A)

Cache

ODP.NET

Cache(拡張)データアクセスが多い

ODP.NET

Cache

データアクセスが少ない

43Copyright© 2009, Oracle. All rights reserved.

Page 44: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Database キャッシュの利用~ SecureFiles~

44Copyright© 2009, Oracle. All rights reserved.

データベースへのラウンドトリップの回数を減らすことで、SecureFilesを使用する際の少量のLOB検索のパフォーマンスが向上。この拡張機能はOracle 11gリリース1.0以降のデータベース・バージョンでのみ使用可能

この拡張機能は開発者に対して透過的なので、コード変更は必要なし。

Page 45: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

STORE AS SECUREFILE 句を使用して表を作成します

BASICFILE は以下のように利用します– デフォルト (STORE AS 句を指定しない場合) は、

BASICFILE として作成されます

SQL> CREATE TABLE t1 (c1 CLOB)2 LOB (c1) STORE AS SECUREFILE ;

SQL> CREATE TABLE t1 (c1 CLOB)2 LOB (c1) STORE AS SECUREFILE ;

SQL> CREATE TABLE t1 (c1 CLOB)2 LOB (c1) STORE AS BASICFILE ;

SQL> CREATE TABLE t1 (c1 CLOB)2 LOB (c1) STORE AS BASICFILE ;

Oracle Database キャッシュの利用~ SecureFiles~

45Copyright© 2009, Oracle. All rights reserved.

Page 46: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

従来の LOB より、高速に処理可能見込まれる性能改善の効果

– 競合削減

– 高いスループット

– 同時実行性の向上

– 領域管理の最適化

LOB 特有のチューニング・パラメータは不要

Oracle Database キャッシュの利用~ SecureFiles~

46Copyright© 2009, Oracle. All rights reserved.

Page 47: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NETー コネクション・プーリング ー

47Copyright© 2009, Oracle. All rights reserved.

Page 48: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Database コネクションプーリング

接続プーリングを使用しない接続文字列(Pooling=FALSE) string no_pool = "User Id=hr; Password=hr; Data Source=oramag; Enlist=false; Pooling=false"

接続プーリングを使用する接続文字列(Pooling=TRUE) string with_pool = "User Id=hr; Password=hr; Data Source=oramag; Enlist=false; Pooling=true"

48Copyright© 2009, Oracle. All rights reserved.

ODP.NETの接続プーリング機能を使用すると、アプリケーションは事前に作成された接続を用意するプールを作成および維持可能

Poolingの値はデフォルトで、「TRUE」に設定

Page 49: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Database コネクションプーリング~ OS認証でも利用可能~

ODP.NET ONLYODP.NET ONLY

Dim cnn As New OracleConnection

cnn.ConnectionString = "User Id=/;Data Source=orcl;DBA Privilege=SYSDBA"

cnn.Open()

MsgBox("Connect OK!!")

cnn.Close()

①ConnectionString属性のUser Idを / に設定することにより、データベース・ユーザーの認証にWindowsユーザー・ログイン資格証明を使用できます。また、DBA Privilege属性を介してSYSDBA権限またはSYSOPER権限のいずれかを使用してOracleデータベースに接続

ODP.NET 11.1.0以上では、OS認証でも接続プーリングが有効

49Copyright© 2009, Oracle. All rights reserved.

Page 50: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

50Copyright© 2009, Oracle. All rights reserved.

Windowsパフォーマンス・モニター(Perfmon)を使用してODP.NETのコネクション・プーリング状況等を監視

ODP.NETのパフォーマンス・カウンタはOracle Data Provider for .NETというカテゴリ名で公開

Oracle Database コネクションプーリング~ Perfmonでの確認~

Page 51: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODTー Visual Studioからの

パフォーマンスチューニング ー

51Copyright© 2009, Oracle. All rights reserved.

Page 52: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0.7 新機能 – ODTOracleパフォーマンス・アナライザ

Visual StudioからAutomatic Database Diagnostic Monitor(ADDM) 、SQL Tuning Adviserが使用可能

スナップショットの差分を診断

AWR(自動・ワークリポジトリ)

ADDM

診断結果 / アドバイス

結果作成起動

結果表示

開発者

SQLSQLチューニングチューニング・アドバイザ・アドバイザ

起動

結果表示

高負荷なSQL文

52Copyright© 2009, Oracle. All rights reserved.

Page 53: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0.7 新機能 – ODT~ SQL Tuning Adviser~

53Copyright© 2009, Oracle. All rights reserved.

Page 54: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODAC 11.1.0.7 新機能 – ODT~ Oracle Performance Analyzer~

54Copyright© 2009, Oracle. All rights reserved.

Page 55: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NETー System.Transaction ー

55Copyright© 2009, Oracle. All rights reserved.

Page 56: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET トランザクション~ System.Transactions の利用(1)~

56Copyright© 2009, Oracle. All rights reserved.

TransactionScopeを使用した暗黙的な分散トランザクション登録

using System.Transactions;

static void Main()

{

DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);

try

{

// Create a TransactionScope object

using (TransactionScope scope = new TransactionScope())

{

// Create first connection object.

using (DbConnection conn1 = factory.CreateConnection())

{

// SQLの発行

}

scope.Complete();

}

}

}

Page 57: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET トランザクション~ System.Transactions の利用(2)~

57Copyright© 2009, Oracle. All rights reserved.

CommittableTransactionを使用した明示的な分散トランザクション登録

// Create a committable transaction object.

CommittableTransaction cmtTx = new CommittableTransaction();

// Open a connection to the DB.

DbConnection conn1 = factory.CreateConnection();

conn1.ConnectionString = constr;

conn1.Open();

// enlist the connection with the commitable transaction.

conn1.EnlistTransaction(cmtTx);

// Create a command to execute the sql statement.

DbCommand cmd1 = factory.CreateCommand();

cmd1.Connection = conn1;

cmd1.CommandText = @"insert into emp (empno, ename, job) values

(1234, 'emp1', 'dev1')";

// Execute the SQL statement to insert one row in DB.

retVal = cmd1.ExecuteNonQuery();

Console.WriteLine("Rows to be affected by cmd1: {0}", retVal);

// commit/rollback the transaction.

cmtTx.Commit(); // commits the txn.

Page 58: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NET トランザクション~ System.Transactions の利用(3)~

58Copyright© 2009, Oracle. All rights reserved.

System.Transactionsサポートのローカル・トランザクション

Oracle Data Provider for .NETリリース10.2.0.3以降のアプリケーションは、System.Transactionsとともにローカル・トランザクションを使用できます。ローカル・トランザクションを使用するには、PromotableTransactionレジストリ・エントリを作成して"local"に設定するか、"Promotable Transaction"接続文字列属性を"local"に設定する必要があります。

ODP.NETの以前のバージョン(10.2.0.3以前)では、System.Transactionsを使用した分散トランザクションのみサポートされていました。

Oracle Data Provider for .NETリリース10.2.0.3の新機能

Page 59: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NETー アプリケーションの配布 ー

59Copyright© 2009, Oracle. All rights reserved.

Page 60: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

ODP.NETを利用したアプリケーションの配布~ Oracle Clientのインストール~

60Copyright© 2009, Oracle. All rights reserved.

OUI– Oracle GUIベースの インストール– DB Server, Client共、GUIベースで容易にインストール

Silent install– インストール作業の自動化

– Microsoft SMS もしくは、他のインストール製品を利用して配布可能

– 大量クライアントの配布に最適

Instant Client XCopy– ファイルコピーとバッチの実行でインストール可能

– 大量クライアントの配布に最適

Page 61: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Instant Client XCopy での配布

Install の手順– Step 1: Unzip and copy IC files to disk– Step 2: install.batの実行

配布したいコンポーネント、 Oracle Home の名前、配布先の3つを指定。

– Step 3: Windows PATHにインストールパスを追加– Step 4: NLS_LANG の設定

61Copyright© 2009, Oracle. All rights reserved.

Page 62: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

XCopy Install.bat

62Copyright© 2009, Oracle. All rights reserved.

Page 63: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Instant Client XCopy コンポーネント

Instant Client xcopy でインストール可能なコンポーネント– SQL*Plus– OCI– OCCI– ODBC– JDBC-OCI

Instant Client xcopy で追加されたコンポーネント– ODP.NET– Oracle Providers for ASP.NET– Oracle Provider for OLE DB– OO4O– Oracle Services for MTS

63Copyright© 2009, Oracle. All rights reserved.

Page 64: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

tnsname.oraを使用しない接続

ODP.NET ONLYODP.NET ONLY

Dim cnn As New OracleConnection

Dim sb As New System.Text.StringBuilder

sb.Append("User Id=scott; Password=tiger;")

sb.Append("Data Source=(DESCRIPTION = (ADDRESS_LIST = ")

sb.Append("(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)")

sb.Append("(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)")

sb.Append("(SERVICE_NAME = orcl)));")

cnn.ConnectionString = sb.ToString

cnn.Open()

MsgBox("Connect OK!!")

cnn.Close()

tnsnams.oraの内容をそのまま記述

64Copyright© 2009, Oracle. All rights reserved.

Page 65: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Multiple Oracle Homes(MOH)

Multiple Oracle Homes (MOH) 複数バージョンのOracle製品をインストールする為に:Oracle Database version 8.0.4以前ではサポートされません。

 example:– Oracle 10.2.0: d:¥oracle10¥ora102– Oracle 11.0.0: d:¥oracle11¥ora110

65Copyright© 2009, Oracle. All rights reserved.

Page 66: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Multiple Oracle Homes

Multiple Oracle Homes のレジストリ設定:– HKLM¥Software¥Oracle¥ALL_HOMES and

HKLM¥Software¥Oracle¥HOME(n)– HKLM¥Software¥Oracle¥KEY_home

66Copyright© 2009, Oracle. All rights reserved.

Page 67: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Multiple Oracle Homes の管理Oracle Client Software

Oracle client DLLs はWindows Path の設定から読み込まれます。

Web (IIS) – IIS supports separate worker processes in

same instanceIIS 6 for Windows Server 2003 以上

– それぞれのprocessでDllのディレクトリ設定Client/Server

– それぞれのアプリケーションのスタートアップ時に、利用したいOracle Home のPATHを設定

67Copyright© 2009, Oracle. All rights reserved.

Page 68: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle Homes in .NETの管理ODP.NET 10.2.0.4 以上の場合

– ODP.NET は .NET config files を利用してアンマネージドな Oracle DLLsを読み込みます。

– それぞれのアプリケーション毎に、異なるバージョンのOracle ClientとODP.NETを設定できます。

DLL の検索順序– 1. Current application directory– 2. Application config or web.config– 3. Machine.config– 4. Windows Registry

HKLM¥Software¥Oracle¥ODP.NET¥<version>¥DllPath– 5. Windows System Path setting

68Copyright© 2009, Oracle. All rights reserved.

Page 69: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

69Copyright© 2009, Oracle. All rights reserved.

Oracle機能の活用Oracle Data Provider for .NET(ODP.NET)Oracle Data Provider for .NET(ODP.NET)

開発生産性の向上Oracle Developer Tools for Visual Studio .NET(ODT)Oracle Developer Tools for Visual Studio .NET(ODT)

開発言語の統一Oracle Database Extensions for .NET(ODE.NET)Oracle Database Extensions for .NET(ODE.NET)

Visual Studio 2005, 2008をサポートVisual Studio 2005, 2008をサポート

まとめ .NET 開発者を以下3つの製品でサポート

Page 70: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

【タイトル】年末カレンダー応募【必要情報】1、氏名2、貴社名、所属部署名3、貴社住所(プレゼント送付先)4、受講された2009年11月・12月開催のセミナタイトル5、現在ご検討中のシステムについてなど、Oracle Directに相談されたい  ことなどございましたら記載ください。

年末ダイセミ受講感謝キャンペーン

日頃はOracle Direct Seminarを御愛護頂き、誠にありがとうございます。感謝の気持ちを込めまして、合計100名様にWendyの2010年版カレンダーをプレゼントいたします。11月・12月に開催のダイセミを2つ以上受講頂いた方が対象です。是非皆様奮ってご応募下さい!!

応募方法応募方法 [email protected]

必要情報を明記のうえ、メールでご応募ください。当選者の発表は発送をもってかえさせて頂きます。

70Copyright© 2009, Oracle. All rights reserved.

Page 71: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

OTNOTN掲示版×ダイセミ でスキルアップ掲示版×ダイセミ でスキルアップ!!!!

※OTN掲示版は、基本的にOracleユーザー有志からの回答となるため100%回答があるとは限りません。    ただ、過去の履歴を見ると、質問の大多数に関してなんらかの回答が書き込まれております。

このようなお客様に、Oracle Technology Network(OTN)の掲示版の活用をお薦めします。

・セミナー中に解消できなかった疑問点を解消したい!・セミナー終了後に疑問点が出てきた!・一般的なその解決方法などを知りたい!

セミナーに関連する質問については、OTN掲示版の「データベース一般」へ

http://otn.oracle.co.jp/forum/index.jspa?categoryID=2

71Copyright© 2009, Oracle. All rights reserved.

Page 72: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

Oracle University LOracle University Liveive VVirtualirtual CClasslass

インターネットを通じてライブで研修に参加できる「Oracle University Live Virtual Class」。会社や自宅からでも研修を受講することができ、品質や達成度も教室で開催される研修と同等。

スキルアップのチャンスが大きく広がります。

~インターネットでどこでも受講!世界中から最新技術をいち早く習得~~インターネットでどこでも受講!世界中から最新技術をいち早く習得~

多彩なコースから最新の技術をいち早く取得多彩なコースから最新の技術をいち早く取得

時間や場所の制約が最小限に!コスト削減に効果あり時間や場所の制約が最小限に!コスト削減に効果あり

教室で開催する研修と同じ教材・演習環境、変わらないクオリティ教室で開催する研修と同じ教材・演習環境、変わらないクオリティ

ご要望の多かった「土曜開催コース」が登場!ご自宅から受講できます

●Oracle Database 11g:管理ネクスト・ステップ - LVC (3日間) 日程:11月12日(木)~11月14日(土) ※ORACLE MASTER Silver Oracle Database 11g対応コース

開催コース、スケジュールhttp://education.oracle.co.uk/html/oracle/70JA/ILO.htm

Oracle University Live Virtual Classhttp://www.oracle.com/global/jp/education/lvc/

72Copyright© 2009, Oracle. All rights reserved.

Page 73: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

運用

構築 設計

IT 企画

経営企画

業務改善計画の作成支援• 業務診断サービス• BIアセスメントサービス

システム企画の作成支援•業務診断サービス•BIアセスメントサービス

RFP/提案書の作成支援•BIアセスメントサービス•メインフレーム資産活用相談サービス•仮想化アセスメントサービス•Oracle Database 構成相談サービス•Oracle Database 高可用性クリニック

システム構築時の道案内•Access / SQL Serverからの移行•MySQL / PostgreSQLからの移行•Oracle Database バージョンアップ支援•Oracle Developer Webアップグレード•システム連携アセスメントサービス

システム運用状況の診断•パフォーマンス・クリニック・サービス•システム・セキュリティ診断サービス•データ管理最適化サービス

ITプロジェクト全般に渡る無償支援サービスOracle Direct Conciergeサービスメニュー

73Copyright© 2009, Oracle. All rights reserved.

Page 74: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード

http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28

Oracle Direct 検索

あなたにいちばん近いオラクル

Oracle Directまずはお問合せくださいまずはお問合せください

Web問い合わせフォーム フリーダイヤル

専用お問い合わせフォームにてご相談内容を承ります。

※フォームの入力には、Oracle Direct Seminar申込時と同じ  ログインが必要となります。※こちらから詳細確認のお電話を差し上げる場合がありますので、ご登録さ  れている連絡先が最新のものになっているか、ご確認下さい。

0120-155-096 ※月曜~金曜 9:00~12:00、13:00~18:00

  (祝日および年末年始除く)

システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。

システム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。

74Copyright© 2009, Oracle. All rights reserved.

Page 75: yWindows Server System Center / OTN Japan...Oracleデータベース以外のデータソースからOracleデータベース内の表に対してデータ を高速に一括ロード