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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-28 22:26:16

 
文章来源数据库在线 作者Jeffrey … 

 

创建来自 RAW 卷的符号链接(在两个节点上执行)

注意: 在每次启动机器时 , 需要在集群中的每个节点上执行本部分中的一些命令。这些命令的详细信息以及关于将其加入启动脚本的说明都包含在 用于每个 RAC 节点的所有启动命令

我通常将来自 RAW 卷的符号链接创建为人们易于理解的名称,以便更易于识别文件。如果您决定不使用符号链接,则在创建 / 维护表空间时,您需要为您所定义的 Oracle 文件使用 /dev/pv1/lvol X 标识。对于某些人来说,处理含义隐晦的标识(如 /dev/pv1/lvol21 )实在过于麻烦了 — ,而 使用人们易于理解的名称则要简单得多。这些命令需要在每台 Linux 服务器上执行一次。我通常将它们包含在 /etc/rc.local 启动脚本中。如果您添加了表空间,则应该将新的逻辑卷、 RAW 绑定及链接名称添加到所有节点的多个文件中。

mkdir /u01/app/oracle/oradata

mkdir /u01/app/oracle/oradata/orcl

ln -s /dev/raw/raw1 /u01/app/oracle/oradata/orcl/CMQuorumFile

ln -s /dev/raw/raw2 /u01/app/oracle/oradata/orcl/SharedSrvctlConfigFile

ln -s /dev/raw/raw3 /u01/app/oracle/oradata/orcl/spfileorcl.ora

ln -s /dev/raw/raw4 /u01/app/oracle/oradata/orcl/control01.ctl

ln -s /dev/raw/raw5 /u01/app/oracle/oradata/orcl/control02.ctl

ln -s /dev/raw/raw6 /u01/app/oracle/oradata/orcl/control03.ctl

ln -s /dev/raw/raw7 /u01/app/oracle/oradata/orcl/cwmlite01.dbf

ln -s /dev/raw/raw8 /u01/app/oracle/oradata/orcl/drsys01.dbf

ln -s /dev/raw/raw9 /u01/app/oracle/oradata/orcl/example01.dbf

ln -s /dev/raw/raw10 /u01/app/oracle/oradata/orcl/indx01.dbf

ln -s /dev/raw/raw11 /u01/app/oracle/oradata/orcl/odm01.dbf

ln -s /dev/raw/raw12 /u01/app/oracle/oradata/orcl/system01.dbf

ln -s /dev/raw/raw13 /u01/app/oracle/oradata/orcl/temp01.dbf

ln -s /dev/raw/raw14 /u01/app/oracle/oradata/orcl/tools01.dbf

ln -s /dev/raw/raw15 /u01/app/oracle/oradata/orcl/undotbs01.dbf

ln -s /dev/raw/raw16 /u01/app/oracle/oradata/orcl/undotbs02.dbf

ln -s /dev/raw/raw17 /u01/app/oracle/oradata/orcl/users01.dbf

ln -s /dev/raw/raw18 /u01/app/oracle/oradata/orcl/xdb01.dbf

ln -s /dev/raw/raw19 /u01/app/oracle/oradata/orcl/perfstat01.dbf

ln -s /dev/raw/raw20 /u01/app/oracle/oradata/orcl/redo01.log

ln -s /dev/raw/raw21 /u01/app/oracle/oradata/orcl/redo02.log

ln -s /dev/raw/raw22 /u01/app/oracle/oradata/orcl/redo03.log

ln -s /dev/raw/raw23 /u01/app/oracle/oradata/orcl/orcl_redo2_2.log

chown -R oracle:dba /u01/app/oracle/oradata

配置 Linux 服务器(在两个节点上执行)

注意: 在每次启动机器时 , 需要在集群中的每个节点上执行本部分中的一些命令。这些命令的详细信息以及关于将其加入启动脚本的说明都包含在 用于每个 RAC 节点的所有启动命令

本文的这一部分集中讨论了对两台 Linux 服务器的配置 — 使每台服务器都为 Oracle9 i RAC 的安装作好准备。

对交换空间的考虑因素

  • 安装 Oracle9 i 需要最少 512MB 内存。
    (在安装期间交换容量不足会导致 Oracle Universal Installer“ 挂起 ” 或 “ 死机 ” )
  • 要检查您已经分配的内存 / 交换容量,可以键入:

# free

— 或 —

# cat /proc/swaps

— 或 —

# cat /proc/meminfo | grep MemTotal

  • 如果您的内存少于 512MB (在 RAM 与 SWAP 之间),您可以通过创建临时交换文件来添加临时交换空间。这样,您就不必使用原始设备甚至更彻底地重建系统了。

以 root 身份创建一个用作额外交换空间的文件,假设大小为 300MB :
# dd if=/dev/zero of=tempswap bs=1k count=300000

现在我们应该更改文件的权限:
# chmod 600 tempswap

