如何在 Linux 上安装和配置 Oracle

作者:Greg Flannery

Oracle RDBMS 是 Oracle 公司出品的全功能关系数据库管理系统。它包含一套管理工具,以及适用于大多数编程语言的预编译器。本文将介绍如何在 Linux 上安装和配置 Oracle 数据库。

Oracle 8.0.5 企业版的安装文件名为 Oracle8051EE_Intel.tgz。可以从 ftp://technet.oracle.com/ 下载。如果需要,glibc 补丁文件 glibcpatch.tgz 可以从 ftp://ftp.oracle.com/pub/www/otn/linux/ 下载。

Oracle 目前使用 glibc 2.0 而不是 glibc 2.1。Oracle 提供了一个补丁,当与兼容性 RPM 包结合使用时,允许它在 Red Hat 6.0 上运行。我选择使用 Linux-Mandrake 6.0 发行版进行此安装。如果您不使用 6.0,您可以跳过安装兼容性 RPM 和 glibc 补丁的步骤。在其他发行版上安装 Oracle 是可能的,但由于 Oracle 使用 Red Hat 进行开发,因此 Red Hat(或 Red Hat 的某些变体)是首选。

安装 Linux 时必须安装 C 开发包。如果您想安装 Oracle 的 Intelligent agent,您必须安装 tcl-8.0.3-20.i386.rpm。要安装 JDBC 驱动程序,您必须定义 classesxxx.zip 文件的路径。

我建议为 Oracle 创建至少三个分区。这允许您使用 Oracle 的最佳灵活架构 (OFA) 标准。使用 OFA 使您能够将数据与索引隔离,并拥有多个控制文件。分区应命名为 u01、u02 和 u03。如果您有磁盘支持,您可以创建更多分区。我的机器上有两个磁盘,所以我为 /u01 创建了一个 1GB 的分区,为 /u02 创建了一个 150MB 的分区。然后我创建了一个名为 /u03 的目录,以给我相当于另一个挂载点的空间。第一个分区 (/u01) 是安装过程中放置 Oracle 可执行文件和所有相关文件的位置。其余的挂载点将用于数据文件、索引和控制文件。

在安装过程中会创建大量目录。一些更重要的目录是

  • $ORACLE_HOME/bin 包含数据库和管理软件的可执行文件。

  • $ORACLE_HOME/rdbms/admin 包含用于创建目录的 SQL 脚本,以及其他有用的脚本,此处不一一列举。有关此目录中包含的脚本的说明,请参阅Oracle 数据库管理手册

  • $ORACLE_BASE/admin/SID/bdump 包含实例的警告日志。警告日志的名称为 alert_SID.log,其中 SID 是实例的系统标识符(即,此安装的 alert_greg.log)。此文件对于确定问题所在极其重要。任何时候出现错误或数据库崩溃,首先要查看此文件,以获取有关可能导致问题发生的信息。

  • $ORACLE_HOME/network/admin 包含 tnsnames.ora 和 listener.ora 文件。这两个文件都在修改配置文件部分中进行了描述。

  • $ORACLE_HOME/precomp/demo/proc 包含几个 Pro*C 示例程序。

数据文件、索引和控制文件将放置在 /oradata/SID 中,其中 SID 是实例的系统标识符(即,此安装的 /u01/oradata/greg、/u02/oradata/greg 和 /u03/oradata/greg)。

安装分为 8 个步骤

  • 预安装设置组和用户,并执行实际安装软件之前的所有任务。

  • 软件安装是安装软件的过程。

  • 文档安装是安装 Oracle 在线文档的过程。由于安装过程中的一个错误,这必须在单独的步骤中完成。

  • 二进制补丁是应用 Oracle 提供的 glibc 补丁的过程。

  • 数据库创建创建初始数据库。

  • 后安装是作为 root 用户运行后安装脚本的过程。

  • 配置文件修改是识别和修改数据库和 Net8 使用的配置文件的过程。

  • 测试和自动化是确定数据库已正确安装和配置的最终过程,并设置实例在机器重启时自动启动。

预安装步骤

从 Red Hat 下载兼容性 RPM。必要的 RPM 是 compat-binutils-5_2-2_9_1_0_23_1_i386.rpm、compat-glibc-5_2-2_0_7_1_i386.rpm、compat-egcs-5_2-1_0_3a_1_i386.rpm、compat-egcs-c++-5_2-1_0_3a_1_i386.rpm 和 compat-libs-5_2-1_i386.rpm。发出以下命令安装 RPM

