在 Linux 中编写 Oracle 任务脚本

Oil*_*Rag 1 oracle linux

我对 Windows 比较熟悉,所以 Linux 目前对我来说是一个比较陌生的地方,所以如果这是一个愚蠢的问题,请原谅我。

基本上,我想知道是否有人对编写脚本以关闭/启动、备份和许多其他常规 DBA 任务有任何建议和/或建议。

我还将了解有关如何设置脚本以在多宿主环境中更改环境/家庭的任何指导。

我确实忘记提及 RHEL 5 的默认 shell 的一件事。

谢谢。

Ben*_*oit 5

无论操作系统如何,Oracle 都使用 sqlplus 和 rman 工具进行管理。您的脚本不应该需要太多更改即可在 Linux 上运行。

如上所述,使用 crontab(查看 cron 联机帮助页)并且不要忘记将用于执行维护的帐户添加到 dba 组。

我通常使用 2 个脚本:第一个设置环境,调用将执行操作的第二个。

它可能是这样的:

shutdown_DevDB1.sh

#!/bin/sh
set ORACLE_SID=DevDB
set ORACLE_HOME=/opt/oracle/Home1
set ORA_SCRIPTS=/opt/oracle/scripts

if [ -f $ORA_SCRIPTS/$ORACLE_HOME/$ORACLE_SID-shutdown.sql ]; then
    $ORA_SHUT = $ORA_SCRIPTS/$ORACLE_HOME/$ORACLE_SID-shutdown.sql
else
    $ORA_SHUT = $ORA_SCRIPTS/generic/shutdown.sql
fi
$ORA_SCRIPTS/shutdown.sh
Run Code Online (Sandbox Code Playgroud)

关机.sh

#!/bin/sh
echo `date`: shutting down $ORACLE_SID.
$ORACLE_HOME/bin/sqlplus /nolog @$ORA_SHUT
if [ $! != 0 ]; then
    echo Impossible to shut down $ORACLE_SID
    exit -1
fi
echo $ORACLE_SID has been shut down.
Run Code Online (Sandbox Code Playgroud)

关闭文件

connect / as sysdba
shutdown immediate;
quit;
Run Code Online (Sandbox Code Playgroud)

大多数情况下,您只需复制第一个脚本并更改前三行即可。如果您有一个具有某些奇点的数据库,请将 sql 文件放在正确的位置以使用它而不是通用文件。