Назад | Перейти на главную страницу

Запуск и завершение работы Oracle с помощью Powershell

Я пытаюсь автоматизировать запуск и завершение работы некоторых экземпляров Oracle с помощью PowerShell.

Лучшее, что я придумал, ниже

param(
[String]$Instance = $(Throw 'Instance required' ),
[String]$Password = $(Throw 'Password required'),
[String]$ShutdownMode = 'IMMEDIATE'
)

$validShutdownModes = ('IMMEDIATE', 'NORMAL', 'ABORT')

if($validShutdownModes -notcontains $ShutdownMode)
{
    Throw 'Invalid ShutdownMode: [IMMEDIATE | NORMAL | ABORT]'
}

#Prepare the connection statement based on the Password and Instance name
$sqlConnect = 'connect sys/{0}@{1} as sysdba;' -f ($Password, $Instance)

#Prepare the shutdown statement based on the ShutdownMode
$sqlShutdown = 'shutdown {0};' -f ($ShutdownMode)

#Prepare the exit statement
$sqlExit = 'exit;'

#Get a temporary file for storing the SQLPLUS commands
$tmpFile = [System.IO.Path]::GetTempFileName()

#Write the commands to the file
Set-Content -path $tmpFile -value $sqlConnect
Add-Content -path $tmpFile -value $sqlShutdown
Add-Content -path $tmpFile -value $sqlExit

#Execute the commands
$output = &'sqlplus.exe' '/NOLOG' '@' $tmpFile

#Remove the temporary file
Remove-Item -path $tmpFile

#Dump the ouput of SQLPLUS to the console
$output

Это работает, но он не может справиться с чем-либо неожиданным, и запись паролей во временные файлы далека от идеала.

Есть ли какой-либо программный интерфейс, который я могу использовать для завершения работы экземпляров Oracle, или лучший способ использования SQLPLUS для такого рода задач?

Любая общая критика PowerShell в целом также приветствуется.

Спасибо

У меня нет опыта работы с PowerShell.

Однако как насчет использования ORADIM, встроенной в Oracle командной строки для Windows для запуска / остановки баз данных? Он может останавливать / запускать экземпляры базы данных и экземпляр ASM.

Его использование намного чище, чем ваш обходной путь :)

См. Документацию Oracle. Вот. В нем есть примеры запуска и выключения.

Или используйте PowerShell для остановки / запуска OracleServiceSID.