AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 32849
Accepted
OilyRag
OilyRag
Asked: 2009-06-29 03:46:17 +0800 CST2009-06-29 03:46:17 +0800 CST 2009-06-29 03:46:17 +0800 CST

在 Linux 中编写 Oracle 任务脚本

  • 772

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

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

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

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

谢谢。

linux oracle
  • 7 7 个回答
  • 688 Views

7 个回答

  • Voted
  1. Best Answer
    Benoit
    2009-06-29T04:36:34+08:002009-06-29T04:36:34+08:00

    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
    

    关机.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.
    

    关机.sql

    connect / as sysdba
    shutdown immediate;
    quit;
    

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

    • 5
  2. nixgeek
    2009-06-29T03:50:13+08:002009-06-29T03:50:13+08:00

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

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

    此外,“crontab -u -l”将显示用户的 crontab ,这通常存储在 Linux 的 /var/spool/cron 下。这些都不是 Oracle 特有的,但它对于让作业自动可靠地运行至关重要,对于执行数据库快照和备份等非常有帮助。

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

    如果您可以编辑您的问题以包含有关您的环境的更多详细信息,那么这将使某人能够对您的问题给出更完整的答案:-)

    • Linux 发行版
    • 软件版本
    • 0
  3. James F
    2009-06-29T06:19:53+08:002009-06-29T06:19:53+08:00

    对于更复杂的任务,我建议使用脚本语言而不是 shell 脚本。当您可以建立数据库句柄时,通过多个不同的任务与数据库建立持久连接会容易得多。在 shell 脚本中,您倾向于调用多个命令行工具,每个工具都必须建立与数据库的连接,该连接随后在工具完成运行时被断开。

    O'Reilly 有一本书专门从 DBA 而非应用程序开发人员的角度介绍 Perl 和 Oracle:

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

    你可能会觉得很有帮助。

    • 0
  4. katriel
    2009-06-29T08:17:52+08:002009-06-29T08:17:52+08:00

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

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

    至于简单的启动/停止脚本,请查看以下 URL,在“oracle.sh”脚本中,该脚本是本机 RHEL 启动脚本

    • 0
  5. ConcernedOfTunbridgeWells
    2009-06-29T10:16:50+08:002009-06-29T10:16:50+08:00

    只是补充一下,买一本关于 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 上的要好很多。

    • 0
  6. DCookie
    2009-06-30T10:13:38+08:002009-06-30T10:13:38+08:00

    您还应该查看用于管理数据库环境的 Oracle Enterprise Manager/Grid Control。它为您预定义了一组丰富的管理功能(包括启动/关闭实例等任务)。只是另一个想法。

    • 0
  7. Muhammad
    2012-05-24T00:48:20+08:002012-05-24T00:48:20+08:00

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

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

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve