37
MS PowerShell und Oracle interaktiv – intuitiv - inspirativ science + computing ag © 2009 Holger Bär

MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Embed Size (px)

Citation preview

Page 1: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

MS PowerShellund Oracle

interaktiv – intuitiv - inspirativ

science + computing ag © 2009

Holger Bär

Page 2: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

1 Einführung in die PowerShell1 Einführung in die PowerShell

2 Powershell und Oracle

3 Einsatz in der Praxis

Page 3: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

EINFÜHRUNG IN DIE POWERSHELL

Page 4: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. …Nehmen Sie sich am besten die nächsten drei Wochen frei, um alle Details kennen zu

science + computing ag © 2009

drei Wochen frei, um alle Details kennen zu lernen. Sie werden die nächsten 30 Jahre davon profitieren.

Peter Monadjemi Windows PowerShell Crashkurs

Page 5: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Common Model for developing administrative Interfaces

Common Model for Admin Interfaces

Grafisches Adminstratives Tool

ScriptsMMC

Snap-IN

ApplicationMisc.

Altes Modell Neues Modell

science + computing ag © 2009

Grafisches Adminstratives Tool(z.B. MMC)

Windows oder ServerProdukt Funktionalität

Command LineTool

ComponentObject

Model (COM)

WMIKlassen

Windows PowerShell Commandlets

Microsoft .NET Framework

Windows oder ServerProdukt Funktionalität

Page 6: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Einflußfaktoren

science + computing ag © 2009

Page 7: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Commandlets (Cmdlet)

� PowerShell-Befehle heißen „Commandlets“ bzw. Cmdlets- 129 Befehle eingebaut

� Allgemeine Syntax:- Verb-Substantiv [-Parameterliste]

� Beispiele:- get-help, get-location, get-command

science + computing ag © 2009

- get-help, get-location, get-command- get-childitem c:\daten, set-location c:\windows, remove-item

� Ausserdem:- Berechnungen: 10* (8 + 6)- Aufruf DOS-/Windows-EXEs: c:\windows\notepad.exe- Aufruf WSH-Skriptdateien: .vbs, .js, .vbe, .wsf, etc.- Aufruf Windows-Dokumente: .pdf, .doc, .xls, etc.

Page 8: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

� Standardmäßig ist nur der interaktiver Gebrauch erlaubt

� Sollen Scripte ausgeführt werden, so muß die Ausführungsrichtlinie (ExecutionPolicy) geändert werden

� Scriptfiles (.ps1) werden standardmäßig mit Notepad geöffnet

Sicherheit ist ein zentraler Aspekt der PowerShell

Secure by default

science + computing ag © 2009

geöffnet

Aber:

PowerShell ist durch "Secure by Default" keine Alternative für Login-Scripte

Page 9: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Variablen

� Variablen beginnen mit vorangestellten $ Dollarzeichen. $a=42$a="Hello World" $a=[int] 42$a=[DateTime] "12/24/2007"

� Das Voranstellen des Typnamens

science + computing ag © 2009

