Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103687923
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-14 16:50:00


作者:Casimir Saternos   来自:

介绍通过脚本和配置文件从头开始构建 Linux 服务器所涉及的工具和过程。

本文相关下载:

在系统管理中广泛采用的最佳实践之一是尽可能实现常规任务的自动化。Oracle 数据库 10g 包含很多增强和新特性,它们使常规的部署和配置操作自动化。例如:

  • Oracle Enterprise Manager 不再需要手动操作,这是因为相关子系统现在是自动配置的。
  • 可以方便地安排常规管理任务(如统计信息生成)。
  • 可以配置一个基于用户定义阈值的警报系统,向 DBA 通知需要人为干预的情况。
  • 可以通过自动共享内存调整自动配置与系统全局区 (SGA) 相关的参数。
  • 可以自动识别、从 Metalink 下载并应用所需的补丁集。
  • 自动跟踪多种数据库特性的使用情况,为将来版本的相关决策提供帮助。

Oracle 文档中详细介绍了很多其他自动化特性;有关更多信息,请参见 。

此外,使用 Oracle 10g 可以更快速地执行数据库安装且比先前版本所需系统资源更少。除此之外,DBA 还可以利用 Oracle 和 Red Hat Enterprise Linux 中提供的工具,它们允许使用配置文件和脚本(而不是典型交互式安装所需的单调的 GUI 导航过程)。服务器安装非常适于实现自动化,其原因如下:

  • 由自动化服务器安装所带来的一致性使以后的管理和故障诊断变得更容易。
  • 自动安装所生成的配置文件充当安装过程的最新文档。
  • 管理员可以在更短时间内有效管理更多的安装。
  • 也许最重要的是,自动化安装节省了管理员的时间,他们从而有更多时间用于更对机构有利以及更专业开发的其他工作。

Red Hat 和 Oracle 都提供了支持自动化安装和配置其产品的解决方案。在本文中,我将简要介绍一些通过此过程从头开始构建 Linux 服务器所涉及的工具和过程。我特别要介绍一种在测试服务器上安装 Oracle 数据库 10g 和 Red Hat Enterprise Linux (RHEL) 操作系统的方法。

RHEL 概述

kickstart”是 Red Hat 自动安装操作系统的方法。它不是在典型交互式安装期间回答所提出的问题,而是将相关问题的回答存储在一个“kickstart”文件中。然后可以将该文件放在引导软盘、引导 CD-ROM 或网络上。对于我们这个示例而言,您将创建一个配置文件并将其保存到引导软盘(MS-DOS 格式)上。

kickstart 配置文件是一个文本文件,因而可以使用文本编辑器创建和修改该文件。(可以从 Red Hat Linux 文档 CD 的 RH-DOCS 目录中获得 sample.ks 文件。)如果您决定针对您的安装编辑 sample.ks 文件,切记必须保持文件中各节的顺序,而每个节中的各项通常可以任意排列。如果遗漏了必要的选项,安装程序会提示用户输入 — 完全自动化的解决方案不希望发生这样的事。(要详细了解这种情况的处理,请参见 Red Hat 文档中的详细信息)。

还可以通过运行一个称为 Kickstart Configurator 的工具来创建 kickstart 配置文件:

图 1

当运行 Kickstart Configurator 时,您需要回答与标准交互式安装过程中问道的相同问题。

图 2

Kickstart Configurator 还允许创建安装前和安装后运行的脚本,在运行 kickstart 的过程中可以调用这些脚本。(如果手动编辑 kickstart 文件,则这些命令会显示在文件结尾处的 %pre%post 节中。)脚本编制的安装前任务的一个例子是基于给定服务器上的磁盘数量进行磁盘分区;安装后任务可能包括创建用户、配置挂载点或者将计划任务添加到 crontab。

