当前位置:  技术问答>linux和unix

使用Linux的Shell脚本维护Oracle

    来源: 互联网  发布时间:2016-01-15

    本文导语:  大约7年前,Oracle 发布了 Linux 上的第一个商业数据库。从那时起, Oracle 、 Red Hat 和 Novell/SUSE 就不断地合作更改 Linux 内核,从而提高数据库和应用程序的性能。正因为这样,用于 Linux 的 Oracle 数据库 10 g...

大约7年前,Oracle 发布了 Linux 上的第一个商业数据库。从那时起, Oracle 、 Red Hat 和 Novell/SUSE 就不断地合作更改 Linux 内核,从而提高数据库和应用程序的性能。正因为这样,用于 Linux 的 Oracle 数据库 10 g 才包含了与操作系统紧密相关的许多增强功能。 DBA 比以往任何时候更需要了解和使用此平台来在其监视下对系统进行最佳管理。 

  以往,系统管理员与 DBA 之间在职责方面存在差别。但实际上,这种差别通常并不明显。许多 IT 部门雇佣一些可解决数据库级以及操作系统级问题的员工。当然, Oracle 数据库本身使用操作系统资源,并能与其环境紧密交互。 

  此外,许多系统管理员和 DBA 发现将其工作相关的任务自动化很有必要或比较方便。软件安装、系统资源监视以及系统管理涉及一些重复和容易出错的任务,而自动过程可以比手动过程更好地完成这些任务。 

  将这些任务自动化的方法之一是 shell 脚本。 Shell 脚本自 Linux 系统安装之初就起着重要作用。启动和关闭系统时就会调用各种脚本。 Oracle 和其他第三方供应商的实用程序也是通过 shell 脚本可调用的。由于这些脚本可以快速开发,因此历来就用它们构建应用程序原型。系统管理员已利用通过 shell 脚本实现的功能提供针对其监视的系统的特定要求和特征定制的解决方案了。 

  在本文中,我将介绍 “bash”shell 脚本可以实现的、与在 Linux 平台上安装、运行和维护 Oracle 数据库相关的功能。注意,本文适用于 Linux 脚本初学者或对 Linux 相对陌生的 DBA ;对大多数经验丰富的 Linux 系统管理员则不适用。 

  Shell 脚本是什么? 

  shell 脚本是一个包含命令序列的文本文件。当运行文件(或脚本)时,将执行该文件中包含的命令。术语 shell 仅指与 Linux 内核通信所使用的特定命令行用户界面。目前有多个不同的 shell ,其中包括 C shell (csh) 、 Korn shell (ksh) 、 Bourne shell (sh) 和 Bourne-Again shell (bash) 。 shell 本身就是一个从文件或终端读取命令、解释这些命令并通常执行其他命令的命令。 Bourne-Again shell 合并了上述其他 shell 的特性,本文就使用该脚本进行演示。 

  脚本文件中的第一行可用于指定使用哪个 shell 来运行该脚本。以下是所有脚本示例中包含的第一行的含义: 

  #!/bin/bash 

  为什么使用 Shell 脚本? 

  由于 shell 脚本与 DBA 的工作相关,因此您可能不会马上看到 shell 脚本的价值,这跟您的工作经历有关。如果您以前从未使用过 UNIX 或类似 UNIX 的系统,那么可能会对大量含义晦涩的命令感到一愁莫展。此外,除了作为关系数据库外, Oracle 10 g 还提供了一个用于处理数据库数据的强健平台以及几个用于在数据库外部与操作系统交互的方法。 

但您会发现几个探究 shell 脚本领域的原因,其中包括: 
• 必须支持已经存在的脚本。
 
• 需要在安装 Oracle 软件前自动设置系统。例如,您可以编写一个脚本来检 查 OS 的初始状态并报告安装软件前必须满足的任何前提条件。该脚本还可以创建 相关的 OS 用户和组并为用户设置环境变量。 

• 可以使用正在运行的 Oracle 数据库来执行手动或计划的任务。但在数据库 未 运行时需要运行某些任务。可以使用脚本停止或启动数据库(以及侦听器或相关的数据库进程)。无法从数据库内部启动此类动作。 

• 您需要一种监视数据库状态(例如,是否正在运行并可进行进程查询)的机制。这样的脚本还可以监视非特定于 Oracle 的其他进程和资源,从而提供系统当前运行情况的更详细信息。 

• 需要将备份自动化。 Oracle Recovery Manager (RMAN) 是一个用于开发可以在任何平台上运行的备份脚本的实用程序。可以从 shell 脚本中调用 Oracle Recovery Manager 并使用它执行各种备份和恢复活动。 