� Das Voranstellen des Typnamens[int] $a =5bewirkt, daß die Variable nur Daten diese Typs aufnehmenkann. (Strenge Typisierung wie Java, C++ oder C#)

Page 10: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Arrays

� Einfache Arrays über kommaseparierte Liste oder @( , ) $a = "a", "b", "c" oder $a = @("a", "b", "c")$n = 1, 2, 3 oder $n=@(1,2,3)

� Leerer Array $leer=@()

� Mehrdimensionaler Array

science + computing ag © 2009

� Mehrdimensionaler Array$ma = @( ("a", 1),("b", 2), ("c",3) )

� Zugriff auf Elemente (Beginn bei Null)$a[0]$n[2]$ma[0][1]

Page 11: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Navigationsbefehle

Cmdlet Alias Beschreibung

Set-Location cd, chdir Festlegen des Standorts(Providerwechsel mit Doppelpunkt)

Get-Location pwd Abruf des aktuellen Standorts

Get-ChildItem dir, ls Auflisten der Elemente

science + computing ag © 2009

Get-ChildItem dir, ls Auflisten der Elemente

Get-Contents type, cat Abruf des Elementinhalts

New-Item md, mkdir Erstellen eines Elements (Ast oder Blatt)

Page 12: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Vergleichsoperatoren

Vergleichs-operatorGroß/Klein-schreibung ignorieren

Vergleichs-operatorGroß/Klein-schreibung beachten

Bedeutung

-eq -ceq Gleich

-ne -cne Ungleich

-gt -cgt Größer als

science + computing ag © 2009

-gt -cgt Größer als

-ge -cge Größer oder Gleich als

-lt -clt Kleiner als

-le -cle Kleiner oder Gleich als

-match -cmatch entspricht (nicht so streng wie gleich) (Regular Expression)

-notmatch -cnotmatch entspricht nicht (Regular Expression)

-like -clike wie (wildcards)

-notlike -cnotlike nicht wie (Wildcards)

Page 13: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Vergleichsoperatoren

Vergleichs-operator

Bedeutung

-contains enthält (für Collections)

-notcontains enthält nicht (für Collections)

science + computing ag © 2009

-replace ersetze (Suche mit Regular Expression möglich)

-is Ist vom Typ

-isnot Ist nicht vom Typ

Page 14: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Objektpipeline

� Weitergabe von .NET Objekten und nicht von unstrukturierten Daten (Strings)

� Pipelineoperator (Verkettungszeichen): |

� Das aktuelle Pipelineobjekt: $_Get-Process | Where-Object { $_.cpu –gt 5 } | Sort-Object cpu | Format-Table

Get

science + computing ag © 2009

Cm

dlet #1G

et-Process C

lass

Windows PowerShell Pipeline ProcessorC

mdlet #2

Where C

lass

Cm

dlet #3S

ort Class

Cm

dlet #4F

ormat C

lass

Page 15: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Kontrollstrukturen

� if (Bedingung) {…} elseif {…} else {…}

� for ([Initialisierer]; [Bedingung]; [Iterator]) {…}

� switch ($var) { Wert: {…} }

� while(Bedingung) { … }

� do { … } while (Bedingung)

� do { … } until (Bedingung)

� foreach ($var in $menge) {…}

science + computing ag © 2009

� function name {…}

� return

� throw "Fehlertext"

� trap Fehlerklasse { … } else { … }

� throw Fehlerklasse

� exit

� continue

� break

Page 16: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Kommentare und Zeilenaufteilung

� Kommentare: #

� Pipeline |

� Befehlstrenner ;

science + computing ag © 2009

� Befehlstrenner ;Befehl ; Befehl ; Befehl

Page 17: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

PowerShell Team blog: http://blogs.msdn.com/PowerShell/Newsgroup: Microsoft.Public.Windows.PowerShellMicrosoft PowerShell Script Centerwww.microsoft.com/technet/scriptcenter/hubs/msh.mspx

PowerShell Community: http://www.powershellcommunity.org

Karl Prosser/Tobias Weltner powershelllive.comHolger Schwichtenberg www.it-visions.de

Websites zur PowerShell

science + computing ag © 2009

Holger Schwichtenberg www.it-visions.deMarc van Orsouw’s blog http://mow001.blogspot.comLee Holmes http://www.leeholmes.com/blog/

Powershell Beispiele http://www.scriptinganswers.com

PowerGui http://www.powergui.org

Page 18: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

POWERSHELL UND ORACLE

Page 19: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

�Voraussetzungen

�Zugriff auf Oracle DB über ODP.Net

�Öffnen einer Connection

�Verwendung des OracleCommand Objekts

�Einsatz von Parametern

PowerShell und Oracle

science + computing ag © 2009

�Einsatz von Parametern

�Verwendung des DataReaders

�Performance Betrachtungen

Page 20: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Installation

�.Net 2.0 oder höher

�Oracle Client / Instant Client

�ODP.Net für Oracle 9i, 10g oder 11g für .NET 2.0

PowerShell und Oracle

science + computing ag © 2009

VerwendungAufruf im Skript:[Reflection.Assembly]::LoadWithPartialName("Oracle.D

ataAccess")

Page 21: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Verbindungsaufbau

� Erzeugen eines ConnectionObjects

$constr = "User Id=hb;Password=hb;Data

Source=localhost:/isen"

$conn= New-Object \

Oracle.DataAccess.Client.OracleConnection($constr)

PowerShell und Oracle

science + computing ag © 2009

Oracle.DataAccess.Client.OracleConnection($constr)

$conn.Open()

Page 22: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Datenzugriff

� Erzeugen eines CommandObjects(egal ob Stored Procedure, DML/DDL)

$command = New-Object

Oracle.DataAccess.Client.OracleCommand(

PowerShell und Oracle

science + computing ag © 2009

„DOAG.DEMO“, $dbconnection)

ODER

$command = $conn.CreateCommand()

$command.CommandText = „DOAG.DEMO“

Page 23: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Datenzugriff - Fortsetzung

Setzen des CommandTyps$command.CommandType=

[Text|StoredProcedure|TableDirect]

Ausführen des Commandos

PowerShell und Oracle

science + computing ag © 2009

Ausführen des Commandos$command.ExecuteNonQuery()

$command.ExecuteReader()

$command.ExecuteScalar()

$command.ExecuteStream()

demo0.ps1, demo1.ps1

Page 24: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Parameter

Platzhalter im SQL-Text lassen$command.CommandText=

“insert into emp (empno, ename) values (:1, :2)“

PowerShell und Oracle

science + computing ag © 2009

Automatisch bei Stored Procedures$command.CommandText=

“doag.one_param“

Page 25: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Parameter - Fortsetzung

Parameter �erzeugen

�Typ und Richtung angeben

�Binden

�Wert setzen

PowerShell und Oracle

science + computing ag © 2009

�Wert setzen$param = New-Object

Oracle.DataAccess.Client.OracleParameter()

$param.DbType = „Int32“

$command.Parameters.Add($param)

$param.Value=8911

demo2.ps1

Page 26: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Parameter - Fortsetzung

RefCursor�Ein Parameter wie (fast) jeder andere

�kann als Eingabe für weitere Prozedur verwendet werden

�kann direkt ausgelesen werden über einen DataReader

PowerShell und Oracle

science + computing ag © 2009

�kann direkt ausgelesen werden über einen DataReader

$param = NewParam 'RefCursor' 'Output'

$doag_demo.Parameters.Add($param)

$reader = $doag_demo.ExecuteReader()

while ($reader.read()) { $reader.getstring(1) }

demo5

Page 27: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Performance Betrachtungen

Automatische Optimierungen�Connection Pooling

�Cursor Caching / Statement Cache

�ab 11g: Result Cache

PowerShell und Oracle

science + computing ag © 2009

�ab 11g: Result Cache

demo2,demo3

Page 28: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Performance Betrachtungen

Manuelle Optimierungen�Autocommit vermeiden

�FetchSize anpassen

�Bulk Operationen

PowerShell und Oracle

science + computing ag © 2009

�Bulk Operationen

demo3/demo4,demo5, demo6/demo7

Page 29: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Metalink Note 848177.1

http://guyharrison.typepad.com/oracleguy/2008/01/accessing-

oracl.html

PowerShell und Oracle

science + computing ag © 2009

Page 30: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

POWERSHELL IMPRAXISEINSATZ

Page 31: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Powershell im Praxiseinsatz

� Datenmanagementsystem

- Anbindung eines Archivsystems 80TB

- Skripting mit Powershell- Skripting mit Powershell

- Auslagern/Rücklagern von Daten über Applikation steuern

Page 32: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten
Page 33: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Aufgaben Aus-/Rücklagerung

� Auslagern

- Auslesen der betroffenen Daten aus der Datenbank

- Zusammenpacken der Datenverzeichnisse in ZIP-Datei

- Verlagern in Auslagerungsdatenbereich- Verlagern in Auslagerungsdatenbereich

- Statusmeldung an DB

� Rücklagern

- Auslesen der angeforderten Daten aus der Datenbank

- Entpacken der ZIPDatei

- Verlagern in Online Bereich

- Statusmeldung an DB

Page 34: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Probleme

� Zeitgesteuerter Skriptablauf mit Cron

! Beim Ausloggen: Abbruch des Skripts

! Synchronisation über Lock-Dateien

� Lösung: PowerShell als Service� Lösung: PowerShell als Service

� PowerShell als Service

- Aufruf mit vollständigem Pfad (Leerzeichen)

Page 35: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Powershell als Service

� Service einrichten mit srvany

- HKLM\LocalMachine\System\Services\CurrentControlSet\PsService\Parameters : Application

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powe

rshell.exe -noninteractive -nologo -noprofilershell.exe -noninteractive -nologo -noprofile

-command "cd 'C:\Program

Files\PowershellSkripte'; &

./Auslagern_service.ps1"

- AppDirectory setzen reicht leider nicht!

� Einbetten in eigene Anwendung

http://www.codeproject.com/KB/cs/HowToRunPowerShell.aspx

Page 36: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Fazit

� Kombination aus .NET und Skripting ergibt starkes Duo

� Interaktives Arbeiten durch Objekt-Inspektion verkürzt Entwicklungszeit

� Administratoren und Entwickler benutzen die gleichen Tools

� Effiziente Datenverarbeitung in Skripten sehr einfach

Page 37: MS PowerShell und Oracle - doag.org · Herunterladen kann sie jeder,doch richtig kennen und schätzen zu lernen werden sie, gerade am Anfang, nur wenige. … Nehmen Sie sich am besten

Vielen Dank für Ihre Aufmerksamkeit

Holger Bär

science + computing AG

Telefon: 07071 9457-559

www.science-computing.de

E-Mail: [email protected]