DOAG Konferenz 2009, “Oracle und Microsoft .NET” · • Automatic Code Generation – WinForm...

Preview:

Citation preview

DOAG Konferenz 2009, “Oracle und Microsoft .NET”Nürnberg, 19.11.2009

Markus Kißling BU Server Technologies PCMLeitender Systemberater ORACLE Deutschland GmbHmarkus.kissling@oracle.com

AGENDA Oracle und Microsoft .NETWas ist neu bei ODT und ODP.NET

• Übersicht• Alte Welt mit ODBC und OLEDB (ADO)• Microsoft Office (Business) Applications (OBAs)• Oracle Integration mit Microsoft .NET

• Was ist neu bei den Oracle Developer Tools (ODT) for Visual Studio• Was ist neu bei den Oracle Developer Tools (ODT) for Visual Studio• Development Lifecycle mit Source Code Versionsverwaltung

• Was ist neu beim Oracle Data Provider for .NET (ODP.NE T)• ADO.NET Object Model und Oracle Database Change Notification• Demos u.a. Messaging mit .NET und Oracle Streams Advanced Queuing (AQ)

• Deprecation von System.Data.OracleClient• Microsoft stellt die Entwicklung ihres Data Providers für Oracle ein• Was ist bei der Umstellung auf den Oracle Data Provider (ODP.NET) zu beachten

<Insert Picture Here>

Übersicht

Universelle Datenhaltung und universeller Datenzugriff (in der „alten“ Welt)

• Szenario 1: ODBC• Zugriff auf Oracle Stored Procedure aus MS Access über ODBC• Geschäftslogik im Oracle Server aus MS Office nutzen

• Szenario 2: ADO/OLE DB• Szenario 2: ADO/OLE DB• Migration von MS SQL Server nach Oracle mit der Oracle Migration

Workbench• Visual Basic-Anwendung leicht an Oracle anpassen (Standard SQL-Zugriffe)

und Einsatz des Oracle OLE DB Providers • Performance-Features wie Fetch-Size schon unter OLE DB verfügbar

Microsoft Office (Business) Applications (OBA) -Teil der „neuen“ Welt

Oracle’s Commitment to .NET

ODP.NET

Visual Studio Plug-ins

.NET Stored Procs 64-bit

ODP.NETODAC 2006

ODAC 11g

2nd ODAC 11g

Q3 20052002-03

.NET 1.x

Q2 2005

.NET 2.0 & VS 2005

Q3 2006

.NET 3.0

VS 2003

Q1 2007 2007-08

Windows Vista & 2008

2009

.NET Development Environment Support

Visual StudioEnvironmentVisual StudioEnvironment

ApplicationDevelopment

Deploy

Deploy

Oracle Data Provider for .NET

Oracle Developer Tools for Visual

Studio

.NET Application

.NET Application

Web or Deploy

Database Development

Oracle Database Extensions for .NET

Oracle Providers for ASP.NET

Web or Client/ServerApplication

Visual Studio

Oracle Developer Tools for VS.NET

WindowsWindows

LinuxLinux

und/oder...

Entwicklung auf WindowsDatenbank-Plattform wahlfrei

Visual StudioUmgebung

WindowsWindowsUnixUnix

Oracle 11g, 10g oder 9iOracle 11g, 10g oder 9i

weitere…weitere…

Oracle Data Provider for .NET

und/oder...

und/oder...

<Insert Picture Here>

Was ist neu bei denOracle Developer Tools for Visual StudioVisual Studio

Visual Studio und Oracle Development Lifecycle

Test, Tune, Deploy

Create Users/Roles

Create Schema Objects

Grant Privileges

.NET CodingPL/SQL and

SQL Editing/Debug

Source Control

Neue Features mit ODT 11g (11.1.0.7.20) Oracle Developer Tools for Visual Studio

ODT 11.1.7.20 ODT 11.1.6.20

Neue Features mit ODT 11g (11.1.0.7.20)Oracle Developer Tools for Visual Studio

Neue Features mit ODT 11g (11.1.0.7.20) Oracle Developer Tools for Visual Studio

Oracle Developer Tools for Visual StudioVisual Studio Integration (1)

• Voll integriert mit Visual Studio 2008 und 2005• Server Explorer• Data Sources Window • Dataset Designer• TableAdapter Configuration Wizard • Query Builder/Query Designer• Query Builder/Query Designer• usw.

• Automatic Code Generation – WinForm und ASP.NET• Für die Erstellung von einfachen Anwendungen

Oracle Developer Tools for Visual StudioVisual Studio Integration (2)

