求在LINUX 4.8下安装Oracle 11g的详细文档!如题 谢谢了

html-css013

求在LINUX 4.8下安装Oracle 11g的详细文档!如题 谢谢了,第1张

帮你找了一个,看行不行 Red Hat Enterprise Linux4.0 安装oracle11g 文章出处:DIY部落( http://www.diybl.com/course/7_databases/oracle/oraclejs/2008827/138112.html ) 在linux环境下安装前的准备 1.内存空间大小 最少1GB的物理内存 查看现有内存的命令 #grep MemTotal /proc/meminfo2.交换分区的大小 内存和交换分区的配置关系 内存(MB) 交换分区 256~512 内存的2倍 513~2048 内存的1.5倍 2049~8192 和内存大小相同 8192以上 内存的75% 查看交换分区大小 #grep SwapTotal /proc/meminfo 查看系统剩余内存和交换分区的命令: #free Oracle 11g的自动记忆管理功能将需要更多的共享内存(/dev/shm)和文件描述符.共享内存应该至少要大于一台主机上每个Oracle实例的MEMORY_MAX_TARGET值和MEMORY_TARGET值 输入如下命令查看可用共享内存 #df -k /dev/shm3.磁盘空间大小 按照oracle11g官方文档的要求,/tmp 目录至少要有150M-200M的空间 #df -k /tmp 如果tmp目录可用空间小于400,执行以下步骤之一来满足硬盘空间要求 * 删除/tmp目录下不必要的文件以释放空间 * 在设置oracle用户环境变量的时候设置TMP和TMPDIR环境变量 * 增加/tmp目录的文件系统大小 根据安装类型的不同,Oracle软件大小在1.5到3.5G之间,见下表 安装类型 软件文件大小(GB) 企业版 3.47 标准版 3.22 自定义(最大安装) 3.374.检查操作系统要求 4.1 操作系统必须是如下的一种 Asianux 2.0 Asianux 3.0 Oracle Enterprise Linux 4.0 Oracle Enterprise Linux 5.0 Red Hat Enterprise Linux 4.0 //内核最低要求 2.6.9 Red Hat Enterprise Linux 5.0 //内核最低要求 2.6.18 SUSE Enterprise Linux 10.0 //内核最低要求 2.6.16.21 #cat /proc/version 5.安装oracle11g所必需的包 binutils-2.15.92.0.2-18 compat-libstdc++-33-3.2.3-47.3 elfutils-libelf-0.97-5 elfutils-libelf-devel-0.97-5 glibc-2.3.4.-2.19 glibc-common-2.3.4-2.19 gcc-3.4.5-2 gcc-c++-3.4.5-2 libaio-devel-0.3.105-2 libaio-0.3.105-2 libgcc-3.4.5 libstdc++-3.4.5-2 libstdc++-devel-3.4.5-2 make-3.80-5 sysstat-5.0.5 unixODBC-2.2.11 unixODBC-devel-2.2.11 输入如下命令查看所要求的软件包是否安装 $rpm -q 软件包名 如果没有安装需要的软件包,请从Linux光盘中或者下载所需软件包来安装 例如:输入如下命令来安装要求的软件包 $ rpm -Uvh unixODBC-devel-2.2.11.rpm * 额外的软件要求 根据你所需要使用的组件的不同,你需要确定以下软件被安装 Oracle ODBC Drivers 你可以从 http://www.unixodbc.org 下载ODBC驱动管理器 * 集成开发环境 你可以选择安装下面所列的JDK,但不是必须安装的 带JNDI扩展的Sun JDK 1.4.2_08 带JNDI扩展的Sun JDK 1.5.0_06 * Oracle Messaging Gateway Oracle Messaging Gateway支持Oracle Streams Advanced Queuing(AQ)和以下软件的集成 IBM WebSphere MQ V5.3 MQSeriesClient MQSeriesServer MQSeriesRuntime TIBCO Rendezvous 7.2 * 浏览器要求 支持Javascript,HTML4.0和CSS1.0标准的浏览器,以下浏览器适用于Oracle Enterprise Manager Database Control Netscape Navigator 7.2 Netscape Navigator 8.1 Mozilla version 1.7 IE 6.0 SP2 IE 7.0 Firefox 1.0.4 Firefox 1.5 Firefox 2.0 6.配置内核参数 下表显示了Oracle建议的内核参数参考值,请确保系统中的这些内核参数大于或等于表中建议的数值,如果系统中的内核参数比下表中的值大,就不要改变系统内核参数 参数 参数值 文件 cat /proc/sys/kernel/sem semmsl 250 semmns 32000 semopm 100 semmni 128 cat /proc/sys/kernel/shmall shmall 2097152 cat /proc/sys/kernel/shmmax shmmax 下列值中最小的一个: * 物理内存的一半 * 4GB cat /proc/sys/kernel/shmmni shmmni 4096 cat /proc/sys/fs/file-max file-max 512 * PROCESSES cat /proc/sys/net/ipv4/ip_local_port_range ip_local_port_range 最小: 1024 最大: 65000 cat /proc/sys/net/ipv4/ip_local_port_range cat /proc/sys/net/core/rmem_default rmem_default 4194304 cat /proc/sys/net/core/rmem_max rmem_max 4194304 cat /proc/sys/net/core/wmem_default wmem_default 262144 cat /proc/sys/net/core/wmem_max wmem_max 262144 按下表输入如下命令查看内核参数 参数 命令 $ /sbin/sysctl -a | grep sem $ /sbin/sysctl -a | grep shm $ /sbin/sysctl -a | grep file-max $ /sbin/sysctl -a | grep ip_local_port_range $ /sbin/sysctl -a | grep rmem_default $ /sbin/sysctl -a | grep rmem_max $ /sbin/sysctl -a | grep wmem_default $ /sbin/sysctl -a | grep wmem_max 以root用户登陆,修改/etc/sysctl.conf文件,在该文件中添加以下参数: kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144 输入如下命令改变内核参数值 #/sbin/sysctl -p 7.创建安装数据库所需要的用户(组) #groupadd oinstall #groupadd dba #useradd -g oinstall -G dba oracle //设置oracle用户是oinstall dba组的成员 #passwd oracle 输入如下命令查看orale用户是否存在且是否存在于正确的用户组中 $ id oracle 如果oracle用户存在,上述命令显示类似于如下的信息 uid=501(oracle) gid=501(oinstall) groups=501(oinstall), 502(dba) 如果oracle用户组存在,但其所在主用户组不是oinstall或者其不属于dba用户组,输入如下命令来修改 $ /usr/sbin/usermod -g oinstall -G dba oracle 8.为oracle用户设置系统资源限制(Shell Limits) 执行如下步骤增加shell limits 8.1.打开/etc/security/limits.conf,增加如下内容 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 8.2打开/etc/pam.d/login文件,加入如下内容 session required /lib/security/pam_limits.so session required pam_limits.so 8.3为oracle用户设置shell的启动文件 打开/etc/profile文件,加入如下内容 if [ $USER = "oracle" ]then if [ $SHELL = "/bin/ksh" ]then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 9.创建所需目录 Oracle基目录需要3G硬盘空间,如果你不打算创建独立的Oracle数据文件目录则需要4G的硬盘空间,但Oracle不推荐这样做. 创建Oracle基目录步骤 9.1输入如下命令查看文件系统信息 # df -k 9.2选择适合要求的文件系统挂载点 9.3输入如下命令创建Oracle基目录并设置相应的权限 # mkdir -p /opt/app/ //opt为挂载点 # chown -R oracle:oinstall /opt/app/ # chmod -R 775 /opt/app/ #sudo mkdir /opt/tmp //使用root用户创建安装时使用的临时文件夹 #sudo chmod a+wr /opt/tmp 10.配置oracle用户环境 以oracle用户执行Oracle Universal Installer之前,必须执行以下步骤配置oracle用户环境 10.1输入如下命令转换到oracle用户 $ su - oracle 10.2输入如下命令查看shell是否以oracle用户开启 $ echo $SHELL 10.3输入如下命令打开oracle用户的shell启动文件 设置DISPLAY环境变量 DISPLAY环境变量默认为:0.0,如果在本地系统上安装Oracle,则不用设置变量 备注:如果在远程主机上安装Oracle,那么需要执行如下命令 $ DISPLAY=本机地址(或本机域名):0.0export DISPLAY $cd ~ $ vi .bash_profile //SUSE操作系统下 $ vi .profile #!/bin/sh umask 022 TMP=/opt/tmp TMPDIR=/opt/tmp export TMP TMPDIR #Get the aliases and functions if [ -f ~/.bashrc ]then . ~/.bashrc fi #User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export ORACLE_BASE=/opt/app/oracle

1.安装vmware server软件

从www.vmware.com下载vmware server 1.0 for linux软件,安装过程很简单,基本上是一路Enter.只是需要sn,在这里提供几个使用

928WH-Y65AW-21394-4C70J,92EY4-Y4NAT-23L07-4U7CH,9AWPN-Y400W-2179N-4K5HM

安装vmware server console,以便远程管理vmware server

2.安装虚拟服务器操作系统

我用的是OS是Redhat AS4,kernel 2.6.9-22,虚拟出两块网卡,开始安装操作系统,主机名叫ha1pub,eth0:10.1.250.17,eth1:192.168.100.100.具体过程省略.安装结束后,使用ntsysv命令,关闭掉一些不常使用的进程,只留下一下一些需要的,如ssh,ftp等等.然后关机!

然后cp ha1pub的所有配置文件到一个新的目录,在虚拟机console里面打开,就会出现一个新的系统,但是由于里面的ip信息和第一台机器的重复,进入系统后修改一下

编辑/etc/sysconfig/network文件,将ha1pub修改为ha2pub,然后修改ip,eth0:10.1.250.18,eth1:192.168.100.200.

注意,redhat系统里面,ip的配置文件ifcfg-eth文件里面,有可能包含mac地址的信息,需要删除掉,否则会mac地址重复的错误.ha2pub也关机

3.设置共享存储

由于安装RAC需要共享存储,所以必须为两台机器设置共享存储,我使用vmware-vdiskmanager命令创建一些虚拟硬盘

________________________________________________________________________

vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "/vmware/share/ocfs.vmdk" |用于Oracle集群注册表文件和CRS表决磁盘

________________________________________________________________________

vmware-vdiskmanager -c -s 2Gb -a lsilogic -t 2 "/vmware/share/asm1.vmdk" |用于Oracle的数据文件

________________________________________________________________________

vmware-vdiskmanager -c -s 2Gb -a lsilogic -t 2 "/vmware/share/asm2.vmdk" |用于Oracle的数据文件

________________________________________________________________________

vmware-vdiskmanager -c -s 2Gb -a lsilogic -t 2 "/vmware/share/asm3.vmdk" |用于Oracle的数据文件

________________________________________________________________________

vmware-vdiskmanager -c -s 2Gb -a lsilogic -t 2 "/vmware/share/asm4.vmdk" |用于Oracle的闪回恢复区

____________________________________________________________________

然后分别在两个虚拟服务器的的配置文件,ha1.vmx和ha2vmx文件里面添加如下信息

scsi1.present = "TRUE"

scsi1.virtualDev = "lsilogic"

scsi1.sharedBus = "virtual"

scsi1:1.present = "TRUE"

scsi1:1.mode = "independent-persistent"

scsi1:1.filename = "/vmware/share/ocfs.vmdk"

scsi1:1.deviceType = "disk"

scsi1:2.present = "TRUE"

scsi1:2.mode = "independent-persistent"

scsi1:2.filename = "/vmware/share/asm1.vmdk"

scsi1:2.deviceType = "disk"

scsi1:3.present = "TRUE"

scsi1:3.mode = "independent-persistent"

scsi1:3.filename = "/vmware/share/asm2.vmdk"

scsi1:3.deviceType = "disk"

scsi1:4.present = "TRUE"

scsi1:4.mode = "independent-persistent"

scsi1:4.filename = "/vmware/share/asm3.vmdk"

scsi1:4.deviceType = "disk"

scsi1:5.present = "TRUE"

scsi1:5.mode = "independent-persistent"

scsi1:5.filename = "/vmware/share/asm4.vmdk"

scsi1:5.deviceType = "disk"

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

保存后,打开vmware console就可以看到添加的硬盘,启动ha1pub和ha2pub!随便进入一台系统,用fdisk格式化这些新添加的硬盘.

fdisk -l可以看到如下

__________________________________________________________________

Disk /dev/sda: 16.1 GB, 16106127360 bytes

255 heads, 63 sectors/track, 1958 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 1 13 104391 83 Linux

/dev/sda2 14 275 2104515 82 Linux swap

/dev/sda3 276195813518697+ 83 Linux

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 130 1044193+ 83 Linux

Disk /dev/sdc: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdc1 1 261 2096451 83 Linux

Disk /dev/sdd: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdd1 1 261 2096451 83 Linux

Disk /dev/sde: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sde1 1 261 2096451 83 Linux

Disk /dev/sdf: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdf1 1 261 2096451 83 Linux

____________________________________________________________________

修改/etc/hosts文件,如下所示

127.0.0.1localhost(这里必须这样修改,否则RAC节点名出现在回送地址中,安装RAC期间可能会报错)

10.1.250.17 ha1pub

10.1.250.18 ha2pub

192.168.100.100 ha1prv

192.168.100.200 ha2prv

10.1.250.19 ha1vip

10.1.250.20 ha2vip

4.调整网络设置,设置共享内存和信号参数

分别在ha1pub和ha2pub上,编辑/etc/sysctl.conf文件,添加如下信息,这些信息可以根据自己的机器实际情况来调整

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

5. 配置 hangcheck-timer 内核模块

该模块是用来监控集群的状态情况,linux as4中已经安装了此模块,使用下面的命令确认

find /lib/modules -name "hangcheck-timer.o" 看看有没有,如果有,配置并加载该模块

#echo "/sbin/modprobe hangcheck-timer" >>/etc/rc.local

#modprobe hangcheck-timer

#grep Hangcheck /var/log/messages | tail -2

Jul 31 15:01:49 ha2pub kernel: Hangcheck: starting hangcheck timer 0.5.0 (tick is 30 seconds, margin is 180 seconds).

如果看到上面的信息,说明模块的设置工作正确

6. 在两个节点上创建oracle用户和目录

groupadd oinstall

groupadd dba

useradd -g oinstall -G dba oracle

passwd oracle

以oracle用户登陆,分别建立两个目录

mkdir /home/oracle/app 用于安装oracle 数据库

mkdir /home/oracle/orcl 用于Oracle 集群文件系统 (OCFS) 的挂载点

修改oracle用户的.bash_profile文件如下所示

__________________________________________________________________

export ORACLE_BASE=/home/oracle/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORA_CRS_HOME=/home/oracle/app/oracle/product/10.2.0/crs/

export ORACLE_SID=orcl1

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin

export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin

export ORACLE_TERM=xterm

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS10=$ORACLE_HOME/nls/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export CLASSPATH=$ORACLE_HOME/JRE

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export THREADS_FLAG=native

export TEMP=/tmp

export TMPDIR=/tmp

________________________________________________________________________

注意,在第二个节点上,修改SID=orcl2

7.建立节点之间的互信

我采用的是ssh,具体过程有很多文档说明,这里省略.分别要建立root用户,oracle用户的互信.

然后在分别以root用户,oracle在两个节点上执行如下命令

ssh localhost

ssh ha1pub

ssh ha2pub

ssh ha1prv

ssh ha2prv

8.安装配置ocfs2

从http://oss.oracle.com/projects/ocfs2/下载与自己操作系统版本相符合的ocfs,ocfs console

比如我的内核是2.6.9-22.EL,于是我下载的就是ocfs2-2.6.9-22.EL-1.2.2-1.i686.rpm,这点非常重要

安装很简单,把该下载的包都下载了rpm安装就ok了

8.1 ocfs2的配置

先使用下面命令禁用SElinux

#system-config-securitylevel &

然后在集群中的每个节点上生成和配置 /etc/ocfs2/cluster.conf

可以使用ocfs2console命令调出图形界面,将ha1pub和ha2pub两个节点都加入,点击apply,然后退出.

在/etc/ocfs2/目录下面将有cluster.conf文件,内容应该如下

______________________________________________________

node:

ip_port = 7777

ip_address = 10.1.250.17

number = 0

name = ha1pub

cluster = ocfs2

node:

ip_port = 7777

ip_address = 10.1.250.18

number = 1

name = ha2pub

cluster = ocfs2

cluster:

node_count = 2

name = ocfs2

________________________________________________________

接着编辑 /etc/init.d/o2cb, 删除开始带 #的配置行

然后 /etc/init.d/o2cb offline ocfs2

/etc/init.d/o2cb unload ocfs2

/etc/init.d/o2cb configure ocfs2 输入y就ok了

8.2 创建ocfs2文件系统

mkfs.ocfs2 -b 4k -C 32k -L oradatafiles /dev/sdb1

然后挂载ocfs2文件系统

mount -t ocfs2 -o datavolume /dev/sdb1 /home/oracle/orcl

修改/etc/fstab,添加

/dev/sdb1 /home/oracle/orcl ocfs2 _netdev,datavolume 0 0

8.3 调O2CB的心跳阀值

修改文件/etc/sysconfig/o2cb将O2CB_HEARTBEAT_THRESHOLD 设置为 301

修改文件 /etc/sysconfig/o2cb 后,需要更改 o2cb 配置。同样,应在集群的所有节点上执行以下操作。

# umount /home/oracle/orcl/

# /etc/init.d/o2cb unload

# /etc/init.d/o2cb configure

reboot两个节点

9. 安装,配置自动存储管理ASM2.0

可以从http://www.oracle.com/technology ... x/asmlib/rhel4.html这里下载相关rpm包

rpm安装过程省略

执行/etc/init.d/oracleasm configure

默认用户输入oracle,默认组输入dba,其他都y,y就可以了

9.1创建ASM磁盘

在一个节点上执行

/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1

/etc/init.d/oracleasm createdisk VOL2 /dev/sdd1

/etc/init.d/oracleasm createdisk VOL3 /dev/sde1

/etc/init.d/oracleasm createdisk VOL4 /dev/sdf1

创建好后,执行/etc/init.d/oracleasm listdisks可以看到

VOL1

VOL2

VOL3

VOL4

然后在另外一个节点上执行

/etc/init.d/oracleasm scandisks

完成后执行

/etc/init.d/oracleasm listdisks应该可以看到和的一个节点相同的内容

10. 安装Oracle 10G cluster软件

从oracle网站下载10201_clusterware_linux32

以oracle用户登录,unset掉一些环境变量,如下

$ unset ORA_CRS_HOME

$ unset ORACLE_HOME

$ unset ORA_NLS10

$ unset TNS_ADMIN

开始安装cluster软件

./runInstaller -ignoreSysPrereqs

*确认安装目录是/home/oracle/app/oracle/product/10.2.0/crs/

*如果愿意可以将clustername由crs修改成其他的名称

*添加两个节点,如下所示

____________________________________________________________________

Public Node NamePrivate Node NameVirtual Node Name

ha1pubha1prvha1vip

ha2pubha2prvha2vip

____________________________________________________________________

*要修改一下eth0的类型,他默认的是private,修改为public

*指定OCR和mirror的路径

Specify OCR Location: /home/oracle/orcl/OCRFile

Specify OCR Mirror Location:/home/oracle/orcl/OCRFile_mirror

*指定Voting磁盘路径

Voting Disk Location: /home/oracle/orcl/CSSFile

Additional Voting Disk 1 Location:/home/oracle/orcl/CSSFile_mirror1

Additional Voting Disk 2 Location:/home/oracle/orcl/CSSFile_mirror2

*安装快结束时.会要求以root执行orainsRoot.sh和root.sh脚本,以root用户打开一个新的终端,一个一个节点顺序执行,千万不要抢时间一起执行

*执行最后一个root.sh的时候,可能会报""eth0" is not public.Public interfaces should be used to configure virtual IPs."这样的错误.这时候需要以root用户去执行$ORA_CRS_HOME/bin/vipca,选择两个节点,配置一下虚拟ip的信息.

至此,clusterware安装就ok了,检查一下集群节点

$ORA_CRS_HOME/bin/olsnodes -n

ha1pub 1

ha2pub 2

11. 安装Oracle 10g软件

从oracle网站下载10201_database_linux32

unset掉一些环境变量

$ unset ORA_CRS_HOME

$ unset ORACLE_HOME

$ unset ORA_NLS10

$ unset TNS_ADMIN

Oracle的安装省略,既然敢玩RAC,肯定以前也安装过oracle,只是有些地方需要注意

*节点的选择上,一定要选上所有的节点

*选择 "Install database software only",先不要建instance,等数据库安装完毕后时候dbca创建

*安装完成后,需要执行root.sh脚本,不要着急,一个节点一个节点执行

12. 建立TNS侦听

以oracle用户执行

$ netca &

*选择所有节点

*选择Listener configuration

*其他的都选择默认即可

结束后可以验证一下侦听是否已经在所有节点上运行

ps -ef|grep LISTEN

应该可以看到

/home/oracle/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER_HA1PUB -inherit

另外一个节点应该是

/home/oracle/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER_HA2PUB -inherit

13. 创建数据库实例

以oracle用户在任一节点执行

dbca &

*选择 Create a Database

*选择所有节点

*选择Custom Database

*全局数据库名输入orcl,SID也是orcl

*选择使用相同的密码对所有用户

*存储选项选择 use ASM

*修改“Create server parameter file (SPFILE)”为/home/oracle/orcl/dbs/spfile+ASM.ora。所有其他选项可以保留其默认值。

*在ASM Disk Groups配置界面,选择Create New,会显示之前通过ASMlib创建的4个卷VOL1到VOL4

选择前三个,VOL1,VOL2,VOL3,Disk group name输入DATA,Redundancy,选择Normal,单击ok,完成后再次单击Create New.选择最后一个VOL4,Disk group name输入FLASH_RECOVERY_AREA, Redundancy选择External,单击ok,完成ASM的磁盘组创建.

*Database File Locations 选择DATA

*Recovery Configuration 选择FLASH_RECOVERY_AREA

*Database Content由于是测试,可以取消掉所有选项

*Service name 可以输入orcltest,TAF Policy选择Basic

*Database Storage 根据自己系统的硬件条件可以更改一些参数.

完成dbca,Oracle RAC就可以所已经完全安装成功了!

14. RAC的启动和关闭

如果都遵循了上面的安装步骤,那么每次节点重新启动的时候,所有服务都会自动启动,如果需要关闭或者启动某个节点,如下所示

*停止RAC

1.emctl stop dbconsole

2.srvctl stop instance -d orcl -i orcl1

3.srvctl stop asm -n ha1pub

4.srvctl stop nodeapps -n ha1pub

*启动RAC

和上面的步骤正好相反即

1.srvctl start nodeapps -n ha1pub

2.srvctl start asm -n ha1pub

3.srvctl start instance -d orcl -i orcl1

4.srvctl start dbconsole

15. RAC的验证和测试

有很多文档写的都很详细,本文就不赘述了

16. 参考文档

在 Linux 和 FireWire 上构建您自己的 Oracle RAC 10g 第 2 版集群

作者:Jeffrey Hunter

http://www.oracle.com/technology ... unter_rac10gr2.html

参考下面的

nginx 配置高并发

一、一般来说nginx 配置文件中对优化比较有作用的为以下几项:

1. worker_processes 8

nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。

2. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000

为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一

个进程分配到多个cpu。

3. worker_rlimit_nofile 65535

这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文

件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

查看linux系统文件描述符的方法:

[root@web001 ~]# sysctl -a | grep fs.file

fs.file-max = 789972

fs.file-nr = 510 0 789972

4. use epoll

使用epoll 的I/O 模型

(

补充说明:

与apache相类,nginx针对不同的操作系统,有不同的事件模型

A)标准事件模型

Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll

B)高效事件模型

