使用 Powershell 启动和关闭 Oracle

使用 Powershell 启动和关闭 Oracle

我正在尝试使用 powershell 自动启动和关闭一些 Oracle 实例。

到目前为止我想到的最好的办法如下

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 的一般性批评。

谢谢

答案1

我没有使用过 PowerShell 的经验。

但是,如何使用 Oracle 内置的 Windows 特定命令行 ORADIM 来启动/停止数据库?它可以停止/启动数据库实例和 ASM 实例。

使用它比你的解决方法干净得多:)

请参阅 Oracle 文档这里.有启动和关闭示例。

答案2

或者使用 PowerShell 停止/启动 OracleServiceSID。

相关内容