Chinaunix首页 | 论坛 | 博客
  • 博客访问: 321624
  • 博文数量: 95
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 840
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-01 13:05
文章分类

全部博文(95)

文章存档

2009年(8)

2008年(87)

我的朋友

分类:

2008-06-25 21:27:49

安装带有 Oracle RAC 的 Oracle 数据库 10g (10.1.0.3)(用于 RHEL 或 SLES)


佚名 -Oracle-

2007-3-7

注意:如果您使用下载的软件,则必须为此脚本刻录物理 CD!

VMWARE 注意事项:o 如果您在 VMWARE 中安装,可能会因
速度慢的 CDROM 产生问题。禁用 Norton
AntiVirus 中的实时防护(注意,默认情况下它会在 30 分钟后自动重新启用


o 禁用 VM 中的屏幕保护程序以获得更好效果。
Redhat Start->Preferences->Screensaver
SUSE Start->Preferences->Look & Feel->Screensaver

o 我们正在单一节点上配置 RAC,即两个实例
运行在一台服务器上,这不是一种实际情况,但是
它对调试 CRS/RAC 和了解 CRS/RAC 的工作原理很有用。
在开发脚本时我们使其尽可能地通用,
这样它们不用做任何修改即可运行在实际服务器上。

1. 如果您还没有登录,则以 oracle 用户登录到 Linux GUI 桌面。
不要以根用户登录到桌面并用 su 连接 oracle。

2. (REDHAT 可选)要准备 GUI 环境:
a. 找到终端程序 (Main Menu --> System Tools --> Terminal)。
b. 右键单击“Terminal”菜单项。
i. 选择“Add this launcher to panel”。

注意:这会将 Terminal 程序图标添加到屏幕底部的启动程序面板中,
我们将频繁使用这个程序。

SUSE (KDE) Desktop 把这个 shell 放在任务栏左起第 4 个图标位置


3. 如果您尚未打开,则打开两个终端窗口:

a. 单击我们刚刚添加到任务栏的 Terminal 图标。
b. 通过以下方法在其中一个窗口中将用户更改为根用户:

$ su -
Password:oracle
#

注意:提示符从“$”变为了“#”,表示
shell 正以根用户权限运行。从现在开始,在这些脚本中,每个
命令都将以一个“$”或“#”字符开始,以表明
该命令是应该在“oracle”窗口中运行还是在
“root”窗口中运行。注意,这的确是有区别的。

4. Oracle 10g 可以使用 ssh 而非 rsh 将软件安装到远程节点。
如果未定义 ssh,则安装程序将转而运行 rsh。
在这两种情况下 (ssh/rsh),安装期间的登录都必须是不需要口令的。
要通过 SSH 为 oracle 用户设置安全的不需要口令的登录,执行以下操作:

a. 以 oracle 用户生成用户的 SSH 公钥和私钥(~/.ssh/id_dsa.pub
和 id_dsa):

$ ssh-keygen -t dsa

i. “Enter file in which to save the key ...:”--> 按 ENTER 键。
ii.“Enter passphrase ...:”
对于不需要太安全的连接,只要按下 ENTER 即可。
对于需要安全的连接,输入一个只有您知道的口令短语。
iii.“Enter same passphrase again:”或者按 Enter,或者输入口令短语。

注意:在实际的多服务器环境中,在进行步骤“b.”之前,
您要在群集中的每台服务器上重复步骤“a.”。

b. 通过将来自每台服务器的 id_dsa.pub 文件内容合并,
创建 authorized_keys 文件。您可以在一个节点上完成所有这些步骤:
多次运行下面的命令,每次用一个不同的节点名称
替换“raclinux1”。以 oracle 用户:

$ ssh raclinux1 "cat ~/.ssh/id_dsa.pub" >> ~/.ssh/authorized_keys

i. 每次您从任何节点首次连接到一个新主机名时,
您将看到类似这样的消息:

“The authenticity of host 'raclinux1 (192.168.203.11)' can't be
established.RSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)?”

键入“yes”并按下 ENTER 键。接着您将看到此消息:

“Warning:Permanently added 'raclinux1,192.168.203.11' (RSA) to
the list of known hosts.”

ii.“oracle@raclinux1's password:”--> 键入“oracle”并按下 ENTER 键。

注意:在实际的多服务器环境里,将您刚刚创建的 authorized_keys 文件
复制到群集中每台服务器上的 oracle 用户的 ~/.ssh
目录中。例如,您可以使用下列命令
将其复制到节点“raclinux2”:

$ scp ~/.ssh/authorized_keys raclinux2:/home/oracle/.ssh/
oracle@raclinux2's password:--> 键入“oracle”并按下 ENTER 键。