rpm -ivh compat-binutils-5_2-2_9_1_0_23_1_i386.rpm
rpm -ivh compat-glibc-5_2-2_0_7_1_i386.rpm
rpm -ivh compat-egcs-5_2-1_0_3a_1_i386.rpm
rpm -ivh compat-egcs-c++-5_2-1_0_3a_1_i386.rpm
rpm -ivh compat-libs-5_2-1_i386.rpm

编辑 /etc/passwd 中的 root 用户,并将 shell 从 /bin/bash 更改为 /bin/sh。这将使 Oracle 提供的安装脚本无错误运行。

创建 Oracle 使用的组和用户。至少,您将需要一个名为 dba 的组用于 oracle 用户。您可能还想创建一个名为 oper 的组用于数据库操作。请参阅Oracle 数据库管理员指南,以确定是否要创建此组。在以下示例中,我仅使用了 dba 组,组 ID 为 601。如果您的系统上已在使用 601,您可能需要使用不同的组 ID。请务必更改 oracle 用户的密码。

groupadd -g 601 dba
useradd oracle -g 601
passwd oracle

以 root 用户身份编辑 /etc/passwd 以更改默认 shell。

如果您没有将挂载点创建为分区,请创建挂载点的目录。如有必要,对所有三个挂载点重复这些命令。

mkdir /u01
chown -R oracle.dba /u01

切换到您解压缩 Oracle8051EE_Intel.tgz 文件的目录(这是安装过程的暂存目录),并运行脚本以创建 /etc/oratab 文件。此文件由 Oracle 的启动脚本使用,以确定哪些实例正在机器上运行,以及它们是否应在机器重启时自动启动。稍后会详细介绍此文件。

cd /home/oracle/orainst/orainst
ORACLE_OWNER=oracle; export ORACLE_OWNER
sh oratab.sh
有关提示及其回复,请参见图 1

以 root 用户身份注销并以 oracle 用户身份登录。通过键入 umask 确保 umask 设置为 022。如果未设置为 022,您将需要在您的 .profile 文件中添加一行。在 oracle 的 .profile 中设置以下环境变量

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/8.0.5
ORACLE_SID=greg #(replace with your system
                #identifier)
ORACLE_TERM=386
PATH=$PATH:/u01/app/oracle/product/8.0.5/bin
TMPDIR=/var/tmp
export ORACLE_BASE ORACLE_HOME ORACLE_SID\
  ORACLE_TERM
export PATH TMPDIR
umask 022 #(only if the umask is not already
          #set to 022)

注销,然后以 oracle 用户身份重新登录。通过使用 env 命令确保环境变量已设置,并且 /bin:/usr/bin:/usr/local/bin 在您的路径中。

软件安装过程

切换到您的暂存目录并启动 Oracle 安装程序。

cd /home/oracle/orainst/orainst
./orainst /c

