Oracle
Direct Seminar
<Insert Picture Here>
Oracle Databaseを選択すると NETのコードがスリムになるか?
Oracle Databaseを選択すると.NETのコ
ドがスリムになるか?
∼都市伝説の内容を徹底検証 Visual Studio編∼
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは
できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン
ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ
い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい
ては、弊社の裁量により決定されます。
Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の 米国及びその他の国における登録商標 または商標です。そ の他の名称はそれぞれの会社の商標の可能性があります。Agenda
•
.NETでもやっぱりOracle
• .NET + Oracleについて
•
Visual Studio + Oracleでサクサクアプリケーション開発
か出来な
押 機能
•
.NET + Oracleでしか出来ない一押し機能
•
パフォーマンス・チューニング
•
セキュリティ
•
セキュリティ
•
可用性
最新の.NET環境にいち早く対応
Visual Studio
Plug ins
.NET
Stored Procs
ODAC
64 bit
ODAC
2
dODAC
ODP.NET
Plug-ins
Stored Procs
64-bit
ODP.NET
ODAC
2006
ODAC
11g
2
ndODAC
11g
Q3 2005
2002-03
Q2 2005
Q3 2006
Q1 2007
2007-08
2009
.NET 1.x
VS 2003
.NET 2.0 &
.NET
Windows Vista &
他社DBを上回る機能
•
開発生産性を高める様々な機能
機能
Oracle
他社DB
機能
Oracle
他社DB
機能
Oracle 他社DB
パフォーマンスチューニングオプション
Yes
No
機能
Oracle 他社DB
パフォーマンスチューニングオプション
Yes
No
データキャッシュの自動更新
Yes
No
中間層のデ タキャッシ 機能
Y
N
データキャッシュの自動更新
Yes
No
中間層のデ タキャッシ 機能
Y
N
中間層のデータキャッシュ機能
Yes
No
クラスタ構成の負荷分散・フェイルオーバー
Yes
No
中間層のデータキャッシュ機能
Yes
No
クラスタ構成の負荷分散・フェイルオーバー
Yes
No
さまざまなデータタイプへの対応
Yes
No
高度なセキ リテ オプシ ン
Y
N
さまざまなデータタイプへの対応
Yes
No
高度なセキ リテ オプシ ン
Y
N
高度なセキュリティオプション
Yes
No
Visual StudioからDatabaseのチューニング
Yes
No
高度なセキュリティオプション
Yes
No
充実した開発ツール
•
Visual Studio とも完全統合
開発作業
C++ / C#配布
VB.NET IIS(ASP/ASP.NET) MTS/COMOracle Developer Tools for Visual Studio .NET (ODT)
IIS
データベース接続
アプリケーション Microsoft Visual Studio アプリケーション Oracle Databaseストアド開発作業
データベース接続
Oracle Data Provider for .NET (ODP.NET)
Oracle Services for MTS Oracle Database
Extensions for .NET (ODE.NET)
Oracle Services for MTS
Visual Studio 2005 2008 および NET Framework 2 0/3 xに対応
Visual Studio 2005, 2008 および.NET Framework 2.0/3.xに対応
Agenda
•
.NETでもやっぱりOracle
•
.NET + Oracleについて
• Visual Studio + Oracleでサクサクアプリケーション開発
か出来な
押 機能
•
.NET + Oracleでしか出来ない一押し機能
•
パフォーマンス・チューニング
•
セキュリティ
•
セキュリティ
•
可用性
Oracle データベース開発 皆さんどうしてますか?
Oracle データベースのメンテナンス
アプリケーション開発
Oracle Enterprise Manager
Microsoft Visual Studio
データメンテナンス
PL/SQL開発
デ タメンテナンス
PL/SQL開発
SQL*PLUS, GUI TOOL, その他
Oracle SQL Developer
いろいろツールを立ち上げて作業するのが大変!!
Visual Studio + ODTでお悩み一発解決
Visual Studio + ODT
¾
Oracle Explorer
ODT概要
p
¾
DB内部をツリー構造で表示
¾
すべての機能の出発点
す
機
発
¾
ウィザードとデザイナ
¾
オブジ クトの追加/編集が簡単
¾
オブジェクトの追加/編集が簡単
¾
PL/SQLエディタ
¾
PL/SQLのデバッグも可能
¾
Data Window
¾
Data Window
¾
テストデータの確認/編集に便利
¾
O
l Q
Wi d
¾
Oracle Query Window
ODT機能概要
•
Oracleエクスプローラ
デザ
お びウ ザ ド
•
デザイナーおよびウィザード
•
自動コード生成
•
PL/SQLエディタ
•
Oracleデータウィンドウ
•
Oracle問合せウィンドウ
•
Oracleプロジェクト
Oracleプロジェクト
•
統合ヘルプ
ODAC 11.1.0.x 新機能 ‒ ODT
•
11.1.0.6
•
Server Explorerへの統合
Server Explorerへの統合
•
Oracleデータベース・プロジェクト
•
ユーザ定義型
ザ定義型
•
SQL*Plusスクリプト
•
問合わせウィンドウの拡張
•
11.1.0.7
•
パフォーマンス・アナライザ
•
SQLチューニング・アドバイザ
•
Advanced Queuing デザイナ
•
Server Explorerの改良
Oracle エクスプローラを利用した開発
PL/SQLストアドプロシージャの開発
PL/SQLストアドプロシージャのデバッグ
DEMO : Visual Studioから
PL/SQLストアドプロシ ジ のデバ グ
PL/SQLストアドプロシージャのデバッグ
Visual Studioからアプリケーションの作成(1)
Visual Studioからアプリケーションの作成(2)
Visual Studioからアプリケーションの作成(3)
アプリケーションのチューニング(1)
•
Visual StudioからAutomatic Database Diagnostic Monitor(ADDM)
、SQL Tuning Adviserが使用可能
スナップショットの 差分を診断分を診断 ADDM 結果作成 起動 AWR (自動・ワークリポジトリ) 診断結果 / アドバイス 結果表示 起動 開発者 結果表示 SQL SQLチューニングチューニング ・アドバイザ ・アドバイザ 高負荷なSQL文アプリケーションのチューニング(2)
アプリケーションのチューニング(3)
DEMO : Visual Studioから
デ タベ スのチ
ニング
Agenda
•
.NET + Oracleについて
•
Visual Studio + Oracleでサクサクアプリケーション開発
• .NET + Oracleでしか出来ない一押し機能
パフォ マンス チ
ニング
•
パフォーマンス・チューニング
•
セキュリティ
NET + O
l でしか出来ない
押し機能
.NET + Oracleでしか出来ない一押し機能
ODP.NET ラウンドトリップの回数を減らす
フ ッチ サイズの制御
∼フェッチ・サイズの制御 ∼
エンドユーザーが大量のデータを使用する場合、アプリケーションによるデータ・フェッチの
ラウンドトリップ回数を最小限にするための仕組み。
OracleCommand cmd = con.CreateCommand();cmd.CommandText = "select * from fetch_test ; OracleDataReader dr = cmd.ExecuteReader(); dr.FetchSize = cmd.RowSize * numRows;
while (dr.Read()) { { rowsFetched++; }
FetchSizeの値はデフォルトで、「64KB」に設定
ODP.NET ラウンドトリップの回数を減らす
∼フェッチ・サイズ / BLOB ∼
∼フェッチ・サイズ / BLOB ∼
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"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 End If
Oracle Data Provider for .NET 11.1から小さなサイズのLOB検索のパフォーマンスが向上。こ
の機能拡張を使用できるのは、Oracle 11gリリース1.0以降のデータベース・バージョンで対応
ODP.NET ラウンドトリップの回数を減らす
∼OracleBulkCopy∼
∼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;"";")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
cmdFrom.Connection = eConn
Dim rdrFrom As OleDbDataReader = cmdFrom.ExecuteReader
Dim oConn As New OracleConnection("User Id=scott;Password=tiger;Data Source=orcl11g") C O ()
oConn.Open()
Dim obCopy As New OracleBulkCopy(oConn) obCopy.DestinationTableName = "emp"
obCopy.ColumnMappings.Add("empid", "empno") obCopy.ColumnMappings.Add("empname", "job") obCopy.WriteToServer(rdrFrom)
ODP.NET キャッシュの利用
ステ トメント キャッシ
∼ ステートメント・キャッシュ ∼
同じSQL文を(場合によっては異なるパラメータ値を使用して)後で実行する場合、カーソル
ず
から解析された情報を再利用して、文を解析せずに実行
"User Id=SCOTT;Password=TIGER;Data Source=ORCL;Statement Cache Size=100"
Where句に指定されている条件を次のようにパラメータ変数を使用する必要があり
Where句に指定されている条件を次のようにパラメ タ変数を使用する必要があり
OracleCommand cmd = new OracleCommand(
"SELECT * FROM emp WHERE empno=:pEmpNo"SELECT * FROM emp WHERE empno=:pEmpNo , conn);conn); OracleParameter pEmpNo =
cmd.Parameters.Add("pEmpNo", OracleDbType.Int32, ParameterDirection.Input); pEmpNo Value = 7369;
ODAC 11.1.0.7 新機能 – ODP.NET
ステ トメント キャ シ の自動チ
ニング
ステートメント・キャッシュの自動チューニング
機能
•
機能
•
ODP.NETが自動的に稼動状態のモニタを行い、ステートメント・キャッ
シュ・サイズを最適な値に設定
•
ステートメント・キャッシュによりSQL or PL/SQL のリパースを排除
•
実行頻度に応じてステートメント・キャッシュの大きさを動的に変更
Application (A)
データアクセスが多い
ODP.NET
ODP.NET
Cache(拡張)
デ タアクセスが多い
ODP NET
データアクセスが少ない
Cache
ODP.NET
Cache
デ タアクセスが少ない
NET + O
l でしか出来ない
押し機能
.NET + Oracleでしか出来ない一押し機能
Windows Native 認証
Run Time
Run-Time
1 ‒ UserがDesktopにサインイ
ン
Active
Directory/KDC
3 ‒ セキュリティプロト
2 ‒ UserがOracleに
サインインを実施
5 ‒ Windows Group
membershipsの検索
(
が
の場合)
コルで通信を行
い security
tokensの交換
(os_roles が trueの場合)
4 ‒ 外部ユーザーとして認証
6 ‒ データベースのロールか
グループメンバーシップに
基づきロールの割り振り
(based on os roles)
(based on os_roles)
.NET 関連のセキュリティ機能
tnsname.ora を使用しない接続
Dim cnn As New OracleConnection Dim cnn As New OracleConnection
cnn.ConnectionString = "User Id=/;Data Source=orcl;DBA Privilege=SYSDBA" cnn Open()
①
cnn.Open() MsgBox("Connect OK!!") cnn Close() cnn.Close()①ConnectionString属性のUser Idを / に設定することにより、データベース・ユーザーの認証
にWindowsユーザー・ログイン資格証明を使用できます。また、DBA Privilege属性を介して
SYSDBA権限またはSYSOPER権限のいずれかを使用してOracleデータベースに接続
ODP.NET 11.1.0以上では、OS認証でも接続プーリングが有効
.NET 関連のセキュリティ機能
Proxy認証を利用したユーザー認証
Di
A N
O
l C
ti
(
Dim conn As New OracleConnection( _
"User Id=user1;Password=xxxx;Proxy User Id=proxyuser;" + _
"Proxy password=xxxxxxxxxx;Data Source=orcl")
プロキシ認証を行うた
めの接続文字列
conn.Open()
conn.close()
上記のサンプルコードを実行する前に、プロキシ認証を行うためのユーザーを作成します
CREATE USER user1 IDENTIFIED BY oracle;
GRANT CONNECT,RESOURCE TO user1;
GRANT SELECT ON proxyuser table1 TO user1;
GRANT SELECT ON proxyuser.table1 TO user1;
.NET 関連のセキュリティ機能
ODAC 11.1.0 新機能 Oracle Providers for ASP.NET
•
ASP.NET 2.0に対応する以下の Provider を新たに提供
•
メンバーシップ・プロバイダ
•
ロール・プロバイダ
•
サイト・マップ・プロバイダ
•
セッション・ステート・プロバイダ
•
プロファイル・プロバイダ
•
Webイベント・プロバイダ
•
Webパーツ・パーソナライズ・プロバイダ
•
キャッシュ依存性プロバイダ
.NET 関連のセキュリティ機能
ODAC 11.1.0 新機能 Oracle Providers for ASP.NET
「OracleMembershipProvider」、「OracleRoleProvider」の選択が可能
「OracleMembershipProvider」、「OracleRoleProvider」の選択が可能
NET + O
l でしか出来ない
押し機能
.NET + Oracleでしか出来ない一押し機能
障害発生時にもアプリの停止時間は最小限
.NET
.NETアプリケーション
アプリケーション
③アプリケーション
へのイベント通知
ODP.NET
ODP.NET
論理コネクション
論理コネクション
物理コネクション
⑤接続を切替
処理を継続
④物理コネクション
処理を継続
①障害発生
のシャットダウン
CRS
CRS
②障害検知
②障害検知
ランタイム接続ロード・バランシング
クライアント側のコネクション・キャッシュは FANイベン
.NET AP .NET AP Oracle クライアントクライアント側のコネクション キャッシュは、FANイベン
トで指示された割合でアプリケーション・スレッドにコネク
ションを渡します。
RLBに対応するコネクション・キャッシュを使用する必
要があります
コネクション要があります。
y
JDBC Driver 10g Release 2 以上
y
ODP.NET 10g Release 2 以上
コネクション キャッシュoracle oracle oracle
SERVICE=service_A instance1: 30% instance2: 30% ロード・バランシング・アドバイザがサービスごとの instance2: 30% instance3: 40% ロ ド バランシング アドバイザがサ ビスごとの 負荷配分の割合をFANイベントで指示します。
Oracle
Direct
Oracle
Direct
まずはお問合せください
まずはお問合せください
Oracle Direct
検索
システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。
システム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。
Web問い合わせフォーム
フリーダイヤル
http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=1
専用お問い合わせフォームにてご相談内容を承ります。
0120−155−096
※月曜~金曜 9:00~12:00、13:00~18:00※フォームの入力には、Oracle Direct Seminar申込時と同じ ログインが必要となります。
※こちらから詳細確認のお電話を差し上げる場合がありますので、
ご登録されている連絡先が最新のものになっているか、ご確認下さい。
※月曜 金曜 9:00 12:00、13:00 18:00 (祝日および年末年始除く)
ITプロジェクト全般に渡る無償支援サービス
Oracle Direct Conciergeサービスメニュー
業務改善計画の作成支援 • 業務診断サービス • BIアセスメントサービス
g
経営企画
BIアセスメントサ ビス システム運用状況の診断 •パフォーマンス・クリニック・サービス •システム・セキュリティ診断サービス •データ管理最適化サービス運用
IT 企画
システム企画の作成支援•業務診断サービス •BIアセスメントサービス デ タ管理最適化サ ビス構築
設計
RFP/提案書の作成支援 BIアセスメントサ ビス システム構築時の道案内 •Access / SQL Serverからの移行 •MySQL / PostgreSQLからの移行 プ支 •BIアセスメントサービス •メインフレーム資産活用相談サービス •仮想化アセスメントサービス •Oracle Database 構成相談サービス •Oracle Database バージョンアップ支援•Oracle Developer Webアップグレード •システム連携アセスメントサービス