Kqueue:使用于 FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X. 使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。

Epoll:使用于Linux内核2.6版本及以后的系统。

/dev/poll:使用于 Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。

Eventport:使用于 Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装安全补丁。

)

5. worker_connections 65535

每个进程允许的最多连接数, 理论上每台nginx 服务器的最大连接数为worker_processes*worker_connections。

6. keepalive_timeout 60

keepalive 超时时间。

7. client_header_buffer_size 4k

客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。

分页大小可以用命令getconf PAGESIZE取得。

[root@web001 ~]# getconf PAGESIZE

4096

但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数。

8. open_file_cache max=65535 inactive=60s

这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。

9. open_file_cache_valid 80s

这个是指多长时间检查一次缓存的有效信息。

10. open_file_cache_min_uses 1

open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。

二、关于内核参数的优化:

net.ipv4.tcp_max_tw_buckets = 6000

timewait 的数量,默认是180000。

net.ipv4.ip_local_port_range = 1024 65000

允许系统打开的端口范围。

net.ipv4.tcp_tw_recycle = 1

启用timewait 快速回收。

net.ipv4.tcp_tw_reuse = 1

开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接。

net.ipv4.tcp_syncookies = 1

开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理。

net.core.somaxconn = 262144

web 应用中listen 函数的backlog 默认会给内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。