c.(可选)如果您在前面输入了口令短语,而却希望无口令登录(RAC 10g 安装需要),
您需要将此口令短语通知 ssh-agent(已经为桌面运行),
这样就不会提示 ssh 客户端
输入口令短语。一旦您通知 ssh-agent
已经为 GUI 桌面登录过程缓存了口令短语,
ssh-agent 就会满足后续的客户端请求。

$ ssh-add
为 /home/oracle/.ssh/id_dsa 输入口令短语:*键入您的口令短语*
添加了标识:/home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)

d. (不可选)要结束并测试无需口令的 SSH 连接,
对任何提示都回答 YES(运行两次,第二次将不提示输入
口令):

i. 运行“ssh raclinux1 date”。
ii.运行“ssh raclocal1 date”。
iii.运行“ssh raclinux1.us.oracle.com date”。
iv.运行“ssh raclocal1.us.oracle.com date”。

注意:在实际的多服务器环境中,在所有节点上重复以上步骤。

疑难解答:如果要求输入口令,检查
用户主目录的所有权应该被限制为对组和其他对象可写。
在尝试进行连接时运行 Tail /var/log/messages
在详细模式下运行 ssh:“ssh -vvv raclinux1 date”


5. 以 root 身份更改 ORACLE_BASE 目录的权限:

# chown oracle:oinstall /opt/oracle

6. 如果选择将 CRS 文件(表决磁盘和 OCR 文件)放在原始设备上,
就必须进行此步骤,否则可以跳过此步骤。
请注意,如决定将 OCFS 用于 CRS 文件(跳过此步骤):
** 确保使用支持的 OCFS **
为表决磁盘和 OCR 文件设置原始设备:

a. 以 root 身份执行 vi 或 nedit:
REDHAT:/etc/sysconfig/rawdevices
SUSE:/etc/raw

并添加:

Red Hat 语法:
/dev/raw/raw1 /dev/sda1
/dev/raw/raw2 /dev/sda2

SuSE 语法:
raw1:sdd1
raw2:sdd2

b. 将原始设备的权限更改为 oracle:

# chown oracle:oinstall /dev/raw/raw1
# chown oracle:oinstall /dev/raw/raw1

或简化的 Linux 样式:

# chown oracle:dba /dev/raw/raw[12]

c. 以 root 身份启动原始设备(确保它们在下次重启动时启动):

RedHat:
# /etc/init.d/rawdevices restart

在 Red Hat 上将原始设备设置为启动时启动。

SUSE:
# /etc/init.d/raw start
# chkconfig -s raw 35

d. 以 oracle 身份为表决磁盘和 OCR 文件创建符号链接:

$ cd /ocfs
$ ln -sf /dev/raw/raw1 ocr_file
$ ln -sf /dev/raw/raw2 voting_disk

7. 安装集群就绪服务 (CRS):

a. 将 Oracle 10g CRS CD 放入 CD 托盘中,Linux 可能会
自动挂载它,并在桌面上添加一个“CDROM”图标。
否则,以 root 身份执行:

Red Hat:# mount /mnt/cdrom
SUSE:# mount /media/cdrom (以 oracle 用户挂载也可以)

b. (可选,VMWare 专用)如果选择将 CRS 文件
(表决磁盘和 OCR 文件)放在 OCFS 上,可以以 oracle 用户身份执行这个
可选命令:

$ dd if=/dev/zero of=/ocfs/voting_disk bs=1M count=9

注意:上面的 dd 命令不是必需的,但是如果我们在这里进行 CRS 安装的话,
它将加快在 CRS 安装后
运行的 root.sh 的速度。

c. 以 oracle 用户身份运行安装程序:

$ cd (不要将目录更改为 /mnt/cdrom 或 /media/cdrom)
RedHat:$ /mnt/cdrom/runInstaller
SUSE:$ /media/cdrom/runInstaller

i. 屏幕显示:“Welcome”
单击“Next”

ii.屏幕显示:“Specify Inventory directory and credentials”
1. 将 Inventory 目录更改为:/opt/oracle/oraInventory
2. 将操作系统组名称更改为:oinstall
3. 单击“Next”

iii.弹出窗口……以 root 身份运行 /opt/oracle/oraInventory/orainstRoot.sh
# /opt/oracle/oraInventory/orainstRoot.sh
在安装程序中单击“Continue”。

iv.屏幕显示:“Specify File Locations”
将 Name 更改为:CRS10g
将 Path 更改为:/opt/oracle/CRS10g
单击“Next”

v. 屏幕显示:“Language Selection”
单击“Next”

