第 1 部分 安装SLES9
1. 安装SLES9。不要安装 认证服务器(NIS、LDAP、Kerberos)。
2. 为每台服务器的两块网卡提供两个IP地址。一个用于专门网络,一个用于公共网络。
分别是:node1: 192.168.1.68 10.0.0.1 node2: 192.168.1.69 10.0.0.2
3. 在YaST中配置本地主机名:n1pub.site.com和n2pub.site.com。
4. SLES9下所需的程序包:
基本运行时系统
YaST
图形基本工具
Linux工具
KDE桌面环境
C/C++编译环器和工具(安装操作系统时手工选择)
Tips:选完全安装即可,省了很多挑选包的繁琐工作
5. 所需内核:2.6.5-7.97-smp或更高。升级内核到2.6.5-7.155.29-smp。
# uname ?r //查看内核
2.6.5-7.155.29-smp
6. 其他所需程序包的版本(或更高版本):
make-3.8
gcc-3.3.3-43
gcc-c++=3.3.3-43
libaio-0.3.98-18
libaio-devel-0.3.98-18
openmotif-libs-2.2.2-519
验证已安装的程序包:
# rpm -q make gcc gcc-c++ libaio libaio-devel openmotif-libs
第 2 部分 为 Oracle 配置 Linux
1. 创建 Oracle 组和用户帐户
用户帐户名是‘oracle’,组是‘oinstall’和‘dba’。 仅在一个集群主机上以 root 用户身份执行以下命令:
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),1001(dba)
用户 ID 和组 ID 在所有集群主机上必须相同。
使用从 id oracle 命令得到的信息,在其余集群主机上创建 Oracle 组和用户帐户:
# /usr/sbin/groupadd -g 1000 oinstall
# /usr/sbin/groupadd -g 1001 dba
# /usr/sbin/useradd -m -u 1000 -g oinstall -G dba oracle
# id oracle
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),1001(dba)
设置 oracle 帐户的口令:
# passwd oracle
2. 创建挂载点
以 root 用户身份执行以下命令:
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
3. 配置内核参数
以 root 用户身份登录并在每个主机上配置 Linux 内核参数。
# cat>> /etc/sysctl.conf <<EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmin = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
EOF
# /sbin/sysctl -p
在完成以上步骤之后运行以下命令:
# /sbin/chkconfig boot.sysctl on
4. 为 oracle 用户设置 Shell 限制
Oracle 建议对每个 Linux 帐户可以使用的进程数量和打开文件的数量设置限制。要进行这些更改,以 root 用户身份剪切和粘贴下列命令。
# cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
EOF
//启用资源限制
# cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF
说明:此处soft 值即缺省值 和hard 值上限值相等。有的参考文档描述
需要生成profile.local ,设置 nproc 和 nofile ,这是不对的,非root
用户无权ulimit 修改bash资源限制!
5. SLES9避免错误
在 SLES9 上安装 Oracle Enterprise Manager 10g 的一个错误将导致安装因网络端口不可用而失败。OEM DBConsole 需要端口 1830,而在 SLES 环境中,此端口已经预留给 /etc/services。此错误在 MetaLink 上的错误号为 3513603。
要避免安装过程中出现问题,以 root 用户身份登录,并在安装 Oracle 10g 软件之前将 /etc/services 文件中的端口 1830 应的行注释掉。
6. 配置 Hangcheck 计时器
# modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
# cat >> /etc/init.d/boot.local <<EOF
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
EOF
7. 配置 /etc/hosts
有些 Linux 发行版本将主机名与回送地址 (127.0.0.1) 相关联。 如果出现这种情况,则从回送地址中删除主机名。
用于此指南的 /etc/hosts 文件:
127.0.0.1 localhost
10.0.0.1 n1pri.site.com n1pri
10.0.0.2 n2pri.site.com n2pri
192.168.1.68 n1pub.site.com n1pub
192.168.1.69 n2pub.site.com n2pub
192.168.1.66 n1vip.site.com n1vip
192.168.1.67 n2vip.site.com n2vip
8. 为用户等效性配置 SSH
第一步是生成 SSH 的公共密钥和专用密钥。
在每个主机上,以 oracle 用户身份登录:
> mkdir ~/.ssh
> chmod 755 ~/.ssh
> /usr/bin/ssh-keygen -t rsa
> /usr/bin/ssh-keygen -t dsa
第二步将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的 ~/.ssh/authorized_keys 文件中。使用 ssh 第一次访问远程主机时,将提示确认是否希望连接该主机。
在第一个主机上,以 oracle 用户身份登录:
> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> ssh oracle@n2pub cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> ssh oracle@n2pub cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> chmod 644 ~/.ssh/authorized_keys
对第二个主机做同样的处理。这次 SSH 会提示输入在创建密钥时所使用的口令短语而非 oracle 的口令。 这是因为第一个主机 (n1pub) 现在知道了第二个主机的公共密钥,而 SSH 现在使用的是一种不同的认证协议。
> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> ssh oracle@n1pub cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> ssh oracle@n1pub cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> chmod 644 ~/.ssh/authorized_keys
9. 建立用户等效性
以 oracle 用户身份在每个主机上执行命令:
> exec /usr/bin/ssh-agent $SHELL
> /usr/bin/ssh-add
注意,用户等效性仅为当前会话建立。 如果切换到其他会话或注销并重新登录,则必须再次运行 ssh-agent 和 ssh-add 才能重新建立用户等效性。
10. 测试连通性
现在应该可以使用 ssh 在其他集群主机上不必输入口令而登录、执行程序和复制文件了。 通过在远程集群主机上运行诸如 hostname 等简单命令来验证用户等效性,如在n2pub上:
> ssh n1pub hostname
如果返回如n1pub,则表示正常。
测试每个方向上所有服务器的连通性。 如在n1pub上:
> ssh n2pub hostname
11. 同步时间
第 3 部分: 准备共享磁盘
有三种准备共享磁盘以用于 RAC 的方法:
Oracle 集群文件系统 (OCFS)
自动存储管理器 (ASM)
原始设备
Oracle 自动存储管理器 (ASM)
1. 首先确定ASMLib的版本。ASMLib 以一套共三个 Linux 程序包的形式提供:
oracleasmlib ― ASM 库
oracleasm-support ― 管理 ASMLib 所需的实用程序
oracleasm ― 用于 ASM 库的内核模块
以 root 用户身份登录并运行以下命令:
# uname -rm
2.6.5-7.155.29-smp i686
2. 下载与内核版本相应的oracleasm程序包(或者升级内核版本)。下载oracleasmlib 和 oracleasm-support 程序包。
3. 以 root 用户身份执行以下命令,在每个集群主机上安装这些程序包:
# rpm -Uvh > oracleasm-2.6.5-7.155.29-smp-2.0.0-1.i586.rpm > oracleasmlib-2.0.0-1.i386.rpm > oracleasm-support-2.0.0-1.i386.rpm
Preparing... ########################################### [100%]
1:oracleasm-support ########################################### [ 33%]
2:oracleasm-2.6.5-7.155.2########################################### [ 67%]
3:oracleasmlib ########################################### [100%]
4. 运行配置脚本来准备驱动程序。以 root 用户身份在每个集群主机上运行以下命令并回应提示:
# /etc/init.d/oracleasm configure
Default user to own the driver interface []:oracle
Default group to own the driver interface []:dba
Start Oracle ASM library driver on boot (y/n) [n]:y
Fix permissions of Oracle ASM disks on boot (y/n) [y]:y
Writing Oracle ASM library driver configuration: done
Creating /dev/oracleasm mount point: done
Loading module "oracleasm": done
Mounting ASMlib driver filesystem: done
Scanning system for ASM disks: done
5. 启用 ASMLib 驱动程序:
# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration: done
Scanning system for ASM disks: done
6. 使用fdisk对磁盘进行分区。
用途 大小 磁盘设备
ASM数据区1 600G dev/sdb
ASM数据区2 600G dev/sdc
Oracle Cluster Registry 200M dev/sdd1
Oracle CRS Voting 200M dev/sdd2
7. 为 ASM 配置磁盘。注意,这些磁盘应该是不包含任何内容的空磁盘分区。仅从一个集群主机上以 root 用户身份运行以下命令:
# /etc/init.d/oracleasm createdisk DISK_NAME1 /dev/sdb1
# /etc/init.d/oracleasm createdisk DISK_NAME2 /dev/sdc1
…
Marking disk "/dev/sdb1" as an ASM disk: done
8. 列出标记为由 ASMLib 使用的所有磁盘:
# /etc/init.d/oracleasm listdisks
DISK_NAME1
DISK_NAME2
...
9. 在所有其他集群主机上,以 root 用户身份运行以下命令,扫描所配置的 ASMLib 磁盘:
# /etc/init.d/oracleasm scandisks
第 4 部分: 安装 Oracle 软件
1.1 创建CRS
1. 在原始设备上创建 Oracle CRS 文件
目的 大小 磁盘设备 原始设备 文件名
Oracle ClusterRegistry 500M dev/sdd1 /dev/raw/raw1 /u02/oracrs/ocr.crs
Oracle CRS Voting 100M dev/sdd2 /dev/raw/raw2 /u02/oracrs/vote.crs
将以下各行添加到每个集群节点上的 /etc/raw:
raw1:sdd1
raw2:sdd2
2. 为每个节点上的 CRS 原始设备设置所有权和权限(严格按照下述配置)
# chown root:oinstall /dev/raw/raw1
# chmod 660 /dev/raw/raw1
# chown oracle:dba /dev/raw/raw2
# chmod 640 /dev/raw/raw2
3. 重新启动原始设备服务
# /etc/init.d/raw start
bind /dev/raw/raw1 to /dev/sdd1... done
bind /dev/raw/raw2 to /dev/sdd2... done
bind /dev/raw/raw3 to /dev/sdd3... done
4. 让系统启动时启动raw
# chkconfig raw on
5. 初始化raw (500m=524288000, 100m=104857600)
# dd if=/dev/zero of=/dev/raw/raw1 bs=524288000 ount=1
# dd if=/dev/zero of=/dev/raw/raw2 bs=104857600 ount=1
6. 以 oracle 用户身份登录X-Window并建立节点间的用户等效性:
> exec /usr/bin/ssh-agent $SHELL
> /usr/bin/ssh-add
7. 设置 ORACLE_BASE 和 ORACLE_HOME 环境变量:.profile
> export ORACLE_BASE=/u01/app/oracle
> export ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1
> export ORA_CRS_HOME=/u01/app/oracle/crs
> export LD_ASSUME_KERNEL=2.4.21
> export LANG=C
>export PATH=$PATH:$ORACLE_HOME/bin
8. 在一台主机上(n1pub)以oracle身份登录,安装CRS。挂载包含 CRS 介质的 CD 或文件系统,如果是ship.*.cpio.gz 形式压缩的, 先执行gunzip 加压, 然后执行
Cpio ?idmv < ship.*.cpio 解压。运行Disk1下的安装脚本, ./runInstaller
9. Welcome;单击 Next。
10. Specify Inventory Directory and Credentials ― 默认值应该就是正确的。确保 inventory 目录位于 ORACLE_BASE 目录中(例如: /u01/app/oracle/oraInventory)并且操作系统组是“oinstall”,在安装节点 (n1pub) 上运行 orainstRoot.sh(确保在 /etc/hosts 中而不仅仅是在 DNS 中配置了您的主机)。
11. Specify File Locations ― 确认默认值后继续。
12. Language Selection ― 确认默认值后继续。
13. Cluster Configuration ― 输入集群名和集群节点名。这里集群名可以取默认值或自己输入。公共节点名和专用节点名在此例中是public:n1pub.site.com和 n2pub.site.com;private:n1pri.site.com和n2pri.site.com。
14. Private Interconnect Enforcement ― 为每个接口指定接口类型。
15. Oracle Cluster Registry ― 在 Cluster Specify OCR Location 中,本例为
/dev/raw/raw1
16. Voting Disk ― 输入 voting disk 名,本例为 /dev/raw/raw2
17. 在集群的其余节点上运行 orainstRoot.sh。
18. Summary ― 在出现提示时单击 Install。
19. 从安装节点开始,每次在一个节点上运行 Oracle CRS 主目录中的 root.sh,如 /u01/app/oracle/product/10.1.0/crs_1/root.sh。不要同时在不同主机上运行该脚本,等在一台主机上脚本运行结束后再启动另一个。 (su -)
20. 从 $ORACLE_BASE/product/10.1.0/crs_1/bin 目录中运行 olsnodes 验证安装已成功。例如:
> cd $ORACLE_BASE/product/10.1.0/crs_1/bin
> ./olsnodes
21. 在一台主机安装数据库。从 db CD 运行 ./runInstaller。
22. Welcome ― 单击 Next。
23. Specify File Locations ― 确认默认值后继续。
24. Specify Hardware Cluster Installation Mode ― 选择 Cluster Installation 并选择集群中的其他节点。
25. Select Installation Type ― Enterprise Edition。
26. Product-specific Prerequisite Checks ― 全部选 OK。
27. Select Database Configuration ― 选择“Do not create a starter database”。使用数据库配置助手 (DBCA) 来创建数据库。
28. Summary ― 在出现提示时单击 Install。
29. 在安装数据库的节点上运行/u01/app/oracle/product/10.1.0/db_1/root.sh前,必须先执行以下操作:
# export DISPLAY=:0.0
# export XAUTHORITY=/home/oracle/.Xauthority
30. 从安装节点开始,以 root 用户身份登录,每次在一个主机上运行 Oracle 数据库主目录中的 root.sh,本例中为 /u01/app/oracle/product/10.1.0/db_1/root.sh。不要同时在不同主机上运行该脚本,等在一台主机上脚本运行结束后再启动另一个。
31. 在安装节点上执行 root.sh 脚本期间,将会出现VIPCA。
32. Welcome ― 单击 Next。
33. Network Interfaces ― 只选择用于公共网络的接口(在本示例中为 eth0)。 集群中所有主机上的这个接口必须相同。 (如果在安装主机上该接口是 eth0,则在集群中所有其他主机上都必须是 eth0。)
34. Virtual IPs for cluster nodes ― 输入在 DNS 中所配置的每个主机的虚拟 IP 别名(主机名)和虚拟 IP 地址。
35. Summary ― 单击 Finish。 VIP 配置助手创建并启动 VIP、GSD 和 ONS 应用程序资源。
36. Configuration Results ― 检查结果并单击 Exit。 在其他节点上依次运行 root.sh。
37. End of Installation ― 安装结束。
38. 在一个节点上Create the TNS Listener Process
./netca (在用户等效性已经建立的session 中执行)
1.2 创建 Oracle RAC 数据库
38. 以 oracle 用户身份登录,设置环境。
> . oraenv
ORACLE_SID = [oracle] ? *
ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1
39. dbca
1. Welcome ― 选择“Oracle Real Application Clusters database”
2. Operations ― 创建数据库
3. Node Selection ― 单击 Select All(ds1 和 ds2)
4. Database Templates ― 通用
5. Database Identification ― 全局数据库名: gemni.orademo.org
6. Management Options ― 利用 Enterprise Manager 配置数据库;使用数据库控制进行数据库管理
7. Database Credentials ― 为所有帐户使用相同的口令;输入口令并再次确认
8. Storage Options ― 自动存储管理 (ASM)
9. Create ASM Instance ― 设置 SYS 口令并确认;创建初始化参数文件 (IFILE)
10. ASM Disk Groups ― Create New>Create Disk Group>Disk Group Name (DATA);冗余(正常);更改磁盘发现路径(ORCL:* ― 即使磁盘显示为已供应状态,仍然必须输入此项,否则会出错);选择磁盘;输入故障组名;选择新创建的磁盘组
11. Database File Locations ― 使用 Oracle 管理的文件
12. Recovery Configuration ― 单击 Next
13. Database Content ― 示例模式
14. Initialization Parameters ― 内存、典型 、字符集
15. Database Storage ― 单击 Next
16. Create Options ― 选择“Create Database”
17. Summary ― 检查总结信息并单击 OK
1.3 设置开机启动数据库和客户端配置
设置自动启动:
编辑 /etc/oratab 将实例对应的 N 改为 Y
编辑 $oracle_home/bin 的dbshut dbhome dbstart 脚本 设置
将 ORATAB设置为/etc/oratab
客户端设置
NetMgr 或者 netca 配置 TNSServiceName
地址有2个,分别是n1pub 的虚拟地址192.168.1.66 和n2pub的虚拟地址192.168.1.67
高级选上 ,随机选取一个尝试,直到成功。 服务名:orcl.site.com ,要跟listener.ora
描述的一致。服务器类型选数据库默认。
注意:需要在客户端 hosts文件加上以下2条记录(主要是有重定向):
192.168.1.68 n1pub
(n1pub 为节点一 上
uname ?n 的输出)
192.168.1.69 n2pub
(n2pub 为节点二 上
uname ?n 的输出)