Oracle-Datenbanken per PowerShell ansprechen und verwalten

Die PowerShell ist ein mächtiges Verwaltungswerkzeug, das auch das Management von Dritthersteller-Produkten ermöglicht, zum Beispiel von Oracle-Datenbanken.

Für den Zugriff auf Oracle-Datenbanken mit der PowerShell werden die Developer Tools für Visual Studio benötigt, genauer gesagt ODP.Net. Dabei handelt es sich um den Oracle Data Provider (ODP). Oracle stellt ODP.NET zum Download bereit.

Bestandteil von ODP.Net ist die DLL-Datei Oracle.ManagementDataAccess.dll. Diese befindet sich im Installationsverzeichnis der Developer Tools. Die DLL-Datei muss zunächst in die PowerShell geladen werden:

Add-Type -Path "C:\ODP\Oracle.ManagedDataAccess.dll"

Der Pfad zur DLL-Datei muss natürlich entsprechend korrekt gesetzt werden. Danach erfolgt das Ablegen des Connection Strings als Variable. Hier werden auch Benutzername und Kennwort gespeichert:

$Str = "Data Source=dbs1:1521;User Id=admin;Password=geheim"

$Cn = [Oracle.ManagedDataAccess.Client.OracleConnection]::new()

$Cn.ConnectionString = $Str

$Cn.Open()

Mit dem folgenden Befehl wird die Verbindung wieder geschlossen:

$Cn.Close()

Abfragen werden anschließend über OracleCommand-Objekte erstellt. Dabei ist der Verbindungsaufbau flexibel.

Alternative Verbindung zur Datenbank aufbauen

Die verschiedenen Daten lassen sich auch in unterschiedlichen Variablen definieren. So kann zum Beispiel die Anmeldung an der Datenbank auch in der PowerShell-Sitzung vorgenommen werden. Ein Beispiel für eine Verbindung sieht folgendermaßen aus:

Add-Type -Path "C:\odp \Oracle.ManagedDataAccess.dll"

$user = Read-Host -Prompt "Datenbank-Benutzer angeben"

$pass = Read-Host -Prompt "Kennwort"

$datasource = Read-Host -Prompt "Datenbank"

Die Datenquelle ($datasource) ist die Oracle-Instanz, zu der eine Verbindung aufgebaut werden soll. Eine ausführliche Hilfe, wie ein solcher Connection String aufgebaut ist, findet man auf der Seite Oracle Data Provider for .NET / ODP.NET connection strings.

Im Rahmen des Skriptes kann auch die Abfrage gleich definiert werden:

$query = "SELECT * FROM data.user WHERE first_name = 'Thomas' ORDER BY last_name"

Damit sich die Abfrage ausführen lässt, müssen die Daten, die oben eingegeben und als Variable gespeichert wurden, an den Datenbankserver übertragen werden:

$connectionString = 'User Id=' + $user + ';Pass=' + $pass + ';Data Source=' + $datasource

$connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connectionString)

$connection.open()

$command=$connection.CreateCommand()

$command.CommandText=$query

$reader=$command.ExecuteReader()

while ($reader.Read()) {

$reader.GetString(1) + ', ' + $reader.GetString(0)

}

$connection.Close()

Ein wichtiger Bestandteil für das Auslesen von Oracle-Datenbanken ist die Read-Methode. Microsoft beschreibt die Vorgehensweise dazu auf der Seite OracleDataReader.Read Method.

SimplySQL und Kelverion.Oracle verwenden

In der PowerShell Gallery gibt es ein PowerShell-Modul mit der Bezeichnung SimplySql. Dieses Modul lässt sich mit folgendem Befehl in der PowerShell laden:

Install-Module -Name SimplySql

Das Modul umfasst Cmdlets, mit denen sich verschiedene Datenbanken ansprechen lassen. Dazu gehören aktuell Microsoft SQL Server, SQLite, MySql, PostgreSQL und Oracle Database.

Ein weiteres Modul in diesem Bereich ist Kelverion.Oracle. Das Modul wird mit dem folgenden Befehl in der PowerShell integriert:

Install-Module -Name Kelverion.Oracle

Abbildung 1: Oracle-Datenbanken können in der PowerShell auch mit Modulen von Drittherstellern verwaltet werden.
Abbildung 1: Oracle-Datenbanken können in der PowerShell auch mit Modulen von Drittherstellern verwaltet werden.

Ein weiteres, hilfreiches Modul ist JS.OracleDatabase. Das Modul soll Oracle-DBAs bei der Verwaltung mehrerer Datenbanken helfen, die von Windows aus arbeiten. Es ermöglicht DBAs die Interaktion mit Datenbanken.

Nächste Schritte

Sechs Best Practices für eine Oracle-Datenbankoptimierung.

Autonomous Database verändert die Arbeit von Oracle DBAs.

Was Performance Tuning für Oracle-Datenbanken möglich macht.

Erfahren Sie mehr über Datenbanken

ComputerWeekly.de
Close