vi.屏幕显示:“Cluster Configuration”
保持 Cluster Name 为“crs”不变
对于公共节点名称,使用“raclinux1.us.oracle.com”。
对于专用节点名称,使用“raclocal1.us.oracle.com”。
单击“Next”

注意:如果收到警告:找不到节点,则确保
“ssh date”仅返回日期

vii.屏幕显示:“Private Interconnect Enforcement”
对于 eth0,在“Interface Type”中选择“Public”。
对于 eth1,在“Interface Type”列中选择“Private”。
单击“Next”

viii.屏幕显示:“Oracle Cluster Registry”
输入:/ocfs/ocr_file
单击“Next”

ix.屏幕显示:“Voting Disk”
输入:/ocfs/voting_disk
单击“Next”

x. 屏幕显示:“Summary”
单击“Install”结束安装

xi.弹出 Setup Privileges 窗口:以 root 在每个节点
上运行:

# /opt/oracle/CRS10g/root.sh

忽略:
“WARNING:directory '/opt/oracle' is not owned by root”



CRS 成功消息如下:
“Oracle CRS stack installed and running under init(1M)”

如果不是这样的,则仔细检查 /etc/hosts 文件。要重试 root.sh

1. vi /etc/inittab(注释掉最后 3 个 crs 行)
2. init q(重新读取 inittab 并终止不需要的进程)
3. 终止任何其他 crs/css/evm 进程

在安装程序弹出窗口中单击“OK”。

xii.屏幕显示:“End of Installation”,退出安装程序
单击“Exit”并确认退出。

xiii.检查 CRS 是否正在运行

# ps -efm | grep crs (应该有很多行)


d. 以 root 身份取出 Oracle10g CRS CD:

Red Hat:# umount /mnt/cdrom
SUSE:# umount /media/cdrom

CD 若未自动弹出的话,则手动弹出 CD。

8. 创建 Oracle 用户环境:

a. 编辑 oracle 用户的 .bashrc 登录文件:

$ vi $HOME/.bashrc 或 nedit $HOME/.bashrc

在最后插入下列 6 行:

export ORACLE_SID=O10G1
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/DB10g
export ORA_CRS_HOME=/opt/oracle/CRS10g
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
# export LD_ASSUME_KERNEL=2.4.19 (RHEL3 vanilla 或 Update 1 需要)

还可以使用 .bash_profile,但要注意的是默认情况下 KDE
环境(在 SUSE 上是默认的)不读取 .bash_profile。
如果在 SUSE 上安装了 orarun rpm,在
/etc/profile.d/oracle.sh,csh 中修改环境

注意:数据库名称是“O10G”(字母“O”、数字“10”和大写字母“G”)
SID:“O10G1”和“O10G2”;1 和 2 由 dbca 自动追加。
不要混淆“O”(字母“O”)和“0”(零)。

b. 以 oracle 用户身份执行 .bashrc 脚本获得更改:

$ source $HOME/.bashrc

c. 以 root 用户身份执行:

# source ~oracle/.bashrc

9. 从 CD 安装 Oracle 数据库 10g 企业版 10.1.0.3
(您可以从 OTN 下载 cpio 归档文件自己刻录 CD):

a. 将 Oracle 数据库 CD 放入 CD 托盘中。Linux 会自动挂载它,
并在桌面上添加一个“CDROM”图标。否则,以 root 身份执行:

Red Hat:# mount /mnt/cdrom
SUSE:# mount /media/cdrom

b. 以 oracle 用户身份运行安装程序:

$ cd (不要将目录更改为 /mnt/cdrom 或 /media/cdrom)
RedHat:$ /mnt/cdrom/runInstaller
SUSE:$ /media/cdrom/runInstaller

i. 屏幕显示:“Welcome”
单击“Next”

ii.屏幕显示:“Specify File Locations”
将 Name 更改为:DB10g
确认验证 Path 为:/opt/oracle/DB10g
单击“Next”

iii.屏幕显示:“Specify Hardware Cluster Installation Mode”
选择:“Cluster Installation” (最上面的选项)
选择所有节点(实际的 RAC 会有两个或两个以上的节点)
单击“Next”

iv.屏幕显示:“Select Installation Type”
选择:“Enterprise Edition” (最上面的选项)
单击“Next”

v. 屏幕显示:“Product-specific Prerequisite Checks”
所有检查都应该是成功的。
单击“Next”

注意:如果 OS 内核参数不正确,则按照第 2 阶段的步骤在 OS 级别上修复,
然后按 Back 和 Next 按钮,这样就能通过检查。

vi.屏幕显示:“Select Database Configuration”
选择:“Do not create a starter database” (最下面的选项)
单击“Next”