net.core.netdev_max_backlog = 262144

每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.ipv4.tcp_max_orphans = 262144

系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

net.ipv4.tcp_max_syn_backlog = 262144

记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M 内存的系统而言,缺省值是1024,小内存的系统则是128。

net.ipv4.tcp_timestamps = 0

时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。

net.ipv4.tcp_synack_retries = 1

为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。

net.ipv4.tcp_syn_retries = 1

在内核放弃建立连接之前发送SYN 包的数量。

net.ipv4.tcp_fin_timeout = 1

如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,3.可以按这个设置,但要记住的是,即使机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些。

net.ipv4.tcp_keepalive_time = 30

当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时。

三、下面贴一个完整的内核优化设置:

vi /etc/sysctl.conf CentOS5.5中可以将所有内容清空直接替换为如下内容:

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_wmem = 4096 16384 4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 262144

net.core.somaxconn = 262144

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_keepalive_time = 30

net.ipv4.ip_local_port_range = 1024 65000

使配置立即生效可使用如下命令:

/sbin/sysctl -p

四、下面是关于系统连接数的优化

linux 默认值 open files 和 max user processes 为 1024

#ulimit -n

1024

#ulimit –u

1024

问题描述: 说明 server 只允许同时打开 1024 个文件,处理 1024 个用户进程

