cherezoff - stock.adobe.com

Oracle-Datenbanken per PowerShell steuern und verwalten

PowerShell ist ein umfangreiches Management-Tool, das auch die Verwaltung von Drittherstellerprodukten erlaubt, unter anderem 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 Oracle Data Provider for .NET (ODP.Net). 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 an dieser Stelle korrekt gesetzt werden. Danach erfolgt das Ablegen des Connection Strings als Variable. Hier werden auch Benutzername (Id) und Kennwort (Password) gespeichert:

$Str = "Data Source=dbs1:1521;User Id=admin;Password=geheim"
$Cn = [Oracle.ManagedDataAccess.Client.OracleConnection]::new()
$Cn.ConnectionString = $Str
$Cn.Open()

Mit folgendem Befehl wird die Verbindung wieder geschlossen:

$Cn.Close()

Abfragen werden anschließend über OracleCommand-Objekte erstellt.

Alternative Verbindung zur Datenbank aufbauen

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

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. Ausführliche Unterstützung, 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 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 folgendem 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-Datenbankadministratoren (DBA) bei der Verwaltung mehrerer Datenbanken unterstützen, die von Windows aus arbeiten.

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