• Oracle Wizards und Designers• Table/View Designer• Stored Procedure/Function/Package Wizards• Grant/Revoke Privileges Wizard• UDT Designers• UDT Custom Class Code Generation Wizard• Table/View Migration Wizard

• Oracle Data Window• Oracle Database Project

• Editieren und Ausführen von SQL Skripten• SQL*Plus Built In• Source Control Integration

• Integrierter PL/SQL Editor und Debugger

Oracle Developer Tools for Visual StudioVisual Studio Integration (3)

• Oracle Query Window (Abfragefenster)• Ad Hoc SQL• Explain Plan (Ausführungspläne)

• .NET Stored Procedure Deployment• Integriertes Hilfesystem – SQL, PL/SQL Schlüsselwörter• Integriertes Hilfesystem – SQL, PL/SQL Schlüsselwörter

ODT 11.1.0.7.20 – Was ist neu? (1)

• Performance Analyse und Tuning• Oracle Performance Analyzer

• Laufende Anwendungen gegen die Datenbank optimieren• SQL Tuning Advisor

• Ad-hoc Abfragen im Abfragefenster optimieren• Ineffiziente Anwendungs-SQL-Statements tunen (geliefert aus

dem Oracle Performance Analyzer)

• Messaging• Advanced Queuing (AQ) Designer

• Anlegen, ändern und administrieren der Queues und Queue Tabellen

ODT 11.1.0.7.20 – Was ist neu? (2)

• Application Development Lifecycle• Auswählen und Ausführen von Operation auf mehreren Knoten im

Server Explorer (SE)• SQL Skripte aus beliebigen Oracle Schemaobjekten oder

Gruppen von Objekten erzeugen• Beliebig viele Stored Procedures auf einmal kompilieren

• Server Explorer Collection Node Filtering• Server Explorer Collection Node Filtering• Anzuzeigende Schemaobjekte einschränken

• Server Explorer Node Paging• Verbesserte Performance bei vielen Datenbank-Objekten

• Benutzer- und Rollen-Designer und Benutzer- und Rollen-Knoten imServer Explorer

• Grant/Revoke Privileges Wizard für Unterstützung bei System Privilegien und Rollen

Oracle Developer ToolsWizards and Designers

• Connection Dialog

• Oracle Server Login

• Connection Filter Login

• Preview SQL Dialog

• Table Designer

• Import Table Wizard

• Trigger Designer

• View Designer

• Import Table Wizard

• View Designer

• Integration with Query Designer

• User Designer

• Role Designer

• Grant/Revoke Dialog

• Run SQL*Plus Dialog

• Oracle Database Project Run On Dialog

• Oracle Database Project Add Database Reference Dialog

• Query Table Designer

• Queue Table Designer

• Queue Designer

• Function Designer

• Procedure Designer

• Stored Procedure Run Dialog

• Package Designer

• Sequence Designer

• Synonym Designer

• XML Schema Designer

• Object Type Designer

• Varray Designer

• Nested Table Designer

• OracleDataAdapter Wizard

• Oracle Deployment Wizard for .NET

• Oracle Custom Class Wizard

• Generating Classes with the Oracle Custom Class Wizard

• Oracle Performance Analyzer

Neu in ODT 11.1.0.7.20

DEMODevelopment Lifecycle

1) User Designer 2) Role Designer

3) Import Table Wizard4) Automatic Code Generation (VB-Code)

5) Microsoft Query Builder6) SQL Skript generieren

7) Applikationscode in Source Safe/Subversion einche cken

Source-Code VersionsverwaltungVisual Studio mit Subversion/VisualSVN/TortoiseSVN

• Subversion als Basis• TortoiseSVN (Windows Shell Extension) http://tortoisesvn.tigris.org/

• VisualSVN (enthält Subversion) http://www.visualsvn.com/

Source-Code VersionsverwaltungVisual Studio mit Subversion/VisualSVN/TortoiseSVN

NEU

Source-Code VersionsverwaltungVisual Studio mit Subversion/VisualSVN/TortoiseSVN

Source-Code VersionsverwaltungVisual Studio mit Subversion/VisualSVN/TortoiseSVN

Source-Code VersionsverwaltungVisual Studio mit Subversion/VisualSVN/Tor toiseSVN

Source-Code VersionsverwaltungMS SourceSafe 2005

Source-Code VersionsverwaltungMS SourceSafe 2005

Source-Code VersionsverwaltungMS SourceSafe 2005

Source-Code VersionsverwaltungMS SourceSafe 2005