使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。

新装的linux 默认只有1024 ,当作负载较大的服务器时,很容易遇到error: too many open files 。因此,需要将其改大。

解决方法:

使用 ulimit –n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535 ,-S 指soft ,-H 指hard)

有如下三种修改方式:

1. 在/etc/rc.local 中增加一行 ulimit -SHn 65535

2. 在/etc/profile 中增加一行 ulimit -SHn 65535

3. 在/etc/security/limits.conf最后增加:

* soft nofile 65535

* hard nofile 65535

* soft nproc 65535

* hard nproc 65535

具体使用哪种,在 CentOS 中使用第1 种方式无效果,使用第3 种方式有效果,而在Debian 中使用第2 种有效果

# ulimit -n

65535

# ulimit -u

65535

备注:ulimit 命令本身就有分软硬设置,加-H 就是硬,加-S 就是软默认显示的是软限制

soft 限制指的是当前系统生效的设置值。 hard 限制值可以被普通用户降低。但是不能增加。 soft 限制不能设置的比 hard 限制更高。 只有 root 用户才能够增加 hard 限制值。

五、下面是一个简单的nginx 配置文件:

user www www

worker_processes 8

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000

01000000

error_log /www/log/nginx_error.log crit

pid /usr/local/nginx/nginx.pid

