分类:
2008-06-25 21:27:49
佚名 -Oracle-
2007-3-7 —
注意:如果您使用下载的软件,则必须为此脚本刻录物理 CD!这个脚本只供开发和评估使用。Oracle 将不会支持产品部署。
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”
注意:如果收到警告:找不到节点,则确保
“sshdate”仅返回日期
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 进行操作。
-- 完成