要开始进行安装,创建 kickstart 文件(命名为 ks.cfg)并将其保存在引导软盘的根目录中。接着,将磁盘放入软盘驱动器中,并将 Linux 软件 CD 放在 CD 驱动器中。在引导提示符处,运行命令 linux ks=floppy。如果没有正确输入此命令,将进行 Red Hat GUI 的常规安装。如果您使用 CD 进行安装,则会定期提示您提供您在 kickstart 文件中指定的安装选项所需要的 CD。

以下是利用 Kickstart Configurator 为测试服务器创建的简单 kickstart 文件的示例:


#Generated by Kickstart Configurator

#System  language
lang en_US
#Language modules to install
langsupport  --default=en_US
#System keyboard
keyboard us
#System mouse
mouse generic3ps/2
#Sytem timezone
timezone America/New_York
#Root password
rootpw --iscrypted $1$WSGKfbye$QOEidXByh2fVQPOycas8h/
#Reboot after installation
reboot
#Install Red Hat Linux instead of upgrade
install
#Use CDROM installation media
cdrom
#System bootloader configuration
bootloader --location=mbr 
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel 
#Disk partitioning information
part /boot --fstype ext3 --size 99 
part swap --recommended 
part / --fstype ext3 --size 1 --grow 
#System authorization infomation
auth  --useshadow  --enablemd5 
#Network information
network --bootproto=static --ip=128.165.101.107 --netmask=255.255.251.0 
--gateway=128.165.109.130 --nameserver=128.165.106.3 --device=eth0 #Firewall configuration firewall --disabled #XWindows configuration information xconfig --depth=32 --resolution=1024x768 --defaultdesktop=GNOME --startxonboot #Run the Setup Agent on first boot firstboot --enable #Package install information %packages --resolvedeps @ X Window System @ GNOME Desktop Environment @ KDE Desktop Environment @ Editors @ Engineering and Scientific @ Graphical Internet @ Text-based Internet @ Office/Productivity @ Sound and Video @ Graphics @ Games and Entertainment @ Authoring and Publishing @ Server Configuration Tools @ Web Server @ Mail Server @ Windows File Server @ FTP Server @ Development Tools @ Kernel Development @ X Software Development @ GNOME Software Development @ KDE Software Development @ Administration Tools @ System Tools @ Printing Support
在初始安装之后启动服务器时,将提示您完成一些初始的基本配置步骤。将会提供关于以下各方面的选项
  • 许可协议
  • 设置日期和时间(包括一个使用网络时间协议与远程时间服务器进行同步的选项)
  • 建立一个用户帐户(包括与各种网络认证方法相关的选项)
  • 声卡测试
  • 将系统注册到 Red Hat 网络的选项。此选项加快了从 Red Hat 下载软件的速度。
  • 安装附加程序包的选项(包括文档)

配置脚本

您可以通过 shell 脚本对很多附加的初始服务器设置进行自动化。以下是一些示例,可以帮助您学习创建那些与特定安装和网络环境相关的脚本。它们并没有完全涵盖所有内容,也不是普遍适用的,但是代表了通常需要在操作系统安装后执行的任务。

可以将这些内容包含在一个与 kickstart 配置不同的单独脚本中,但其描述的大部分(如果不是全部)功能可以包含在 Kickstart 文件的“Post-Installation Script”一节中。

为 Oracle 数据库 10g 安装添加 Oracle 用户和组。对于典型的 Oracle 10g 安装,需要添加两个组和一个 Oracle 用户。

groupadd -g 499 oinstall;
groupadd -g 502 dba;
useradd  -u 499 -p oracle -g oinstall -G dba oracle; 
为数据库安装配置内核参数。在理想情况下,您可以编写一个检查现有内核参数设置的脚本。如果将某个内核参数的设置高于 Oracle 建议的安装值,则该值保持改变。如果参数值低于建议的最小值,则您应该调整该值,使其符合要求的阈值。

以下示例仅设置了需要在测试服务器上更改的一些值:

echo "# " >> /etc/sysctl.conf
echo "# Required for Oracle 10g " >> /etc/sysctl.conf
echo "# " >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 2147483648" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf 
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "fs.file-max = 65536" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
/sbin/sysctl -p
有关内核参数配置的更多信息,请参见 Oracle 数据库 10g 安装文档。