DEMODEMOOracle Developer Tools for Visual Studio

1) SQL Tuning Advisor

2) Oracle Performance Analyzer

<Insert Picture Here>

Was ist neu beimOracle Data Provider for .NET

ODP.NET - Basics

• ADO.NET Standard implementiert• Einfach und intuitiv einsetzbar• Nativer Zugriff auf die Oracle Datenbank

• Advanced Oracle Datenbank Features werden unterstützt• z.B. RAC, Performance, Security, Datentypen, XML, usw.

• DB-Server auf beliebigen Betriebssystem• DB-Server auf beliebigen Betriebssystem• DB-Client auf 32-Bit oder 64-Bit Windows-Betriebssystem

• Unterstützung ab .NET Framework 1.0 und höher

• DB-Client und Server-Versionen müssen nichtübereinstimmen

• Frei und kostenlos zum Download auf Oracle Technet (OTN)• http://otn.oracle.com/dotnet

ODP.NET Object Model

DataSet OracleDataAdapter

Connected Layer(ODP.NET)

DisconnectedLayer

Oracle CommandBuilder

DataLayer

DataAdapter

OracleTransaction

OracleCommand

OracleConnection

OracleDataReader

Oracle

CommandBuilder

OFFLINE!!!

Unterstützungdurch

DB Change Notification

Key ODP.NET Features (1)

• Connection Pooling• RAC- und Data Guard Pooling-Optionen• Performance Counter

• Komplette PL/SQL-Unterstützung• Packaged, Non-Packaged, Anonymous, Autonomous• Packaged, Non-Packaged, Anonymous, Autonomous• Batch SQL-Verarbeitung mit anonymen PL/SQL

• Native Oracle-Datentypen• REF Cursors, LOBs, XMLType, TimeStamp usw.• Safe Type Mapping mit .NET Datentypen• Oracle-Datentypen im DataSet

• OracleDataAdapter.ReturnProviderSpecificTypes = true

Key ODP.NET Features (2)

• Transactionen• Enterprise Services

• Oracle Services for MTS (OraMTS) bei verteilten (distributed) Transaktionen einsetzen

• Local (Implicit und Explicit)• Savepoints• Savepoints

• Parameters• PL/SQL Associative Array-Datentyp• LOBs und SecureFiles

• Pre-Fetch oder Defer LOB-Abfragen möglich

Key ODP.NET Features (3)

• XML• XMLType Datentyp• XML aus DB abfragen und speichern

• Relational und Object-relational• Interoperabilität mit MS XML APIs (z.B. XmlReader)• Unterstützt XSLT, XPATH und XML Schema• Unterstützt XSLT, XPATH und XML Schema

• RAC• Automatic Load Balancing • Automatische Bereinigung von “Dead” Connections

• Data Guard• Automatische Bereinigung von “Dead” Connections

Key ODP.NET Features (4)

• Database Change Notification• Performance Tuning

• Statement Caching• FetchSize und RowSize

• Security und Auditing• Security und Auditing• Proxy Authentication• End-to-end Tracing mit ClientId, Action und Module

• Deployment• Oracle Universal Installer – für Einzelplatz-Installation• Xcopy Instant Client – für große Umgebungen

ODP.NET 11.1.0.7.20 – Was ist neu? (1)

• Performance und Durchsatz• Self-Tuning

• Statement Cache Size wird zur Laufzeit angepaßt• Schnellere Datenabfragen

• beim DataSet und OracleDataReader• Geringerer Speicherbedarf• Keine Codeänderungen notwendig mit neuer ODP.NET Version

• Promotable Transactions• Lokale Transaktionen werden zur Laufzeit zur verteilten

promotet• benötigt Oracle Database 11g und OraMTS 11.1.0.7.20

ODP.NET 11.1.0.7.20 – Was ist neu? (2)

• Messaging• Oracle Streams Advanced Queuing API

• .NET Messaging Anwendungen mit der integrierten Oracle Database Queuing-Technologie aufbauen

• High Availability Event Notification und Callback• High Availability Event Notification und Callback• Event Handler einsetzen, die auf geänderten DB-Status reagieren

• Code Access Security• Imperative und Declarative Oracle Security anwenden

• Database Startup und Shutdown programmieren

Callbacks für HA Event Notifications

Neu bei ODP.NET 11.1.7.0.20 (4)

• Listener.ora für Remote Startup – DB bekanntmachenSID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = C:\oracle\product\11.1.0\db_1)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:C:\oracle\product\11.1.0 \db_1\bin\oraclr11.dll")

)

