#!/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
关机.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.
Oracle 使用 sqlplus 和 rman 工具进行管理,无论操作系统是什么。您的脚本不需要太多更改即可在 Linux 上运行。
如前所述,使用 crontab(查看 cron 手册页)并且不要忘记将用于执行维护的帐户添加到 dba 组。
我通常使用 2 个脚本:第一个设置环境,第二个调用将执行操作。
它可能是这样的:
shutdown_DevDB1.sh
关机.sh
关机.sql
大多数情况下,您只需复制第一个脚本并更改前三行即可。如果您的数据库有一些奇点,请将 sql 文件放在正确的位置以使用它,而不是使用通用的。
我建议尽快调查“cron”,你可能会发现 /etc/crontab 告诉你一些“有用”的东西,并且有定期的快捷目录:
此外,“crontab -u -l”将显示用户的 crontab ,这通常存储在 Linux 的 /var/spool/cron 下。这些都不是 Oracle 特有的,但它对于让作业自动可靠地运行至关重要,对于执行数据库快照和备份等非常有帮助。
启动和关闭脚本通常隐藏在“/etc/init.d”中,并且通常在初始安装时由软件包提供/安装。
如果您可以编辑您的问题以包含有关您的环境的更多详细信息,那么这将使某人能够对您的问题给出更完整的答案:-)
对于更复杂的任务,我建议使用脚本语言而不是 shell 脚本。当您可以建立数据库句柄时,通过多个不同的任务与数据库建立持久连接会容易得多。在 shell 脚本中,您倾向于调用多个命令行工具,每个工具都必须建立与数据库的连接,该连接随后在工具完成运行时被断开。
O'Reilly 有一本书专门从 DBA 而非应用程序开发人员的角度介绍 Perl 和 Oracle:
http://oreilly.com/catalog/9780596002107/
你可能会觉得很有帮助。
改变环境。非常简单,您可以使用一些别名来切换您的 ORACLE_HOME 和 PATH 以指向不同的数据库安装:
至于简单的启动/停止脚本,请查看以下 URL,在“oracle.sh”脚本中,该脚本是本机 RHEL 启动脚本
只是补充一下,买一本关于 shell 脚本的书,并确保你对此有很好的工作知识。Sh 及其衍生工具在编写脚本方面比 Windows CMD 文件要好得多 - 底层范式并没有那么不同,但它工作得更好一些。
其他海报之一提到了 perl,有各种各样的库可以与 Oracle 一起使用。查找 www.cpan.org 并四处寻找。Python 还支持很多 Oracle 库,其中最有趣的可能是 Anthony Tuninga 的CX_Oracle及其相关工具。
如果您想快速了解 Linux/Unix,这篇 Stackoverflow 帖子包含许多资源的链接以及有关系统各个方面的好书列表。有很多很多关于 Oracle 的书籍,我认为 Tom Kyte 的专家一对一 Oracle 和 Effective Oracle by Design 是一个好的开始。
最后,如果您正在使用 Oracle,请了解数据字典的工作知识。这非常有用,而且(恕我直言)比 SQL Server 上的要好很多。
您还应该查看用于管理数据库环境的 Oracle Enterprise Manager/Grid Control。它为您预定义了一组丰富的管理功能(包括启动/关闭实例等任务)。只是另一个想法。
还可以查看oraToolKit - Oracle 的瑞士军刀。
它非常好,它有助于在各种平台上执行 Oracle 安装任务,使用它们的“appctl”启动/关闭以及各种备份任务或选项。