vii.屏幕显示:Summary
单击“Install” (大约 10 分钟)


viii.弹出 Setup Privileges 窗口:在每个节点上以 root 身份运行 $ORACLE_HOME/root.sh
(确保将 DISPLAY 环境变量设置为用 xclock 测试),
否则可能会遇到如下错误:

“InternalError:Can't connect to X11 window server using ':0.0'”

# $ORACLE_HOME/root.sh

1. “Enter the full pathname of the local..”接受默认选项。

2. VIP 配置助手 (vipca) 自动启动:
a. 屏幕显示:“Welcome”
单击“Next”
b. 屏幕显示:“1 of 2, Network Interfaces”
只选择公用接口 — 在我们的例子中为“eth0”
单击“Next”
c. 屏幕显示:“2 of 2, Virtial IPs for cluster nodes”
在“IP Alias Name”下输入“raclinux1-vip.us.oracle.com”。
按 TAB 自动填充“IP address”列。
单击“Next”
d. 屏幕显示:“Summary”
单击“Finish”

e. 对话框:“Configuration Assistant Progress Dialog”
所有步骤完成后,单击“OK”。
f. 对话框:“Configuration Results”
单击“Exit”

在安装程序弹出窗口中单击“OK”。

ix.屏幕显示:“End of Installation”,退出安装程序
单击“Exit”并确认退出。

c. 以 root 用户身份取出 Oracle10g 数据库 CD:

Red Hat:# umount /mnt/cdrom
SUSE:# umount /media/cdrom

CD 若未自动弹出的话,则手动弹出 CD。

10. 加载 10g CRS 所需的 hangcheck-timer 内核模块

将以下行:

modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

添加到:

REDHAT:/etc/rc.local
SUSE:/etc/init.d/boot.local

以 root 身份输入:

# modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

或更高的值(见下面的 VMware 说明)。

VMWARE 说明:对于 VMWARE,使用值,否则机器会重启动
如果从挂起模式恢复,这些是不错的值:
hangcheck_tick=9000000 hangcheck_margin=36000000

11. 确认所有服务都在正常运行:

a. 以 oracle 用户身份执行:

$ srvctl status nodeapps -n raclinux1

VIP is running on node:raclinux1
GSD is running on node:raclinux1
PRKO-2016 :Error in checking condition of listener on node:raclinux1
ONS daemon is running on node:raclinux1

一旦我们运行 netca,监听器错误就会消失。

12. (可选)增加 RAC/CRS 超时设定,这通常专门针对 VMware。

a. 更改脚本超时值并检查 VIP 资源上的时间间隔。
为避免负载过大情况下所有数据库潜在的关闭可能,以 root 身份:

i. 将要修改的资源的详细信息从 OCR 提取到文本:

# cd /opt/oracle/CRS10g/bin
# ./crs_stat -p ora.raclinux1.vip > /tmp/ora.raclinux1.vip.cap

ii.从上面更新/修改 .cap 文件。将 CHECK_INTERVAL 更改为 900
秒,将 SCRIPT_TIMEOUT 更改为 600 秒(默认情况下二者都为 60 秒):

# ./crs_profile -update ora.raclinux1.vip -dir /tmp -o ci=900,st=600

iii.现在用 OCR 注册已更新资源(注意, -u 意味着
更新一个已注册的资源):

# ./crs_register ora.raclinux1.vip -dir /tmp -u

在注释 294336.1 中对这些步骤进行了进一步的说明。

b.(Mware 特有)如果在重启动时没有任何 CRS 资源启动,
则以 root 身份增加 CSS misscount(默认为 60 秒):

# /opt/oracle/CRS10g/bin/crsctl set css misscount 180

使用这个值,磁盘 IO 用时可达 180*.75 = 160 秒。

要检查当前的 misscount,执行:# crsctl get css misscount

在注释 294430.1 中对这些步骤进行了进一步的说明。

13. (可选)启动 iSQL*Plus 中间层(设置 dbconsole 可以启用该中间层):

a. 应用此变通方法:
i. 以 oracle 身份用“vi”或“nedit”编辑 $ORACLE_HOME/bin/isqlplusctl:
找到“IS_RAC=true”这一行,并将其更改为“IS_RAC=false”。
b. 以 oracle 身份启动 iSQL*Plus:
$ isqlplusctl start
c. 确认 iSQL*Plus 正在运行:
i. 从一个浏览器连接到 URL“”

由于没有创建数据库,因此还无法使用用户名和口令进行连接,
但此时会看到这个提示。

