在Linux中脚本化Oracle任务

我对Windows更加熟悉,所以目前Linux对我来说是一个相当陌生的地方,所以如果这是一个愚蠢的问题,请把我摒弃。

基本上,我想知道是否有人有任何build议和/或编写脚本关机/启动,备份和一些其他常规DBA任务的build议。

我也会对如何设置脚本来改变多宿主环境中的envionments / home的指导。

有一件事我忘了提及其RHEL 5的默认shell。

谢谢。

无论操作系统如何,Oracle都使用sqlplus&rman工具进行pipe理。 你的脚本不需要太多的改变就可以在Linux上工作。

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

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

这可能是这样的:

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 

shutdown.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. 

shutdown.sql

 connect / as sysdba shutdown immediate; quit; 

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

我会build议尽快调查'cron',你可能会发现/ etc / crontab会告诉你一些“有用”的东西,并且有一些定期的快捷目录:

 - /etc/cron.hourly - /etc/cron.daily 

另外'crontab -u -l'将显示用户的crontab,这通常存储在Linux下的/ var / spool / cron下。 这些都不是Oracle特有的,但它是自动可靠地运行作业所必需的,对于进行数据库快照和备份等等非常有帮助。

启动和closures脚本通常隐藏在“/etc/init.d”中,通常由软件包在初始安装时提供/安装。

如果你可以编辑你的问题,包括更多的关于你的环境的细节,那么这将使人们可以给你一个更完整的答案你的问题:-)

  • Linux发行版
  • 软件版本

我build议使用脚本语言而不是shell脚本来完成更复杂的任务。 当你build立一个数据库句柄时,通过多个完全不同的任务持久地连接到数据库会容易得多。 在shell脚本中,您倾向于调用多个命令行工具,每个命令行工具都必须build立到数据库的连接,随后在工具结束运行时将其拆除。

O'Reilly有一本专门介绍Perl和Oracle的书,从数据库pipe理员的angular度来看,与应用程序开发者不同:

http://oreilly.com/catalog/9780596002107/

你可能会发现很有帮助。

改变环境 非常简单,您可以使用一些别名来切换ORACLE_HOME和PATH以指向不同的数据库安装:

 alias dbprob='export ORACLE_HOME=/ora/app/10.2/dbprod' alias dbtest='export ORACLE_HOME=/ora/app/10.2/dbtest' 

至于一个简单的启动/停止脚本,请查看以下URL ,在本地RHEL启动脚本“oracle.sh”脚本

只需要添加一个shell脚本的书,并确保你有一个良好的工作知识。 嘘和它的衍生物比Windows CMD文件更好的脚本 – 基本范例是没有那么不同,但它的作品稍微好一点。

其中一个海报提到了perl,为此可以使用各种各样的库。 查找www.cpan.org并search。 Python也运行了很多Oracle库,其中最有趣的是Anthony Tuninga的CX_Oracle及其相关工具。

如果你想加快Linux / Unix的速度, 这个Stackoverflow发布有许多资源的链接和系统的各个方面的好书的列表。 有很多关于Oracle的书籍,我认为Tom Kyte的Oracle一对一和Oracledevise的有效Oracle是一个好的开始。

最后,如果您正在使用Oracle,请掌握数据字典的相关知识。 这是非常有用的,(恕我直言)比在SQL Server上好一点。

您还应该查看用于pipe理数据库环境的Oracle Enterprise Manager / Grid Control。 它具有为您预定义的丰富的pipe理function(包括启动/closures实例等任务)。 只是另一个想法。

还可以看看oraToolKit – Oracle的瑞士军刀 。

它非常好,它有助于在各种平台上执行Oracle安装任务,使用其“appctl”启动/closures以及各种备份任务或选项。