(SID_DESC =

(GLOBAL_DBNAME = orcl)(GLOBAL_DBNAME = orcl)

(ORACLE_HOME = C:\oracle\product\11.1.0\db_1)

(SID_NAME = orcl)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = MARKUS-PC)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

DEMODEMOEinfache C#/VB-Anwendung mit

ODP.NET

DEMOOracle Database Change Notification

DEMO

Typisches End-User Szenario

1. User A: Connect zu DB zur Abfrage Tabelle X2. User A: Cached Daten in der Mid-Tier/Client

(z.B. DataSet)• Gibt Connection an Connection-Pool zurück, um

Ressourcen zu sparenRessourcen zu sparen

3. User B: Connect zur DB und modifiziert Daten in Table X

User A nutzt jetzt inkorrekte Daten

1. (grant change notification to username;)2. Wenn Kommando ausgeführt wird, wird Notification

Registrierung (NR) in DB erzeugt3. ODP.NET startet den Application Listener mit der

Notification Registrierung (NR)

DB Change NotificationAblauf

Notification Registrierung (NR)4. Wenn Änderung eintritt, sendet DB-Server

Benachrichtigung an Client5. Client führt Event Handler aus

Change Notification Beispiel

OracleCommand Data Dictionary

Execute()Execute()

Notification RequestEMP

Data Change

NotificationQueue

Application

Listener

Client Database

OracleDependencyOnChange

Add DependencyAdd Dependency

Notification Request

Unterstützte Abfragetypen

• Unterstützt alle Abfragetypen, wie…• Views• Joins• Stored Procedure Queries• REF Cursor

• …ausgenommen Abfragen mit…• Fixed Tables der Fixed Views (z.B. X$, V$)• DBlinks innerhalb• Materialized Views

Zurückgelieferte Information aus Change Notification

• Namen des modifizierten Objekts und Schema-Name• Das DB-Event das Notification verursachte

• INSERT, UPDATE, DELETE, ALTER TABLE, oder DROP TABLE

• Globale Events, wie STARTUP und SHUTDOWN• Globale Events, wie STARTUP und SHUTDOWN• Mit RAC wird die Notification geliefert, wenn die erste

Instance startet, oder beim Shutdown der letzten

• RowID der modifizierten Objekt-Row

Konfiguration der Notification Registrierung (NR)

• NR explizit entfernen• OracleDependency.RemoveRegistration

• NR kann nach einiger Zeit ablaufen• OracleCommand.Notification.Timeout

• NR persistent nach erster DB-Änderung• NR persistent nach erster DB-Änderung• OracleCommand.Notification.IsNotifiedOnce = false

DEMOOracle Streams Advanced Queuing (AQ)

und .NET

mit User Defined Types (UDTs)

DEMO

Client Result Cache (neu in Oracle 11g)

• $ sqlplus / as sysdbaSQL> alter system set client_result_cache_size=64M scope=spfile;SQL> startup force

• cmd.CommandText = "select /*+ result_cache */ first_name, last_name from employees";"select /*+ result_cache */ first_name, last_name from employees";

DEMOOracle Client Cache mit .NET

DEMO

DEMOOracle Data Provider for .NET

Performance FeaturesOracleCollectionType.PLSQLAssociativeArray

DEMO

DEMOOracle Objekte (User Defined Types UDT)

mit ASP.NET Anwendung

DEMO

DEMOOracle XML Database und .NET

DEMO

DEMODatenbank Security und .NET

Oracle Virtual Private Database (VPD)

Mandantenfähige Datenbanken

DEMO

<Insert Picture Here>

Deprecation von System.Data.OracleClient

Was ist bei der Umstellung Was ist bei der Umstellung auf ODP.NET zu beachten?

ODP.NET - Oracle managed Provider

Zwei Namensräume:• Oracle.DataAccess.Client• Oracle.DataAccess.Types

Assembly (Referenz): Assembly (Referenz): • Oracle.DataAccess.dll

.NET Framework - Oracle managed Provider

Ein Namensraum:• System.Data.OracleClient

Assembly (Referenz): • System.Data.OracleClient.dll• System.Data.OracleClient.dll

OracleCommand - ODP.NET vs. .NET-Framework

ODP.NET vs. Microsoft OracleClientPerformance

ODP.NET vs. Microsoft OracleClientSecurity

High Availability and Scalability High Availability and Scalability

ODP.NET vs. Microsoft OracleClientOracle Database Technology

ODP.NET vs. Microsoft OracleClientEase of Use and Developer Productivity

