Inicialização e desligamento do Oracle com o Powershell

2

Estou tentando automatizar a inicialização e o desligamento de algumas instâncias do Oracle com o powershell.

O melhor que eu já vi até agora está abaixo

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

Isso funciona, mas não é possível lidar com qualquer coisa inesperada e gravar senhas em arquivos temporários está longe de ser ideal.

Existe alguma interface programática que eu possa usar para desligar instâncias do Oracle, ou uma maneira melhor de usar o SQLPLUS para esse tipo de tarefa?

Quaisquer críticas gerais ao PowerShell em geral também são bem-vindas.

Obrigado

    
por Cephas 24.06.2009 / 04:17

2 respostas

2

Não tenho experiência com o PowerShell.

No entanto, que tal usar o ORADIM, a linha de comando específica do Windows integrada da Oracle para iniciar / parar os bancos de dados? Pode parar / iniciar instâncias do banco de dados e instância do ASM.

Usar é muito mais limpo que sua solução alternativa:)

Consulte a documentação da Oracle para aqui . Tem exemplos de inicialização e desligamento.

    
por 25.06.2009 / 17:08
0

Ou use o PowerShell para interromper / iniciar o OracleServiceSID.

    
por 07.11.2009 / 19:41