为数据库安装设置环境变量。当用户登录时,将执行用户主目录(通常是 /home/<用户名>)中的 .bash_profile,并设置 ORACLE_BASE、ORACLE_HOME 和 PATH 等环境变量。

echo "ORACLE_BASE=/oracle/home" >> /home/oracle/.bash_profile
echo "ORACLE_HOME=/oracle/home/OraHome_1" >> /home/oracle/.bash_profile 
echo "export ORACLE_HOME ORACLE_BASE" >> /home/oracle/.bash_profile 
echo "PATH=$PATH:$ORACLE_HOME/bin" >> /home/oracle/.bash_profile 
echo "export PATH"
用户的 .bash_profile 中还有很多其他可以设置的变量。例如,您可能还希望根据您的安装和用户的责任来设置 JAVA_HOME 或其他变量。

其他安装前任务。您可以将其他很多验证/配置步骤添加到脚本中来执行以下操作:

  • 确认安装了足够的内存
  • 确认所配置的交换空间数量满足最低要求
  • 确认各个目录(例如 /tmp)有足够的磁盘空间来容纳所进行的安装
  • 确认已经安装了必要的软件包
  • 创建 Oracle 数据库安装必要的目录
配置网络设置。可以在 Kickstart 文件的“Network Information”节下和 %post 节中配置网络设置。在以下示例中,新的服务器名是“test-server”,域是“my-domain”。在本示例中,需要编辑三个文件:/etc/hosts、/etc/sysconfig/network 和 /etc/resolv.conf。

此脚本将添加条目、编辑现有条目并重新启动网络服务。


# 
# Edit /etc/hosts
#
echo "128.165.101.107 test-server.my-domain.us test-server" >> /etc/hosts;

#
# Edit /etc/sysconfig/network
#
echo "NETMASK = 255.255.251.0 " >> /etc/sysconfig/network;

#
#     Example using Perl
#
perl i -p -e 's/localhost/test-server/g' /etc/sysconfig/network;
perl I -p -e 's/localdomain/my-domain.us/g' /etc/sysconfig/network; 

#
#     Example using sed
# 
sed -e 's/localdomain/my-domain.us/g' /etc/sysconfig/network >/tmp/$$ && mv /tmp/$$ /etc/sysconfig/network;
sed -e 's/localhost/test-server/g' /etc/sysconfig/network >/tmp/$$ && mv /tmp/$$ /etc/sysconfig/network;

#
# Edit /etc/resolv.conf
#
echo "search my-domain.us" > /etc/resolv.conf;
echo "nameserver 10.64.106.1" >> /etc/resolv.conf;
echo "nameserver 10.64.6.1" >> /etc/resolv.conf;
 
#
# Following the editing of the configuration files,
# restart Network services
#
/etc/init.d/network restart
建立挂载点。现在建立从新服务器 (test-server) 到我们网络中某个远程服务器(名为 remote-server)的挂载点。该任务涉及编辑 /etc/fstab 文件和挂载新的挂载点。


mkdir /mp_other_server;
echo 
"remote-server:test-server / mp_other_server nfs rsize=8192,wsize=8192,timeo=:4,intr" 
>> /etc/fstab;
mount -a;

添加网络打印机。在系统中利用 GUI 设置安装打印机之后,用户导出配置(以 XML 格式),然后将配置导入同一服务器或另外的服务器中。(有关详细信息,请参见 。)要从配置好的服务器中导出配置,可运行以下命令:

/usr/sbin/Red Hat-config-printer-tui --Xexport > settings.xml	   
可以选择导入并覆盖现有的打印机设置,或者利用新条目更新现有设置。
/usr/sbin/Red Hat-config-printer-tui --Ximport < settings.xml
/usr/sbin/Red Hat-config-printer-tui --Ximport --merge < settings.xml
在进行了任一类型的导入之后,都需要重新启动打印机服务:
/sbin/service cups restart
创建“每日消息”。如果您希望用户在初次登录到服务器时显示一条消息,则必须编辑 /etc/motd 文件,将要显示的消息包含在其中。

