热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面向DBA的LinuxShell脚本简介

文章标题:面向DBA的LinuxShell脚本简介。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  大约 7 年前,Oracle 发布了 Linux 上的第一个商业数据库。从那时起,Oracle、Red Hat 和 Novell/SUSE 就不断地合作更改 Linux 内核,从而提高数据库和应用程序的性能。正因为这样,用于 Linux 的 Oracle 数据库 10g 才包含了与操作系统紧密相关的许多增强功能。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 10g 还提供了一个用于处理数据库数据的强健平台以及几个用于在数据库外部与操作系统交互的方法。

  但您会发现几个探究 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 访问数据库,但在很多情况下,使用其他语言可以更好地解决此问题。

  下表归纳了可以从数据库中访问的信息:

服务器/操作系统信息

服务器标识

典型查询

附注

实例运行在的主机的名称

select host_name
from v$instance;

也可以通过从 bash 运行以下命令来获得该信息:

hostname

uname ?n

操作系统平台

select platform_name from v$database ?-(10g)

如果运行 uname ?s,则将返回类似信息

[1] [2] [3] [4] 下一页


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
author-avatar
WingKeii-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有