选择自定义安装(参见图 2)。阅读 preamble.txt 文件并按回车键继续。阅读 README.FIRST 文件并按回车键继续。选择安装、升级或卸载软件(参见图 3)。选择安装新产品—不创建数据库对象(参见图 4)。确保 ORACLE_BASEORACLE_HOME 环境变量设置正确(参见图 5)。按回车键接受日志文件的默认值。最好也记下它们的位置。如果在安装过程中出现任何问题,您可能需要查看它们。最好查看它们,即使一切正常,以便了解有关安装过程的更多信息(参见图 6)。选择从暂存区安装(参见图 7);确保暂存区设置正确。在我的示例中,我使用了 /home/oracle/orainst(参见图 8)。选择您的语言(参见图 9)。按回车键确认 root.sh 后安装脚本的位置。默认位置是 /u01/app/oracle/product/8.0.5/orainst/root.sh。选择以下要安装的产品(参见图 10

  • 客户端软件

  • Net8

  • TCP/IP 协议适配器

  • 对象类型转换器

  • Oracle ConText Cartridge

  • Oracle8 对象选项

  • Oracle8 分区选项

  • Oracle Unix 安装程序

  • Oracle8 企业版 (RDBMS)

  • PL/SQL

  • Pro*C/C++ (C 和 C++ 的预编译器)

  • SQL*Plus

使用空格键选择/取消选择产品。不要安装文档。我们将在稍后的步骤中完成。选择所有要安装的产品后,按 Tab 键移至 Install 提示符并按回车键。您将收到关于 ULIMIT 未设置的警告。您可以按回车键忽略此警告(参见图 11)。选择 dba 作为您的 DBA 组(参见图 12)。如果您决定为数据库操作创建一个单独的组,请为 OSOPER 组输入它(参考快照图 13)。对于此安装,我使用了 dba 组作为 OSOPER 组。

图 14

此时,安装程序将开始复制软件。这是一个休息的好时机,因为这可能需要一段时间——时间长短取决于您机器的速度。

当软件安装过程完成时,您应该会收到一条消息,提示“已对选定产品执行请求的操作。”(参见图 15)按回车键确认消息,按 Tab 键移至 Exit,然后按回车键。按 Tab 键指示 Confirmation 上的 Yes,然后按回车键退出安装程序。安装程序应以消息“Result: Success”退出。

文档安装

创建将安装在线文档的目录 (mkdir /u01/app/oracle/doc)。链接目录以纠正安装过程中的错误

ln -s /u01/app/oracle/doc /u01/app/oracle/product/8.0.5

从您的暂存目录启动安装程序 (./orainst /c)。选择自定义安装。单击 OK 绕过 README 文件。选择安装、升级或卸载软件。选择添加/升级软件。按 Enter 键确认 ORACLE_HOME 的环境变量设置。按 Enter 键确认日志文件的位置。选择从暂存区安装。按 Enter 键确认暂存区的路径。选择合适的语言。选择 Append 以追加到软件安装过程中创建的 root.sh 脚本。这样做是因为我们尚未运行该脚本,并且我们不想覆盖上一步中创建的脚本。在 Information 屏幕上按回车键,该屏幕给出了 root.sh 脚本的位置。选择 Intel LINUX Documentation 并按 Tab 键移至 install。按回车键开始安装过程。按回车键确认在线文档的位置(参见图 16)。选择您想要的在线文档的格式(HTML 或 PDF)(参见图 17)。再次,我们正在寻找消息“已对选定产品执行请求的操作。”。按回车键确认消息,按 Tab 键移至 Exit,然后按回车键。从 Confirmation 屏幕中选择 Yes 以退出安装程序。同样,我们希望看到安装程序以消息“Result: Success”退出。

二进制补丁

切换到您下载 glibc 补丁文件 glibcpatch.tgz 的目录。解压缩文件,tar -xvzf glibcpatch.tgz。运行补丁脚本 glibcpatch.sh,sh glibcpatch.sh。最终屏幕应类似于图 18

创建数据库

现在是创建原始数据库的时候了。

  • 切换到您的暂存目录 (cd /home/oracle/orainst/orainst)。

  • 启动安装程序 (./orainst /c)。

  • 选择自定义安装。

  • 按两次 Enter 键以绕过 README 文件。

  • 选择创建/升级数据库对象。

  • 选择创建数据库对象。

  • 按回车键确认环境变量 ORACLE_HOMEORACLE_BASE

  • 按回车键确认日志文件的位置。

  • 按回车键确认环境变量 ORACLE_SID

  • 选择 Oracle8 Enterprise (RDBMS),按 Tab 键移至 INSTALL 并按回车键。

  • 选择创建产品数据库对象(参见图 19)。

  • 选择基于文件系统的数据库(参见图 20)。

  • 选择 Yes 以将控制文件分布在三个挂载点上(参见图 21)。

  • 输入 /u01、/u02 和 /u03 的三个挂载点(参见图 22)。

  • 选择合适的字符集。

  • 选择合适的国家字符集。

  • 输入您想用于 SYSTEM 帐户的密码。系统将要求您再次输入以确认密码。

  • 输入您想用于 SYS 帐户的密码。系统也会要求您确认。

  • 如果您想要 dbaoperator 的内部密码,请在此提示符下按 Tab 键移至 Yes。如果您不想要内部密码,请按 Tab 键移至 No。

  • 输入并确认您想用于 TNS 监听器的密码。

  • 单击 No 以配置 MTS 监听器(参见图 23)。

  • 如果您希望接受控制文件位置的默认值,请按回车键。

  • 如果您希望接受数据文件路径及其大小的默认值,请按两次回车键。如果您没有进行任何数据库大小调整,从而确定您需要更多空间,则默认大小应是合适的(参见图 24)。如有必要,您可以在以后添加空间到任何数据文件。

  • 选择 Yes 以接受默认文件名和大小(参见图 25)。

安装程序现在将创建初始数据库。与软件安装一样,这是另一个休息的好时机。与之前一样,我们希望看到“已对选定产品执行请求的操作。”消息。按回车键返回主安装屏幕;按 Tab 键移至 Exit,然后按回车键;在确认屏幕上选择 Yes。

后安装

注销,然后以 root 用户身份重新登录。将 oracle 用户的 .profile 复制到 root 用户的主目录 (cp ~oracle/.profile /root/.profile)。注销,然后以 root 用户身份重新登录。通过发出 env 命令检查 .profile 中的环境变量是否设置正确。

切换到 /orainst 目录并运行 root.sh 脚本。

cd $ORACLE_HOME/orainst
sh root.sh

验证 ORACLE_OWNERORACLE_HOMEORACLE_SID 是否正确。如果正确,输入 Y

当它询问您的本地 bin 目录的完整路径名时,输入 /usr/local/bin。然后脚本会告诉您 ORACLE_HOMEoracle 的主目录不匹配。这不是问题。键入 Y 并继续。脚本将完成。(参见图 26

oracle 用户身份登录并关闭实例(参见图 27)。

svrmgrl
connect internal
shutdown
exit
配置文件修改

现在进行一些清理和文件修改。initSID.ora 文件(其中 SID 是实例的系统标识符)位于 $ORACLE_HOME/dbs 目录中。当实例启动时,Oracle 会读取此文件。它用于设置实例的参数,例如为数据库保留的内存量。本文中无法涵盖太多参数。有关参数及其建议设置的说明,请参阅 Oracle 数据库管理员指南。您可能可以使用默认值。但是,如果您的机器上有大量内存,您可能需要取消注释 initSID.ora 文件中参数的 medium 或 large 设置。

oratab 文件位于 /etc 目录中。dbstart 文件会读取此文件,我们将使用 dbstart 文件在机器重启时自动启动实例。oratab 文件中有注释,解释了三个字段及其包含的内容。对于您希望在机器重启时启动的实例,将最后一个字段更改为 Y。该文件应类似于列表 1。

列表 1。

listener.ora 文件位于 $ORACLE_HOME/network/admin 目录中。Net8 使用此文件来确定如何建立与您机器上的实例的网络连接。使用 Net8 监听器应监听的 sid 更新 listener.ora 文件。将 oracle_sid 替换为 sid 名称。该文件应类似于列表 2。

列表 2。

tnsnames 文件位于 $ORACLE_HOME/network/admin 目录中。Net8 使用此文件来确定您可以连接到的远程数据库的位置。将 oracle_sid 替换为 sid 名称。该文件应类似于列表 3。

列表 3。

以 root 用户身份发出以下命令,以正确设置 Net8 文件的权限

chown oracle.dba $ORACLE_HOME/bin/tnslsnr
chmod 750 $ORACLE_HOME/bin/tnslsnr
chown oracle.dba $ORACLE_HOME/network/log
chmod 775 $ORACLE_HOME/network/log
chown root.dba \
  $ORACLE_HOME/network/log/listener.log
chmod 664 $ORACLE_HOME/network/log/listener.log

如果您收到错误,因为 listener.log 不存在,您需要在停止并启动监听器后输入最后两个命令。

测试

启动实例

svrmgrl
connect internal
startup
exit

使用 SQL*Plus 连接到数据库

sqlplus
system
system_password
select count(*) from dba_objects; #(This should
 # return a count of the number of objects in the
 # database)
exit
启动 TNS 监听器
lsnrctl start
您应该看到类似于图 28 的内容。

通过网络连接使用 SQL*Plus 连接到数据库。如果您实际上没有安装网络,则只需使用一台机器即可完成此操作。

sqlplus system/system@greg

greg 指的是 $ORACLE_HOME/network/admin/tnsnames.ora 文件中的条目

select count(*) from dba_objects;
exit
自动化

创建以下符号链接以自动启动和关闭监听器和 Oracle 实例

ln -s/etc/rc.d/init.d/dbora /etc/rc.d/rc0.d/K10dbora
ln -s/etc/rc.d/init.d/dbora /etc/rc.d/rc2.d/S99dbora
ln -s/etc/rc.d/init.d/dbora /etc/rc.d/rc3.d/S99dbora
ln -s/etc/rc.d/init.d/dbora /etc/rc.d/rc5.d/S99dbora
ln -s/etc/rc.d/init.d/dbora /etc/rc.d/rc6.d/K10dbora

列表 4。

列表 5。

列表 6。

将文件 dbora(列表 4)放在 /etc/rc.d/init.d 中。将文件 lsnrstart(列表 5)放在 $ORACLE_HOME/bin 目录中。将文件 lsnrstop(列表 6)放在 $ORACLE_HOME/bin 目录中。

在 /etc/oratab 文件中指定自动启动的监听器和所有 Oracle 实例应在机器重启时关闭并重新启动。

此时,数据库已创建。您可以使用 SQL*Plus 创建表。如果您不熟悉 SQL,有很多关于该主题的好书可供选择。

Oracle8i 安装差异

最新版本的 Oracle for Linux(8.1.5 或 Oracle8i)的安装过程略有不同。安装程序已用 Java 重写,因此外观和感觉以及一些响应有所不同。本节将介绍新安装过程中的差异。

您仍然需要创建您的 dba 组、oracle 用户、目录和挂载点。

http://www.blackdown.org/ 下载并安装 JRE(或 JDK)1.1.6 v5。为您安装 JRE 的目录创建一个符号链接。

ln -s jre_install_location /usr/local/jre

挂载包含 Oracle8i 软件的 CD-ROM

mount -t iso9660 /dev/cdrom /mnt/cdrom
以 oracle 用户身份登录,将目录更改为 CD-ROM 并启动安装程序
cd /mnt/cdrom
 ./runInstaller

您应该看到类似于图 29 的欢迎屏幕。单击“Next”。系统将提示您输入安装 jar 文件的位置和您的 Oracle 主目录。进行任何必要的更改,然后单击“Next”(图 30)。输入您在上一步中创建的 dba 组(图 31)并单击“Next”。系统将提示您运行 /tmp/OraInstall/orainstRoot.sh(图 32)。运行后,您应该看到以下输出行

Creating Oracle Inventory pointer file (/etc/oraInst.loc)
Changing group name of /u01/app/oracle/product/oraInventory to dba.
Return to the pop-up window and click Retry.

图 43

系统将提示您安装 Oracle8i Enterprise Server、Oracle8i Client 或 Oracle Programmer。选择“Enterprise Serveri”(图 47)并单击“Next”。系统将提示您安装类型。选择“Custom”(图 33)并单击“Next”。系统将提示您选择要安装的产品(图 34, 35, 36)。选择要安装的产品后,单击“Next”。您可以更改产品将安装到的位置,或单击“Next”以接受默认值(图 37)。系统将提示您使用 Oracle 数据库配置助手 (DBCA) 创建数据库。选择“Yes”并单击“Next”(图 38)。系统将提示您输入全局数据库名称和 SID。修改屏幕截图以反映您的名称(图 39)。系统将提示您输入数据库文件的位置。在我的示例中,我使用了挂载点 /u01(图 40)。系统将提示您根据机器上存在的协议选择要安装的网络协议(图 41)单击“Next”。您将看到安装选项的摘要。这将允许您使用“Previous”按钮更改任何不正确的设置(图 42)。当您准备好开始安装过程时,单击“Install”。安装屏幕将列出安装日志文件正在写入的位置(图 44)。如果安装过程中出现问题,此信息将派上用场。安装完成后,您将看到一个弹出窗口(图 45)。记下要以 root 用户身份运行的脚本的位置,将目录更改为 root.sh 脚本所在的目录并运行它。您可能必须更改其权限才能使其可执行。

cd /u01/app/oracle/product/8.1.5
export ORACLE_OWNER=oracle
export ORACLE_SID=greg
chmod 700 root.sh
 ./root.sh

在 root.sh 脚本成功执行后(预期输出在图 46中),返回弹出消息并单击“OK”。此时安装完成,您可以单击“Next”,然后单击“Exit”。测试和自动化程序与前面 Oracle 8.0.5 部分中的相同。

本文中引用的所有列表都可以通过匿名下载文件 ftp.linuxjournal.com/pub/lj/listings/issue67/3572.tgz 获取

How to Install and Configure Oracle on Linux
Greg Flannery (gflanner@dha-us.com) 是一位拥有九年 Oracle DBA 经验和三年 Linux 经验的专家。他住在佐治亚州亚特兰大,在 Duley Hopkins and Associates 担任高级技术人员。
加载 Disqus 评论