echo "################################################### "  > /etc/motd
echo "" >> /etc/motd
echo "      Welcome to 'hostname'                         "  >> /etc/motd
echo "       'date'                                       "  >> /etc/motd
echo "" >> /etc/motd
echo "################################################### "  >> /etc/motd
echo "" >> /etc/motd
其他配置任务。以上列出的任务虽有代表性,但绝不是全面的;您可以考虑其他软件(如 Web 服务器、Web 浏览器和邮件服务器)的安装自动化和配置策略。例如,可以完成某些任务来解决安全性问题:
  • 停止特定进程和/或将其配置为不启动
  • 卸载软件包
  • 建立监视作业
其他杂项任务可能包括
  • 建立别名(用于常用命令)
  • 应用补丁
  • 通过 cron 安排管理任务
使 Oracle 安装自动化

Oracle Universal Installer 拥有很多自动化过程中可以利用的特性。它采用一个基于 XML 的中央信息库,允许第三方应用程序识别安装了那些产品。除了简单安装之外,它还允许将现有 Oracle 主目录复制到新的位置。有关该产品的更多信息,请参见 。

Oracle 关于软件安装和配置甚至数据库本身的自动化解决方案涉及到一个响应文件 的使用。该文件的用途与 Red Hat 的 kickstart 文件相似。用户不是对交互式对话所提出的问题进行交互式回答,而是将回答存储在一个文本文件中,随后 Oracle Universal Installer (OUI) 在运行安装程序时使用该文件。这样的安装称为“静默安装”。OUI 用于安装各种应用程序,因此响应文件不限于安装数据库。

可以通过在记录模式中运行软件或通过手动编辑示例响应文件来创建响应文件。以下是一个基本演示:

  1. 用此命令启动 OUI 来创建响应文件:
    ./runInstaller -record -destinationFile /tmp/recorded.rsp
     
  2. 选择您需要的所有部分(源目标目录、主目录、主目录名、产品)。
  3. 当您看到 Summary 屏幕时,不要单击 Install,而是单击 Cancel
  4. 仔细查看在 tmp/recorded.rsp 中创建的结果响应文件。如果需要,可以手动编辑该文件,只要您遵守使用规定的格式即可(请参见)。
  5. 现在如下执行静默安装:
    ./runInstaller -silent -responseFile /tmp/recorded.rsp
    
    在运行脚本时将会报告安装的进度。
如果您由于响应文件中的条目不正确而遇到安装故障,安装将失败并显示一条诊断消息。详细信息可在 oraInventory/logs 目录中找到。在每次使用响应文件运行 OUI 时,会创建具有 installActions-<时间戳>.log 和 silentInstall<时间戳>.log 格式名称的日志。

Oracle 数据库安装后的任务

在安装和配置数据库软件(可以是 Oracle 数据库)之后,您可以使用其他自动化方法。例如:

  1. 可以使用 RMAN 还原/恢复工具创建数据库。
  2. 可以使用那些利用传统导入或数据泵导入的数据库导入方法来填充现有的数据库。
  3. 可以在数据库中添加和配置数据库用户。
可以使用 Shell 脚本、SQL 脚本和 PL/SQL 程序包来完成这些任务以及很多其他任务。

结论

Red Hat 和 Oracle 已经将其产品设计成可以在大企业范围的安装中进行有效的管理。只需使用 Red Hat kickstart 文件和 Oracle 响应文件(以及一些 shell 脚本)就使您能够在管理服务器和数据库时最高效、最优化地使用时间。通过开发一个使用这些自动化安装所需的规范安装过程,您可以大概了解关于 Linux、Oracle 以及适用于您工作中其他领域的工具和技术。


Casimir Saternos 是 Oracle 认证 DBA、IBM 认证企业开发人员和 Sun 认证 Java 程序员,住在宾夕法尼亚州 Allentown。
阅读(199) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~