最后我们将该 “ 分区 ” 格式化为交换分区,并将其添加到交换空间:
# mke2fs tempswap
# mkswap tempswap
# swapon tempswap

设置共享内存

共享内存通过将通用的结构和数据放在共享内存段中,使得进程可以对它们进行访问。这是现有最快的进程间通信( IPC )方式 — 主要是因为数据在进程之间传递时没有涉及到内核的操作。在进程之间不需要复制数据。

Oracle 将共享内存用于它的系统全局区 (SGA) ,这是一个由所有的 Oracle 备份进程及前台进程所共享的内存区域。为 SGA 分配足够的容量对于 Oracle 的性能非常重要,因为它负责保存数据库缓冲区高速缓存、共享 SQL 、访问路径以及更多。

要确定所有共享内存的限制,可使用以下命令:

# ipcs -lm

------ Shared Memory Limits --------

max number of segments = 4096

max seg size (kbytes) = 32768

max total shared memory (kbytes) = 8388608

min seg size (bytes) = 1

设置 SHMMAX

SHMMAX 参数定义共享内存段的最大尺寸(以字节为单位)。 Oracle SGA 包含共享内存,而不正确地设置 SHMMAX 可能会限制 SGA 的大小。在设置 SHMMAX 时,切记 SGA 的大小应该适合于一个共享内存段。 SHMMAX 设置不足可能会导致以下问题:

ORA-27123:unable to attach to shared memory segment

您可以通过执行以下命令来确定 SHMMAX 的值:

# cat /proc/sys/kernel/shmmax

33554432

SHMMAX 的默认值是 32MB 。通常,这个值对于配置 Oracle SGA 而言太小了。我一般使用下列方法之一种将 SHMMAX 参数设为 2GB :

  • 通过直接更改 /proc 文件系统,你不需重新启动机器就可以改变 SHMMAX 的默认设置。我使用的方法是将以下命令放入 /etc/rc.local 启动文件中:

# >echo "2147483648" > /proc/sys/kernel/shmmax

  • 您还可以使用 sysctl 命令来更改 SHMMAX 的值:

# sysctl -w kernel.shmmax=2147483648

  • 最后,通过将该内核参数插入到 /etc/sysctl.conf 启动文件中,您可以使这种更改永久有效:

# echo "kernel.shmmax=2147483648" >> /etc/sysctl.con

设置 SHMMNI

我们现在来看 SHMMNI 参数。这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。这一数值已经足够,通常不需要更改。

您可以通过执行以下命令来确定 SHMMNI 的值:

# cat /proc/sys/kernel/shmmni

4096

设置 SHMALL

最后,我们来看 SHMALL 共享内存内核参数。该参数控制着系统一次可以使用的共享内存总量(以页为单位)。简言之,该参数的值始终应该至少为:

ceil(SHMMAX/PAGE_SIZE)

SHMALL 的默认大小为 2097152 ,可以使用以下命令进行查询:

# cat /proc/sys/kernel/shmall

2097152

SHMALL 的默认设置对于我们的 Oracle9 i RAC 安装来说应该足够使用。

注意: 在 i386 平台上 Red Hat Linux 的 页面大小 为 4096 字节。但是,您可以使用 bigpages ,它支持配置更大的内存页面尺寸。

设置信号

既然我们已经配置了共享内存设置,现在就该考虑配置我们的 信号 了。对信号的最佳描述是,它是用于在共享资源(如共享内存)的进程(或进程中的线程)之间提供同步的计数器。在系统 V 中支持信号集,其中每一项都是信号计数。当应用程序请求信号时,它使用 “ 集合 ” 来完成此工作。

要确定所有的信号限制,可使用以下命令:

# ipcs -ls

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 32

semaphore max value = 32767

您还可以使用以下命令:

# cat /proc/sys/kernel/sem

250 32000 32 128

设置 SEMMSL

SEMMSL 内核参数用于控制每个信号集的最大信号数量。

Oracle 建议将 SEMMSL 设置为 init.ora 文件(用于 Linux 系统中的所有数据库)中的最大 PROCESS 实例参数的设置值再加上 10 。此外, Oracle 建议将 SEMMSL 的值设置为不少于 100 。

设置 SEMMNI

SEMMNI 内核参数用于控制整个 Linux 系统中信号集的最大数量。

Oracle 建议将 SEMMNI 的值设置为不少于 100 。

设置 SEMMNS

SEMMNS> 内核参数用于控制整个 Linux 系统中信号(而不是信号集)的最大数。

Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加 10 。

使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:

SEMMNS — 或 — (SEMMSL * SEMMNI)

设置 SEMOPM

SEMOPM 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。

semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。一个信号集能够拥有每个信号集中最大数量的 SEMMSL 信号,因此建议设置 SEMOPM 等于 SEMMSL 。

Oracle 建议将 SEMOPM 的值设置为不少于 100 。

阅读(299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~