ODP.NET vs. Microsoft OracleClientSchritte

• Im Projekt Referenz hinzufügen Oracle.DataAccess• ODP.NET Namespace hinzufügen

C# using Oracle.DataAccess.Client;VB Imports Oracle.DataAccess.Client

• und Microsoft OracleClient Namespace löschen (auskommentieren)C# //using System.Data.OracleClient;VB ‘Imports System.Data.OracleClient

• Ggf. Namespace Oracle.DataAccess.Types hinzufügen (wenn ODP.NET • Ggf. Namespace Oracle.DataAccess.Types hinzufügen (wenn ODP.NET spezifischen Datentypen verwendet werden)C# using Oracle.DataAccess.Types;VB Imports Oracle.DataAccess.Types

• Connection String anpassen• Integrated Security (MS) nach “User Id=/” (bei OS Authentifizierung)• Unicode ggf. Herausnehmen, ODP.NET arbeitet immer mit Unicode

• Parameter Binding by Name• Microsoft OracleClient und ODP.NET unterstützen “colon to bind/bind by position” und “bind by name”

Parameter• ODP.NET standardmäßig “bind by position”• MS OracleClient standardmäßig “bind by name”• C#/VB OracleCommand.BindByName=true; (um MS Verhalten zu erhalten)•

<Insert Picture Here>

Oracle Providers for ASP.NET

Oracle Providers for ASP.NET

• Pre-Built Services zum Speichern des Website Status in Oracle• Services für häufig benutzte Website Information• Z.B. user info, user roles, shopping cart

• Leicht zu erlernen• Basieren auf Standard ASP.NET Provider APIs und • Basieren auf Standard ASP.NET Provider APIs und

Schema• Erben von den .NET Framework 2.0 Basis Klassen• Kompatibel mit den ASP.NET Service Klassen• Keine “propriätären” Erweiterungen in den Oracle ASP.NET

Providern

Oracle Providers for ASP.NET

• Nahtlose Integration mit den ASP.NET Services und Controls• Referenz auf spezifischen Provider unnötig• Hoher Abstraktionslevel: Services und Control basierte

Programmierung

• Leichtes Umschalten von SQL Server auf Oracle• Leichtes Umschalten von SQL Server auf Oracle• Konfigurationsdatei bestimmt die Data Source

• Leicht zu installieren und zu verwalten• Über IIS oder Website Admin Tool

Oracle Providers for ASP.NET

IIS

ASP.NET Controls

ASP.NET Services

Oracle Providers for ASP.NET

ODP.NET

Verfügbare Provider

• Oracle Providers for ASP.NET Komponenten• Membership Provider • Role Provider• Profile Provider• Session State Provider• Site Map Provider• Site Map Provider• Web Parts Personalization Provider• Web Event Provider• Cache Dependency Provider

• Administratoren den/die Provider aus• Die meisten Provider sind voneinander unabhängig

Web.config anpassen

1

2

Beispiel: Warenkorb/SessionState

2

1

3

Zweimal GolfBag anklicken

SessionState im SQL Developer

http://otn.oracle.com/dotnet

ODAC 11g = ODT + ODP.NET + Providers for ASP + DB Extensions + OLE DB + OO4O + Services for MTS + ODBC

Artikelserie im dot.net-magazin

Oracle11g für Windows und .NETOracle11g für Windows und .NETOracle11g für Windows und .NETOracle11g für Windows und .NET

InformationenInformationenInformationenInformationen

www.lehmanns.dewww.lehmanns.dewww.lehmanns.dewww.lehmanns.dewww.amazon.dewww.amazon.dewww.amazon.dewww.amazon.de

Oracle Community WebsiteOracle Community WebsiteOracle Community WebsiteOracle Community Websitehttp://www.oracle.com/global/de/community/platform/index.htmlhttp://www.oracle.com/global/de/community/platform/index.htmlhttp://www.oracle.com/global/de/community/platform/index.htmlhttp://www.oracle.com/global/de/community/platform/index.htmlwww.oracle.de www.oracle.de www.oracle.de www.oracle.de ���� AnwendergruppenAnwendergruppenAnwendergruppenAnwendergruppen ���� Windows und .NETWindows und .NETWindows und .NETWindows und .NET

Oracle Technology NetworkOracle Technology NetworkOracle Technology NetworkOracle Technology Networkhttp://www.oracle.com/technology/dotnethttp://www.oracle.com/technology/dotnethttp://www.oracle.com/technology/dotnethttp://www.oracle.com/technology/dotnet

The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.relied upon in making purchasing decisions.The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Recommended