- PowerShell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- Update-DatabaseList fragt MSSQL und OLVM sofort neu (beide Listen sind jetzt 10 Minuten zwischengespeichert). - Sind beide Listen leer, wird -Database ohne ValidateSet gebaut – eine leere ValidateSet wirft, und kein Befehl wäre mehr aufrufbar. - RequiredModules: FOC-SQL 2.1.0, ORACLE 1.1.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .github/workflows | ||
| Module | ||
| Tests/DBMANAGER | ||
| README.md | ||
DBMANAGER
PowerShell-Modul mit einheitlichen Befehlen für die Datenbanken der LHP. Es verteilt jeden Aufruf nach Datenbanktyp an eines der beiden Fachmodule:
| Modul | Repo | Zuständig für |
|---|---|---|
| DBMANAGER | LHP542/DBMANAGER |
öffentliche Befehle, Verteilung, Zeitplanung |
| FOC-SQL | LHP542/FOC-SQL |
MSSQL auf dem FailOverCluster (PSSession, Aufgabenplaner) |
| ORACLE | LHP542/ORACLE |
Oracle-Hosts (SSH, Restore Points, OLVM) |
Man importiert nur DBMANAGER; FOC-SQL und ORACLE sind als RequiredModules
mit Mindestversion eingetragen und werden mitgeladen. DTM nutzt dieselben
Befehle.
Befehle
Jeder Befehl nimmt -Database (mit Tab-Vervollständigung über alle MSSQL-
Datenbanken und Oracle-Hosts) und ruft <Befehl>-MSSQL bzw. <Befehl>-Oracle
auf:
Backup-Database, Set-Snapshot, Sync-Database-ToTest, Restore-Snapshot,
Remove-Snapshot, Copy-Database-ToSamba, Set-Archive-Log,
Get-DatabaseStats, Close-DbSessions
Nur MSSQL (Oracle-Datenbanken werden mit einer Meldung abgelehnt):
Get-DbBackups, Invoke-DbRestore, Invoke-DbMaintenance,
Set-DbRecoveryMode, Set-DbQueryStore, Set-DbPageVerify,
Reset-DbCompatibility
Direkt aus dem Fachmodul, ohne DBMANAGER: Get-ClusterHealthStatus (FOC-SQL,
bekommt keine Datenbank), Get-OracleRestoreInfo und Invoke-OlvmSnapshot
(ORACLE, Ziel steht im Namen).
Geplante Aufträge (Backup-Database, Set-Snapshot, Sync-Database-ToTest)
nehmen -Time 'HH:mm', -Date 'dd.MM.yyyy' oder -Immediate; ohne diese
Angaben wird gefragt. Die Zeit löst DBMANAGER auf, die Fachmodule bekommen nur
noch ein fertiges [datetime] bzw. $null für sofort.
Datenbanklisten
Die Auswahl für -Database besteht aus den Datenbanken des MSSQL-Servers
(Get-MssqlDatabases, FOC-SQL) und den Oracle-Hosts aus OLVM
(Get-OracleDatabases, ORACLE). Beide Listen werden 10 Minuten
zwischengespeichert – vorher ging bei jedem Befehl und jedem Tab-Druck eine
Abfrage an den Server. Die letzte erfolgreiche Liste liegt zusätzlich unter
%LOCALAPPDATA%\DBMANAGER\cache\ und springt ein, wenn Server oder OLVM
nicht erreichbar sind.
Gerade eine Datenbank oder VM angelegt? Update-DatabaseList fragt beide
Quellen sofort neu.
Für Oracle braucht die Konsole einmalig einen OLVM-Zugang (in DTM läuft das automatisch):
Get-Credential | Export-Clixml "$env:USERPROFILE\olvm-credential.xml" # z. B. admin@internal
Ablage und Profil
Auf Samba liegen die Repos als Git-Klone nebeneinander (aktualisiert per
git pull); das Modul steckt jeweils eine Ebene tiefer, unter
<Repo>\Module\<Modul>:
\\samba01\542$\5424_IT-Basis-Dienste\MS-SQL\Powershell\Module\
DBMANAGER\Module\DBMANAGER\
FOC-SQL\Module\FOC-SQL\
ORACLE\Module\ORACLE\
MSSQL\ (Server-Modul, siehe LHP542/MSSQL)
MySQL-MariaDB\ (Server-Kit, von DTM nicht geladen)
Profil-Skript für die Konsole (notepad $PROFILE):
$Path = ($env:PSModulePath -split ';')[0]
$Module = "\\samba01\542$\5424_IT-Basis-Dienste\MS-SQL\Powershell\Module"
foreach ($m in 'FOC-SQL', 'ORACLE', 'DBMANAGER') {
Copy-Item -Path "$Module\$m\Module\$m" -Destination $Path -Recurse -Force
}
# FOC-SQL und ORACLE ausdrücklich vorab: über RequiredModules nachgeladene
# Module ignorieren -DisableNameChecking.
foreach ($m in 'FOC-SQL', 'ORACLE', 'DBMANAGER') {
Import-Module $m -DisableNameChecking
}
Nicht mehr Get-ChildItem $Path -Directory | Import-Module verwenden: das
würde auch das serverseitige MSSQL-Modul importieren, falls es im Modulpfad
liegt, und dessen Invoke-Sqlcmd verträgt sich nicht mit FOC-SQL.
Neue Funktion
In jedem der drei Module gilt dieselbe Drei-Punkt-Checkliste, sonst ist die Funktion im Code da, wird aber nicht exportiert:
<Modul>.psm1– Funktion +Export-ModuleMember -Function <Name><Modul>.psd1–FunctionsToExport<Modul>_ToExport.ps1– Generator (-Pathfür einen lokalen Lauf)
Neuer datenbankbezogener Befehl: Umsetzung als <Name>-MSSQL in FOC-SQL
und/oder <Name>-Oracle in ORACLE, Verteilung als <Name> hier. Bricht die
Änderung die Aufrufe eines Fachmoduls, dessen ModuleVersion heben und die
Mindestversion unter RequiredModules in DBMANAGER_ToExport.ps1 nachziehen.