14. (可选,但强烈建议)为了为 Orcle 软件安装更多补丁,
您需要加载 OPatch。从错误 2617419 下的 Metalink
获得 OPatchfrom。

cd $ORACLE_HOME
<将补丁 2617419 下载到这个目录>
$ mv OPatch OPatch.orig
$ unzip p2617419_10102_GENERIC.zip

15. (可选,但强烈建议)如果 CRS 在重启动时没有自动启动,
如下应用补丁 3455036。您将需要两个
shell 窗口,一个以 ($)“oracle”身份登录,另一个以 (#)“root”身份登录。这个
过程有点“不标准”,这是因为我们修补的是 CRS 主目录而不是
RDBMS 主目录(如需更多详细信息,请查看补丁的自述文件)。

a. 关闭所有(如果有的话)数据库和服务:

$ srvctl stop db -d o10g
$ srvctl stop asm -n raclinux1 -i +ASM1 (如果有 ASM 实例的话)

以 root 身份关闭 CRS:

# /etc/init.d/init.crs stop

确认所有进程都已结束:

# ps -efm |grep evm ; ps -efm |grep css ; ps -efm |grep crs

终止任何延迟进程(不应该有延迟进程)

b. 从 Metalink 获得补丁 3455036,按照
补丁所带的 README.txt 进行操作。下面是针对我们环境
的步骤:

以 Oracle 用户身份在 CRS home 下解压缩:

$ cd /opt/oracle/CRS10g
$ mkdir Patches
$ cd Patches
<从 Metalink 将补丁 3455036 下载到这个目录>
$ unzip -q p3455036_10103_LINUX.zip
$ cd 3455036
$ chmod +x custom/scripts/*.sh

c. 运行 root 预安装步骤:

# cd /opt/oracle/CRS10g/Patches/3455036
# custom/scripts/prerootpatch.sh
-crshome /opt/oracle/CRS10g -crsuser oracle

d. 以 oracle 用户身份应用补丁:

$ cd /opt/oracle/CRS10g/Patches/3455036
$ custom/scripts/prepatch.sh -crshome /opt/oracle/CRS10g
$ export ORACLE_HOME=/opt/oracle/CRS10g
$ /opt/oracle/DB10g/OPatch/opatch apply -local

Is this system ready for updating?Please respond Y|N > Y

$ custom/scripts/postpatch.sh -crshome /opt/oracle/CRS10g

在 postpatch.sh 完成之前不要继续操作
(当 ORACLE_HOME 指向了 CRS_HOME 后退出这个 shell)

e. Root 安装后的步骤:

# cd /opt/oracle/CRS10g/Patches/3455036
# custom/scripts/postrootpatch.sh -crshome /opt/oracle/CRS10g

现在所有服务都应自动启动。也可以
重启动以 100% 保证已自动启动所有服务(不是必需的)。

f. 确认已以 oracle 用户身份安装了补丁:

$ export ORACLE_HOME=/opt/oracle/CRS10g
$ /opt/oracle/DB10g/OPatch/opatch lsinventory -detail

应看到列出了错误 3455036。

16. (可选)禁止在 CRS 失败时重新启动

注释掉 FAST_REBOOT(大概在 linux 部分的第 81 行):
REDHAT:/etc/rc.d/init.d/init.cssd
SUSE:/etc/init.d/init.cssd

### FAST_REBOOT="/sbin/reboot -n -f"


17. (可选)EM 可能误报无效的对象。以下是使用 OPatch 的好实践:

a. 从 Metalink 获得补丁 3774886,
按照补丁所带的 README.txt 进行操作,或安装下面的
这些相同指令:

$ mkdir -p /opt/oracle/DB10g/Patches
$ cd /opt/oracle/DB10g/Patches

$ unzip -q p3774886_10103_GENERIC.zip
$ cd 3774886
$ ../../OPatch/opatch apply

回答“Y”


b. 从 Metalink 获得补丁 3377171,
按照补丁所带的 README.txt 进行操作。

忽略任何“java.io.IOException:Broken pipe”异常,该异常可能会在
最新版本的 opatch 中得到修复。

对于现有信息中心库(我们还没有数据库/信息中心库),运行:

$ sqlplus sysman/oracle
SQL> @?/sysman/admin/emdrep/sql/db/latest/policy/default_policy_setup


c. 以 oracle 身份重新加载代理:

$ emctl reload agent

如果还没有创建数据库,出现错误信息是很正常的。

18. (可选)如果计划在数据库中安装 Spatial 选项,则确保
从 Metalink 获得 3928367;按照补丁所带的 README.txt 进行操作。

-- 完成

这个脚本只供开发和评估使用。Oracle 将不会支持产品部署。
阅读(1624) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~