Post on 25-Aug-2018
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.