第 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下所需的程序包: 基本运行时系统 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 验证已安装的程序包: 第 2 部分 为 Oracle 配置 Linux 1. 创建 Oracle 组和用户帐户 用户帐户名是‘oracle’,组是‘oinstall’和‘dba’。 仅在一个集群主机上以 root 用户身份执行以下命令: 用户 ID 和组 ID 在所有集群主机上必须相同。 使用从 id oracle 命令得到的信息,在其余集群主机上创建 Oracle 组和用户帐户: uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),1001(dba) 设置 oracle 帐户的口令: 2. 创建挂载点 以 root 用户身份执行以下命令: 3. 配置内核参数 以 root 用户身份登录并在每个主机上配置 Linux 内核参数。 4. 为 oracle 用户设置 Shell 限制 Oracle 建议对每个 Linux 帐户可以使用的进程数量和打开文件的数量设置限制。要进行这些更改,以 root 用户身份剪切和粘贴下列命令。 # cat >> /etc/security/limits.conf <<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 7. 配置 /etc/hosts 有些 Linux 发行版本将主机名与回送地址 (127.0.0.1) 相关联。 如果出现这种情况,则从回送地址中删除主机名。 用于此指南的 /etc/hosts 文件: 8. 为用户等效性配置 SSH 第一步是生成 SSH 的公共密钥和专用密钥。 在每个主机上,以 oracle 用户身份登录: 第二步将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的 ~/.ssh/authorized_keys 文件中。使用 ssh 第一次访问远程主机时,将提示确认是否希望连接该主机。 在第一个主机上,以 oracle 用户身份登录: > ssh oracle@n2pub cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys > chmod 644 ~/.ssh/authorized_keys 对第二个主机做同样的处理。这次 SSH 会提示输入在创建密钥时所使用的口令短语而非 oracle 的口令。 这是因为第一个主机 (n1pub) 现在知道了第二个主机的公共密钥,而 SSH 现在使用的是一种不同的认证协议。 > ssh oracle@n1pub cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys > chmod 644 ~/.ssh/authorized_keys 9. 建立用户等效性 以 oracle 用户身份在每个主机上执行命令: 注意,用户等效性仅为当前会话建立。 如果切换到其他会话或注销并重新登录,则必须再次运行 ssh-agent 和 ssh-add 才能重新建立用户等效性。 10. 测试连通性 现在应该可以使用 ssh 在其他集群主机上不必输入口令而登录、执行程序和复制文件了。 通过在远程集群主机上运行诸如 hostname 等简单命令来验证用户等效性,如在n2pub上: 如果返回如n1pub,则表示正常。 测试每个方向上所有服务器的连通性。 如在n1pub上: 11. 同步时间 第 3 部分: 准备共享磁盘 有三种准备共享磁盘以用于 RAC 的方法: Oracle 集群文件系统 (OCFS) 自动存储管理器 (ASM) 原始设备 Oracle 自动存储管理器 (ASM) 1. 首先确定ASMLib的版本。ASMLib 以一套共三个 Linux 程序包的形式提供: oracleasmlib — ASM 库 以 root 用户身份登录并运行以下命令: 2. 下载与内核版本相应的oracleasm程序包(或者升级内核版本)。下载oracleasmlib 和 oracleasm-support 程序包。 3. 以 root 用户身份执行以下命令,在每个集群主机上安装这些程序包: # rpm -Uvh \ 4. 运行配置脚本来准备驱动程序。以 root 用户身份在每个集群主机上运行以下命令并回应提示: # /etc/init.d/oracleasm configure 5. 启用 ASMLib 驱动程序: # /etc/init.d/oracleasm enable 6. 使用fdisk对磁盘进行分区。 用途 大小 磁盘设备 7. 为 ASM 配置磁盘。注意,这些磁盘应该是不包含任何内容的空磁盘分区。仅从一个集群主机上以 root 用户身份运行以下命令: # /etc/init.d/oracleasm createdisk DISK_NAME1 /dev/sdb1 8. 列出标记为由 ASMLib 使用的所有磁盘: # /etc/init.d/oracleasm listdisks 9. 在所有其他集群主机上,以 root 用户身份运行以下命令,扫描所配置的 ASMLib 磁盘: # /etc/init.d/oracleasm scandisks 第 4 部分: 安装 Oracle 软件 1.1 创建CRS 1. 在原始设备上创建 Oracle CRS 文件 目的 大小 磁盘设备 原始设备 文件名 将以下各行添加到每个集群节点上的 /etc/raw: 2. 为每个节点上的 CRS 原始设备设置所有权和权限(严格按照下述配置) # chown root:oinstall /dev/raw/raw1 3. 重新启动原始设备服务 # /etc/init.d/raw start 4. 让系统启动时启动raw # chkconfig raw on 5. 初始化raw (500m=524288000, 100m=104857600) # dd if=/dev/zero of=/dev/raw/raw1 bs=524288000 ount=1 6. 以 oracle 用户身份登录X-Window并建立节点间的用户等效性: > exec /usr/bin/ssh-agent $SHELL 7. 设置 ORACLE_BASE 和 ORACLE_HOME 环境变量:.profile > export ORACLE_BASE=/u01/app/oracle 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 中,本例为 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 验证安装已成功。例如: 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 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 1.2 创建 Oracle RAC 数据库 38. 以 oracle 用户身份登录,设置环境。 > . oraenv 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 客户端设置 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 的输出)
YaST
图形基本工具
Linux工具
KDE桌面环境
C/C++编译环器和工具(安装操作系统时手工选择)
Tips:选完全安装即可,省了很多挑选包的繁琐工作
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
# /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)
# /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
# passwd oracle
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
# 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
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
# cat >> /etc/init.d/boot.local <<EOF
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
EOF
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
> mkdir ~/.ssh
> chmod 755 ~/.ssh
> /usr/bin/ssh-keygen -t rsa
> /usr/bin/ssh-keygen -t dsa
> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> ssh oracle@n2pub cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> ssh oracle@n1pub cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
> exec /usr/bin/ssh-agent $SHELL
> /usr/bin/ssh-add
> ssh n1pub hostname
> ssh n2pub hostname
oracleasm-support — 管理 ASMLib 所需的实用程序
oracleasm — 用于 ASM 库的内核模块
# uname -rm
2.6.5-7.155.29-smp i686
> 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%]
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
Writing Oracle ASM library driver configuration: done
Scanning system for ASM disks: done
ASM数据区1 600G dev/sdb
ASM数据区2 600G dev/sdc
Oracle Cluster Registry 200M dev/sdd1
Oracle CRS Voting 200M dev/sdd2
# /etc/init.d/oracleasm createdisk DISK_NAME2 /dev/sdc1
…
Marking disk "/dev/sdb1" as an ASM disk: done
DISK_NAME1
DISK_NAME2
...
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
raw1:sdd1
raw2:sdd2
# chmod 660 /dev/raw/raw1
# chown oracle:dba /dev/raw/raw2
# chmod 640 /dev/raw/raw2
bind /dev/raw/raw1 to /dev/sdd1... done
bind /dev/raw/raw2 to /dev/sdd2... done
bind /dev/raw/raw3 to /dev/sdd3... done
# dd if=/dev/zero of=/dev/raw/raw2 bs=104857600 ount=1
> /usr/bin/ssh-add
> 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
/dev/raw/raw1
> cd $ORACLE_BASE/product/10.1.0/crs_1/bin
> ./olsnodes
# export XAUTHORITY=/home/oracle/.Xauthority
./netca (在用户等效性已经建立的session 中执行)
ORACLE_SID = [oracle] ? *
ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1
编辑 $oracle_home/bin 的dbshut dbhome dbstart 脚本 设置
将 ORATAB设置为/etc/oratab
192.168.1.69 n2pub (n2pub 为节点二 上 uname –n 的输出)