• 您可能有一个并非特定于某个数据库的要求。您可能在一台计算机上安装了多个数据库。建议您不要使用单个数据库满足此要求,因为那样会引发潜在的安全性问题。在这些情况下, shell 脚本提供了一种既可以满足此要求又不会将进程与单个数据库关联的方法。 

  什么情况下不使用 Shell 脚本? 

  Oracle 数据库包含了超出 RDBMS 传统定义的功能。与软件的任何其他部分一样,它使用操作系统提供的资源,但它所 “ 看到 ” 并 “ 更改 ” 其环境的程度远远超过了其他软件。 SQL 和 Oracle 的固定视图从数据库内部提供了系统视图,而 shell 脚本从数据库外部提供了系统视图。 Shell 脚本并不是适用于所有问题的解决方案。 

  必须意识到,操作系统的许多方面可以从数据库内部进行监视和修改。可以使用 Oracle 的固定视图(带 v$ 前缀的视图)确定计算机的主机名 (v$instance) 或数据库正在其中运行的平台的名称 (v$database) 。还可以通过这种方式确定与数据库相关的文件的位置和其他属性。可以直接从数据库中查询数据文件( v$datafile 、 dba_data_files )、临时文件( v$tempfile 、 dba_temp_files )、重做日志 (v$logfile) 、存档日志 (v$archived_log) 和控制文件 (v$controlfile) 的位置和其他属性。可以通过该视图以及通过查看某些 init.ora 参数( db_recovery_file_dest 、 db_recovery_file_dest_size )确定有关闪回恢复区 ($recovery_file_dest) 的信息。还可以查询进程 (v$process) 和内存( v$sga 、 v$sgastat 等)的状态。有各种内置的 PL/SQL 程序包,并能够创建允许对底层 OS 进行其他访问的 Java 和 C 数据库对象。 

  如果您正在考虑为一个需要大量数据库访问的任务编写脚本,则脚本可能并不是最佳选择。本文的稍后部分将介绍如何使用 SQL*Plus 访问数据库,但在很多情况下,使用其他语言可以更好地解决此问题。

                            转赛迪技术

|
学习下

|
3q

    
 
 

您可能感兴趣的文章:

  • shell 脚本中命令别名在脚本外无法使用
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  • 关于unix使用参数导致脚本输出异常(与脚本内直接带参数输出结果不同)
  • 如何在Linux下使用脚本实现程序的自动重启!望各位详解!
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 如何在使用命令行去修改系统脚本?
  • 有没有方法可以使用脚本批量修改bash环境变量
  • 如何在shell脚本中使用source命令?
  • Ubuntu下Shell脚本中[]的使用
  • 使用脚本向进程发出命令
  • linux使用shell脚本,如何创建用户,并设置用户密码?能否给出示例?
  • 急!!!AIX上监控CPU和内存使用率的脚本
  • linux系统使用python获取内存使用信息脚本分享
  • linux下使用shell脚本编译java报错?
  • oracle使用sql脚本生成csv文件案例学习
  • ORACEL使用脚本来修改表结构
  • shell脚本参数使用问题
  • 使用iconv批量改变文件编码的shell脚本
  • 使用sh脚本如何替换指定目录下所有文件中的指定字符串
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!! iis7站长之家
  • 为什么无法进入“系统维护与使用区”?提示“文本内容中发现无效字符。”
  • Oracle密码文件的使用和维护第1/3页
  • 申请Linux/Unix社区 系统维护与使用区小版主
  • Oracle数据库密码文件的使用与维护
  • 申请Linux/Unix社区大论坛下系统维护与使用区小论坛的版主
  • Oracle数据库密码文件的使用和维护
  • Oracle数据库密码文件的使用和维护
  • Oracle数据库密码文件的使用与维护
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • Oracle9i 9.0.1的JDBC Drivers 可以给Oracle 8.0.5使用马?
  • Suse linux使用oracle问题
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • jbuilder中使用oracle的问题
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • Oracle事务!使用游标提交过程
  • 在Jbuilder7下,使用DbPilot.exe连接oracle,报错!请教高手!
  • AIX 64位系统上如何使用32位OCI oracle driver
  • Oracle中SQL语句连接字符串的符号使用介绍
  • 使用X manager连接oracle数据库的步骤
  • C++使用OCCI连Oracle10g的错误
  • 使用工具 plsqldev将Excel导入Oracle数据库
  • Linux下Oracle的sqlplus使用光标上下左右方法
  • Oracle 数据 使用游标
  • ORACLE 修改表结构 之ALTER CONSTAINTS的使用
  • Linux中Oracle使用相关知识集锦
  • Oracle 触发器的使用小结
  • Oracle SQL使用时注意自己的输入
  • Oracle Max函数使用中出现的问题
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3