worker_rlimit_nofile 204800

events

{

use epoll

worker_connections 204800

}

http

{

include mime.types

default_type application/octet-stream

charset utf-8

server_names_hash_bucket_size 128

client_header_buffer_size 2k

large_client_header_buffers 4 4k

client_max_body_size 8m

sendfile on

tcp_nopush on

keepalive_timeout 60

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2

keys_zone=TEST:10m

inactive=5m

fastcgi_connect_timeout 300

fastcgi_send_timeout 300

fastcgi_read_timeout 300

fastcgi_buffer_size 4k

fastcgi_buffers 8 4k

fastcgi_busy_buffers_size 8k

fastcgi_temp_file_write_size 8k

fastcgi_cache TEST

fastcgi_cache_valid 200 302 1h

fastcgi_cache_valid 301 1d

fastcgi_cache_valid any 1m

fastcgi_cache_min_uses 1

fastcgi_cache_use_stale error timeout invalid_header http_500

open_file_cache max=204800 inactive=20s

open_file_cache_min_uses 1

open_file_cache_valid 30s

tcp_nodelay on

gzip on

gzip_min_length 1k

gzip_buffers 4 16k

gzip_http_version 1.0

gzip_comp_level 2

gzip_types text/plain application/x-javascript text/css application/xml

gzip_vary on

server

{

listen 8080

server_name backup.aiju.com

index index.php index.htm

root /www/html/

location /status

{

stub_status on

}

location ~ .*\.(php|php5)?$

{

fastcgi_pass 127.0.0.1:9000

fastcgi_index index.php

include fcgi.conf

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$

{

expires 30d

}

log_format access '$remote_addr -- $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" $http_x_forwarded_for'

access_log /www/log/access.log access

}

}