oracle public yum server

sometimes,you need a solution to the rpm dependency,while YUM is a better solution,if your server could access to the www, you are the luck one,check out these picked from http://public-yum.oracle.com/

Public Yum Server

 

Introduction

The Oracle public yum server offers a free and convenient way to install the latest Oracle Linux packages as well as packages from the Oracle VM installation media via a yum client.

You can download the full Oracle Linux and Oracle VM installation media via edelivery.oracle.com/linux. To stay current on errata updates, you may wish to subscribe to the Oracle Linux errata mailing list.

This yum server is offered without support of any kind. If you require support, please consider purchasing Oracle Linux Support via the online store, or via your sales representative.

Getting Started

  1. Download and Install Oracle Linux
  2. Download and copy the appropriate yum configuration file in place, by running the following commands as root:

    Oracle Linux 4, Update 6 or Newer

    # cd /etc/yum.repos.d # mv Oracle-Base.repo Oracle-Base.repo.disabled # wget http://public-yum.oracle.com/public-yum-el4.repo 

    Oracle Linux 5

    # cd /etc/yum.repos.d # wget http://public-yum.oracle.com/public-yum-el5.repo 

    Oracle Linux 6

    # cd /etc/yum.repos.d # wget http://public-yum.oracle.com/public-yum-ol6.repo 

    Oracle VM 2

    # cd /etc/yum.repos.d # wget http://public-yum.oracle.com/public-yum-ovm2.repo 
  3. Enable the appropriate repository by editing the yum configuration file
    • Open the yum configuration file in a text editor
    • Locate the section in the file for the repository you plan to update from, e.g. [el4_u6_base]
    • Change enabled=0 to enabled=1
  4. Begin using yum, for example:yum list

    yum install firefox

You may be prompted to confirm the import of the Oracle OSS Group GPG key.

oracle 10gRAC on OEL5u5 with raw device based on virtualbox

概述

学习oracle rac没有环境是个头疼的问题,接下来的文档教您搭建一个简单的rac环境,以供学习、研究。

[文章中涉及的图片请参考附件的pdf文档中]

oracle10gRAC_OEL5u5_rawdevice_virtualbox

1.环境信息

本文安装涉及的环境参考后续文档,本文档主要涉及在Oracle Enterprise Linux上使用virtualbox搭建oracle 10205 rac环境,此文档仅供测试、学习使用。

1.1.OS信息

操作系统使用的是oracle unbreakable linux 5 update 5 x86_64

 

1.2.oracle介质

oracle10201 64位安装包、10205patch包、clusterware安装包

 

1.3.虚拟机

由于资源所限,共享存储使用oracle自己的虚拟机-oracle VM来实现,版本参考下图:

 

 

后续VBoxManager的相关命令均给予"Version 4.1.18 r78361"

 

1.4.共享存储

此文档中涉及的共享存储使用virtualbox模拟,并使用raw device作为oracle rac中的ocrvoting diskspfiledatafile等等,每个raw作为单独的一个实体,提供给ocrvoting disk等等。

 

2.OS环境的准备

2.1.OS的安装

在虚拟机中安装OEL5U5 x64,如下是选择的基本package

GNOME Desktop Environment

Editors

Graphical Internet

Text-based Internet

Development Libraries

Development Tools

Server Configuration Tools

Administration Tools

Base

System Tools

X Window System

 

Oracle在后续的安装会要求配置很多的系统参数,例如:sysctl.confpam.d等,同时还会要求创建oracle用户、组等,为了免去这些麻烦,最好将oracle-validated这个rpm包给打上,这样会省去很多后续配置参数的麻烦,如下是oracle10205想在oel5u5上安装成功必要的一些包。

多说一句:oracle 10g certificate的平台是OEL4,而不是OEL5,所以后续需要一些配置、以及注意事项才能顺利安装。

 

2.2.rpm

一些需要的rpm包,一些包x86x64的版本都需要,最好安装oracle之前将如下的rpm包搞定:

binutils-2.17.50.0.6-2.el5

compat-libstdc++-296-2.96-138

compat-libstdc++-33-3.2.3-61

elfutils-libelf-0.125-3.el5

elfutils-libelf-devel-0.125

gcc-4.1.1-52

gcc-c++-4.1.1-52

glibc-2.5-12

glibc-common-2.5-12

glibc-devel-2.5-12

glibc-headers-2.5-12

libaio-0.3.106

libaio-devel-0.3.106

libgcc-4.1.1-52

libstdc++-4.1.1

libstdc++-devel-4.1.1-52.e15

libXp-1.0.0-8

make-3.81-1.1

openmotif-2.2.3

sysstat-7.0.0

unixODBC-2.2.11

unixODBC-devel-2.2.11

 

关于rpm包的安装、依赖性问题,建议使用yum来搞定,将Oracle Enterprise Linux安装文件制作成本地的源,让yum来自己解决依赖性问题,会省去很多的事情。

 

2.3.YUM配置

配置本地的yum源需要注意两个地方即可,一个是/etc/yum.repos.d/xxx.repo配置文件,另外一个则是将ISO光盘介质中的文件,都拷贝到本地的一个目录中,例如:/root/source,其中Server目录中含有大量所需的rpm包。

 

[root@node1 yum.repos.d]# pwd

/etc/yum.repos.d

[root@node1 yum.repos.d]# more Server.repo

[Server]

enabled = 1

name = server

baseurl = file:///root/source/Server

gpgcheck = 1

gpgkey = file:///root/source/RPM-GPG-KEY-oracle

 

2.4.虚拟机中网卡的设置

为了能够与外部环境隔离,在没有插网线、或者无线网络环境下仍然能够使用,将每个节点两块网卡均设置成为"Host-Only",如下图:

 

2.5.节点IP设置

每个节点有两块网卡,eth0eth1,其中eth0作为public的网卡,eth1作为两个节点之间通讯、内部连接的private地址。而在eth0上,将在后续配置vipca时自动设置上浮动IP(vip),切勿手工写死vipeth0上(eth0:1的方式设置2ip),否则后续将无法浮动,安装会遇到问题,遭遇到例如:"the virtual hostname(s),vip..you have specified appears to be already assigned to another system on the network.please ensure that the virtual hostname(s) that you use for each of the nodes in the cluster are not in use "的报错。

hosts文件的内容:

#public

192.168.56.105 node1.localdomain node1

192.168.56.106 node2.localdomain node2

#virtual

192.168.56.115 node1-vip.localdomain node1-vip

192.168.56.116 node2-vip.localdomain node2-vip

#private

172.10.0.1 node1-priv.localdomain node1-priv

172.10.0.2 node2-priv.localdomain node2-priv

 

3.共享存储的准备

进入virtualbox的安装目录中,使用VBoxManage工具来创建共享存储所需的disk

3.1.节点1上的磁盘准备

两个ocr,分别给500M的大小。三个voting disk分别给500M大小。

ocr01.vdi  500M

ocr02.vdi  500M

VBoxManage createhd –filename E:vmsharediskocr01.vdi –size 500 –format VDI –variant Fixed

VBoxManage createhd –filename E:vmsharediskocr02.vdi –size 500 –format VDI –variant Fixed

[例子:]

D:softwarevirtualbox>VBoxManage createhd –filename E:vmsharediskocr01.vdi –size 500 –format VDI –variant Fixed

0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%

Disk image created. UUID: b44d4885-31d7-4b53-b9a2-17ec36531c51

voting disk准备

VBoxManage createhd –filename E:vmsharediskvote01.vdi –size 500 –format VDI –variant Fixed

VBoxManage createhd –filename E:vmsharediskvote02.vdi –size 500 –format VDI –variant Fixed

VBoxManage createhd –filename E:vmsharediskvote03.vdi –size 500 –format VDI –variant Fixed

 

control file

VBoxManage createhd –filename E:vmsharediskcontrol01.vdi –size 110 –format VDI –variant Fixed

VBoxManage createhd –filename E:vmsharediskcontrol02.vdi –size 110 –format VDI –variant Fixed

VBoxManage createhd –filename E:vmsharediskcontrol03.vdi –size 110 –format VDI –variant Fixed

 

VBoxManage createhd –filename E:vmsharediskspfile.vdi –size 10 –format VDI –variant Fixed

VBoxManage createhd –filename E:vmsharediskpwdfile.vdi –size 10 –format VDI –variant Fixed

 

按照上述的规律,将后续所需的redosystemsysauxtempundotbsusers所需的数据文件准备好。需要注意undotbsredo的分配,两个节点各自拥有一个undotbs,每个节点缺省需要两组redo,以thread#来区分所属节点(thread1thread2)。

3.2.磁盘的attach

由于是使用虚拟机模拟共享存储,在节点1VBoxManage创建完毕后,还需要将创建的一个个disk"挂接"attach)到节点1上,详细如下:

//ocr

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 1 –device 0 –type hdd –medium E:vmsharediskocr01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 2 –device 0 –type hdd –medium E:vmsharediskocr02.vdi –mtype shareable

//voting disk

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 3 –device 0 –type hdd –medium E:vmsharediskvote01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 4 –device 0 –type hdd –medium E:vmsharediskvote02.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 5 –device 0 –type hdd –medium E:vmsharediskvote03.vdi –mtype shareable

//control file

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 6 –device 0 –type hdd –medium E:vmsharediskcontrol01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 7 –device 0 –type hdd –medium E:vmsharediskcontrol02.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 8 –device 0 –type hdd –medium E:vmsharediskcontrol03.vdi –mtype shareable

//spfile and pwdfile

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 9 –device 0 –type hdd –medium E:vmsharediskspfile.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 10 –device 0 –type hdd –medium E:vmsharediskpwdfile.vdi –mtype shareable

//redo log group

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 11 –device 0 –type hdd –medium E:vmsharediskredo1_01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 12 –device 0 –type hdd –medium E:vmsharediskredo1_02.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 13 –device 0 –type hdd –medium E:vmsharediskredo1_03.vdi –mtype shareable

…..

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 19 –device 0 –type hdd –medium E:vmsharediskredo3_03.vdi –mtype shareable

//system,sysaux,undotbs

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 20 –device 0 –type hdd –medium E:vmsharedisksystem01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 21 –device 0 –type hdd –medium E:vmsharedisksysaux01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 22 –device 0 –type hdd –medium E:vmsharediskundotbs01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 23 –device 0 –type hdd –medium E:vmsharediskundotbs02.vdi –mtype shareable

//temp,users

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 24 –device 0 –type hdd –medium E:vmsharedisktemp01.vdi –mtype shareable

VBoxManage storageattach oel5u5_1 –storagectl "SATA Controller" –port 25 –device 0 –type hdd –medium E:vmsharediskuser01.vdi –mtype shareable

 

3.3.磁盘设置shareable

将已经attach到节点1上的各个disk设置成为shareable的。

//ocr

VBoxManage modifyhd E:vmsharediskocr01.vdi –type shareable

VBoxManage modifyhd E:vmsharediskocr02.vdi –type shareable

//voting disk

VBoxManage modifyhd E:vmsharediskvote01.vdi –type shareable

VBoxManage modifyhd E:vmsharediskvote02.vdi –type shareable

VBoxManage modifyhd E:vmsharediskvote03.vdi –type shareable

//control file

VBoxManage modifyhd E:vmsharediskcontrol01.vdi –type shareable

VBoxManage modifyhd E:vmsharediskcontrol02.vdi –type shareable

VBoxManage modifyhd E:vmsharediskcontrol03.vdi –type shareable

//spfile and pwdfile

VBoxManage modifyhd E:vmsharediskspfile.vdi –type shareable

VBoxManage modifyhd E:vmsharediskpwdfile.vdi –type shareable

//redo log

VBoxManage modifyhd E:vmsharediskredo1_01.vdi –type shareable

VBoxManage modifyhd E:vmsharediskredo1_02.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo1_01.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo1_02.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo1_03.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo2_01.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo2_02.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo2_03.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo3_01.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo3_02.vdi –type shareable

D:softwarevirtualbox>VBoxManage modifyhd E:vmsharediskredo3_03.vdi –type shareable

//system,sysaux,undotbs,temp

VBoxManage modifyhd E:vmsharedisksystem01.vdi –type shareable

VBoxManage modifyhd E:vmsharedisksysaux01.vdi –type shareable

VBoxManage modifyhd E:vmsharediskundotbs01.vdi –type shareable

VBoxManage modifyhd E:vmsharediskundotbs02.vdi –type shareable

 

如下是节点1disk的配置情况

3.4.节点2上的磁盘设置

由于磁盘已经创建出来,并且attach到节点1上,在节点2需要做的就是重复节点1上,attachmodify shareable的操作,这里不再赘述。

 

4.raw device准备

4.1.OEL 5下面raw device的绑定

raw deviceOEL 4OEL 5上的处理是不同的,OEL 5是通过udev来绑定的与之前OEL 4上不同,参考如下:

编辑/etc/udev/rule.d/60-raw.rules文件,添加如下的内容。

[root@node1 rules.d]# more 60-raw.rules

# Enter raw device bindings here.

#

# An example would be:

#   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"

# to bind /dev/raw/raw1 to /dev/sda, or

#ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"

# to bind /dev/raw/raw2 to the device with major 8, minor 1.

#ocr

ACTION=="add",KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add",KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"

#votingdisk

ACTION=="add",KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add",KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add",KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"

#controlfile

ACTION=="add",KERNEL=="sdg1", RUN+="/bin/raw /dev/raw/raw6 %N"

ACTION=="add",KERNEL=="sdh1", RUN+="/bin/raw /dev/raw/raw7 %N"

ACTION=="add",KERNEL=="sdi1", RUN+="/bin/raw /dev/raw/raw8 %N"

#spfile and pwdfile

ACTION=="add",KERNEL=="sdj1", RUN+="/bin/raw /dev/raw/raw9 %N"

ACTION=="add",KERNEL=="sdk1", RUN+="/bin/raw /dev/raw/raw10 %N"

#redo

ACTION=="add",KERNEL=="sdl1", RUN+="/bin/raw /dev/raw/raw11 %N"

ACTION=="add",KERNEL=="sdm1", RUN+="/bin/raw /dev/raw/raw12 %N"

ACTION=="add",KERNEL=="sdn1", RUN+="/bin/raw /dev/raw/raw13 %N"

#system,sysaux,undotbs

ACTION=="add",KERNEL=="sdo1", RUN+="/bin/raw /dev/raw/raw14 %N"

ACTION=="add",KERNEL=="sdp1", RUN+="/bin/raw /dev/raw/raw15 %N"

ACTION=="add",KERNEL=="sdq1", RUN+="/bin/raw /dev/raw/raw16 %N"

ACTION=="add",KERNEL=="sdr1", RUN+="/bin/raw /dev/raw/raw17 %N"

#temp,user

ACTION=="add",KERNEL=="sds1", RUN+="/bin/raw /dev/raw/raw18 %N"

ACTION=="add",KERNEL=="sdt1", RUN+="/bin/raw /dev/raw/raw19 %N"

 

root下面使用start_udev来重启udev服务,然后通过raw -qa来查询raw device是否绑定上了:

[root@node1 ~]# raw -qa

/dev/raw/raw1:  bound to major 8, minor 17

/dev/raw/raw2:  bound to major 8, minor 33

/dev/raw/raw3:  bound to major 8, minor 49

/dev/raw/raw4:  bound to major 8, minor 65

/dev/raw/raw5:  bound to major 8, minor 81

/dev/raw/raw6:  bound to major 8, minor 97

/dev/raw/raw7:  bound to major 8, minor 113

/dev/raw/raw8:  bound to major 8, minor 129

/dev/raw/raw9:  bound to major 8, minor 145

/dev/raw/raw10: bound to major 8, minor 161

/dev/raw/raw11: bound to major 8, minor 177

/dev/raw/raw12: bound to major 8, minor 193

/dev/raw/raw13: bound to major 8, minor 209

/dev/raw/raw14: bound to major 8, minor 225

/dev/raw/raw15: bound to major 8, minor 241

/dev/raw/raw16: bound to major 65, minor 1

/dev/raw/raw17: bound to major 65, minor 17

/dev/raw/raw18: bound to major 65, minor 33

/dev/raw/raw19: bound to major 65, minor 49

 

4.2.raw device权限、宿主设置

raw device是要给oracle使用的,其中ocrvoting disk应该是root:oisnatll的,其余都设置为oracle:oinstallchmod设置为660。还是在60-raw.rules中添加如下信息:

#config for the owner and privs

ACTION=="add", KERNEL=="raw1", OWNER="root", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw2", OWNER="root", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw3", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw4", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw5", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw6", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw7", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw8", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw9", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw10", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw11", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw12", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw13", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw14", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw15", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw16", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw17", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw18", OWNER="oracle", GROUP="oinstall", MODE="660"

ACTION=="add", KERNEL=="raw19", OWNER="oracle", GROUP="oinstall", MODE="660"

 

4.3.关于rc.local、关于raw[1-19]

关于rc.local。在很多教程中有不少提及如果重启OS,配置在60-raw.rules文件中的配置信息会丢失掉,需要在rc.local中添加OS启动时执行的脚本。我在实施的时候没有遇到此问题。权限、宿主、raw device的信息都不会因为OSreboot而丢失。

关于raw[1-19]通配符。如果连续添加19条记录确实是一件比较恼人的事情,网上不少教程提及了raw[1-19]这样的通配符,但我没有配置成功,时钟无法"偷懒"

备注:raw device的配置需要在两个节点都进行,第一个节点配置完毕后,可以讲配置文件60-raw.rules拷贝至第二节点。

 

5.oracle软件相关准备

5.1.用户、宿主、目录

下面是准备安装oracle软件的用户、宿主、目录等,如果你打了oracle-validated包,oracle用户、宿主(oinstall,dba)都已经创建好了,也准备完毕了。

准备目录,授权等。(在两个节点分别处理)

[oracle@node1 ~]$ id oracle

uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)

//CRS_HOME

mkdir -p /opt/app/oracle/product/10.2.0/crs

//ORACLE_HOME

mkdir -p /opt/app/oracle/product/10.2.0/db_1

mkdir -p /opt/app/oracle/oraInventory

//权限、宿主

chown -R oracle:oinstall /opt/app/oracle/product/10.2.0/db_1

chown -R oracle:oinstall /opt/app/oracle/product/10.2.0/crs

chown -R oracle:oinstall /opt/app/oracle/oraInventory

chmod -R 775 /opt/app/oracle/product/10.2.0/db_1

chmod -R 775 /opt/app/oracle/product/10.2.0/crs

chmod -R 775 /opt/app/oracle/oraInventory

 

5.2.配置oracle用户的profile

主要将$ORACLE_HOME,$ORACLE_CRS_HOME等环境变量添加进去。

# User specific environment and startup programs

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/opt/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

ORACLE_SID=node1; export ORACLE_SID

ORACLE_TERM=xterm; export ORACLE_TERM

ORACLE_CRS_HOME=/opt/app/oracle/product/10.2.0/crs;export ORACLE_CRS_HOME

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_CRS_HOME/bin

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

export PATH

if [ $USER = “oracle” ]; then

if [ $SHELL = “/bin/ksh” ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi

别忘记source .bash_profile,让环境变量生效,注意相应的目录。

5.3.limits.conf

配置/etc/security/limits.conf文件。如果安装了rpmoracle-validated,你会发现里面的内容已经帮你添加好了。

more /etc/security/limits.conf

# End of file

oracle   soft   nofile    131072

oracle   hard   nofile    131072

oracle   soft   nproc    131072

oracle   hard   nproc    131072

oracle   soft   core    unlimited

oracle   hard   core    unlimited

oracle   soft   memlock    50000000

oracle   hard   memlock    50000000

 

5.4./etc/pam.d/login

login文件中添加一条记录

session    required     pam_limits.so

5.5./etc/sysctl.conf

检查sysctl.conf文件,maskumask相应的行。安装了oracle-validated包之后,大量的参数更改工作已经为你准备好了,只需要注释、开启相应的行即可。

示例片段:

# Controls the maximum number of shared memory segments, in pages

kernel.shmall = 1073741824

# For 11g, recommended value for file-max is 6815744

#fs.file-max = 6815744

# For 10g, uncomment 'fs.file-max 327679', comment other entries for this parameter and re-run sysctl -p

fs.file-max = 327679

 

5.6.配置hangcheck-timer

在两个节点的/etc/modprobe.conf中添加如下条目

options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

然后分别load,使之生效modprobe -v hangcheck-timer

需要将modprobe hangcheck-timer命令加入rc.local中,否则os重启后配置会失效。

5.7.配置ssh等价

oracle rac的安装一般在一个节点发起,是通过ssh等价将所需的内容拷贝到两外节点的。

su – oracle

mkdir ~/.ssh

chmod 700 ~/.ssh

/usr/bin/ssh-keygen -t rsa # Accept the default settings.

exit

 

The RSA public key is written to the ~/.ssh/id_rsa.pub file and the private key to the ~/.ssh/id_rsa file

[oracle@node1 .ssh]$ pwd

/home/oracle/.ssh

[oracle@node1 .ssh]$ ls

id_rsa  id_rsa.pub

//同样在node2节点也做同样操作,生成id_rsaid_rsa.pub文件。

node1上生成authorized_keys,并把这个authorized_keys拷贝到node2.ssh目录中。

su – oracle

cd ~/.ssh

cat id_rsa.pub >> authorized_keys

scp authorized_keys node2:/home/oracle/.ssh/

exit

登陆到node2节点,进行配置。

su – oracle

cd ~/.ssh

//node2生成的密钥id_rsa.pub信息追加到authorized_keys中,

然后将这个拥有两边rsa密钥信息的文件,传到node1相应目录中覆盖node1中的authorized_keys

cat id_rsa.pub >> authorized_keys

scp authorized_keys rac1:/home/oracle/.ssh/

exit

//至此等价性基本配置完毕了,测试一下ssh等价性。

su – oracle

ssh node1 date

ssh node2 date

ssh node1.localdomain date

ssh node2.localdomain date

exec /usr/bin/ssh-agent $SHELL

/usr/bin/ssh-add

 

5.8.加压安装包介质

解压cpio.gz压缩包

[oracle@node1 clusterware]$ ls

10201_clusterware_linux_x86_64.cpio.gz

[oracle@node1 clusterware]$ gunzip 10201_clusterware_linux_x86_64.cpio.gz

[oracle@node1 clusterware]$ ls

10201_clusterware_linux_x86_64.cpio

[oracle@node1 clusterware]$ cpio -idmv < 10201_clusterware_linux_x86_64.cpio

 

5.9.dbca_raw_config文件

.bash_profile中设置环境变量 DBCA_RAW_CONFIG=/home/oracle/dbca_raw_config。这个环境变量仅仅是在安装的时候使用的,后续rac的管理,不需要这个环境变量。

dbca_raw_config文件中的内容如下:

 

[oracle@node1 ~]$ more dbca_raw_config

control1=/dev/raw/raw6

control2=/dev/raw/raw7

control3=/dev/raw/raw8

spfile=/dev/raw/raw9

pwdfile=/dev/raw/raw10

redo1_1=/dev/raw/raw11

redo2_1=/dev/raw/raw12

redo3_1=/dev/raw/raw13

system=/dev/raw/raw14

sysaux=/dev/raw/raw15

undotbs1=/dev/raw/raw16

undotbs2=/dev/raw/raw17

temp=/dev/raw/raw18

users=/dev/raw/raw19

备注:redo的数量请按照实际情况设置,示例是不足够的。缺省情况:两个节点,每个节点(thread)需要2组的redo,少于2组,启动到mount状态时会报错的。请确保最少每个节点有2redo

例如:ORA-01618: redo thread 2 is not enabled – cannot mount

5.10.安装前的环境检查

CRS提供脚本来做安装前的prerequisites检查,示例如下:

[oracle@node1 cluvfy]$ pwd

/home/oracle/clusterware/clusterware/cluvfy

[oracle@node1 cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose

//这个脚本会自动的检查两个节点是否满足crs的安装条件

[oracle@node1 cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose

Performing pre-checks for cluster services setup

Checking node reachability…

Check: Node reachability from node "node1"

Destination Node                      Reachable?

————————————  ————————

node1                                 yes

node2                                 yes

Result: Node reachability check passed from node "node1".

 

 

Checking user equivalence…

 

Check: User equivalence for user "oracle"

Node Name                             Comment

————————————  ————————

node2                                 passed

node1                                 passed

Result: User equivalence check passed for user "oracle".

 

Checking administrative privileges…

 

Check: Existence of user "oracle"

Node Name     User Exists               Comment

————  ————————  ————————

node2         yes                       passed

node1         yes                       passed

Result: User existence check passed for "oracle".

 

Check: Existence of group "oinstall"

Node Name     Status                    Group ID

————  ————————  ————————

node2         exists                    54321

node1         exists                    54321

Result: Group existence check passed for "oinstall".

 

Check: Membership of user "oracle" in group "oinstall" [as Primary]

Node Name         User Exists   Group Exists  User in Group  Primary       Comment

—————-  ————  ————  ————  ————  ————

node2             yes           yes           yes           yes           passed

node1             yes           yes           yes           yes           passed

Result: Membership check for user "oracle" in group "oinstall" [as Primary] passed.

 

Administrative privileges check passed.

 

Checking node connectivity…

 

 

Interface information for node "node2"

Interface Name                  IP Address                      Subnet

——————————  ——————————  —————-

eth0                            192.168.56.106                  192.168.56.0

eth1                            172.10.0.2                      172.10.0.0

 

 

Interface information for node "node1"

Interface Name                  IP Address                      Subnet

——————————  ——————————  —————-

eth0                            192.168.56.105                  192.168.56.0

eth1                            172.10.0.1                      172.10.0.0

 

Check: Node connectivity of subnet "192.168.56.0"

Source                          Destination                     Connected?

——————————  ——————————  —————-

node2:eth0                      node1:eth0                      yes

Result: Node connectivity check passed for subnet "192.168.56.0" with node(s) node2,node1.

 

Check: Node connectivity of subnet "172.10.0.0"

Source                          Destination                     Connected?

——————————  ——————————  —————-

node2:eth1                      node1:eth1                      yes

Result: Node connectivity check passed for subnet "172.10.0.0" with node(s) node2,node1.

 

Suitable interfaces for VIP on subnet "172.10.0.0":

node2 eth1:172.10.0.2

node1 eth1:172.10.0.1

 

Suitable interfaces for the private interconnect on subnet "192.168.56.0":

node2 eth0:192.168.56.106

node1 eth0:192.168.56.105

 

Result: Node connectivity check passed.

 

 

Checking system requirements for 'crs'…

No checks registered for this product.

Pre-check for cluster services setup was unsuccessful on all the nodes.

上面的unsuccessful说明还有一些check条件不满足,但我查了一圈也没查个所以然,还是继续吧。

6.CRS的安装

CRS的安装从./runInstaller开始,记得加上-ignoreSysPrereqs,因为缺省oracle官方的文档建议oracle10g安装在RHEL 4这个版本上,在安装之前会检查缺省的OS版本信息,所用加上-ignoreSysPrereqs来规避。接下来将是大约27png的截图,仔细研究这些截图上的信息也是一件有意思的事情,例如:在./runInstaller之后,会提示"Y/N",大约是所要root权限,图片没截下来,有兴趣的可以仔细看看。

[welcome]

 

 

[specify the inventory dir]

[specify the CRS_HOME]

[prerequisite checks]

[specify the cluster config]

[手工加上另外节点的信息,我理解第二个节点的信息应当自动出现,而不是手工增加,但依旧没查出个所以然]

[添加后的状态]

 

 

[如下这个报错就是因为手工将vip写死在了eth0网卡上–eth0:1,删除这个eth0:1网卡设置后顺利通过]

 

 

[两块网卡的职责,各自分别负责publicprivate]

 

 

[specify the OCR information]

[specify the voting disk]

[install summary]

[processing]

[shit.遭遇报错了,报错的大致原因是在node2上没有创建oraInventory目录的权限,归根到底是忘记在node2上授权了,按照报错的指引,授权后,重新跑一下脚本即可]

$ORACLE_BASE/crs/oui/bin/runInstaller -attachHome -noClusterEnabled ORACLE_HOME=/opt/app/oracle/product/10.2.0/crs ORACLE_HOME_NAME=OraCrs10g_home CLUSTER_NODES=node1,node2 CRS=true "INVENTORY_LOCATION=/opt/app/oracle/oraInventory" LOCAL_NODE=node2

[最后需要执行经典的root.sh脚本]

[root.sh执行过程中的一些log信息]

[node2上执行root.sh时报错了]

 

"error while loading shared libraries: libpthread.so.0"似乎是个安装时会遇到的bug整个的安装进度也被卡在了这里,几次retry都无法通过,如下是解决方法:

$ORACLE_CRS_HOME/bin目录下的vipca,srvctl文件中的LD_ASSUME_KERNEL=2.4.19export LD_ASSUME_KERNEL都注释掉,unset LD_ASSUME_KERNEL

然后重新retry一下,详见:bug 3937317

//一些辅助性质的诊断:

在任意节点使用oifcfg来配置publicvip网络,记得使用root用户执行

[root@node2 bin]# ./oifcfg setif -global eth0/192.168.56.0:public

PRIF-50: duplicate interface is given in the input

//public的配置看来已经存在了

[root@node2 bin]# ./oifcfg setif -global eth1/172.10.0.0:cluster_interconnect

PRIF-50: duplicate interface is given in the input

//private的配置也有了,将interface的信息都list出来看看

[root@node2 bin]# ./oifcfg getif

eth0  192.168.56.0  global  public

eth1  172.10.0.0  global  cluster_interconnect

[按照指引使用root用户执行vipca来配置]

备注:CRS的安装暂告一个段落。

7.database软件的安装

10201database软件的安装相对简单多了,无需额外配置,直接./runInstaller开始吧

 

8.patch crs

CRS打补丁,apply10205的补丁集。10205的补丁集介质包含了CRSdb的补丁,都在这一份zip介质中。

详见如下截图:

[./runInstaller之后,选择相应的CRS_HOME]

[按照提示执行相应的脚本]

 

 

[node2上先把CRS停掉,再按照提示执行相应的脚本,注意看提示]

 

 

9.patch database

CRS补丁打完后,记得给database的补丁也打上,过程与CRS patch的过程类似

详细见截图:

10.netca创建listener

dbca创建instance之前,先把listener给创建了吧,免得后面如果创建EM时会报错。

详见截图:

 

 

11.dbca创建instance

过程不再赘述了,看截图吧。

[popup的信息是由于我之前redo的规划不合理,没有分配给thread2 redo,所以报错]

[database service这里我没有配置,保留了缺省的状态,dbca配置database serviceTAF策略是无法自动写入数据库的数据字典中的,需要借助dbms_service的包来手工处理,所以这里没有配置TAF相关的service,只是留了一个缺省的摸样]

[下图有个机会,根据自己的实际情况调整redo的设置]

 

oracle10gRAC_OEL5u5_rawdevice_virtualbox

 

–EOF–

install “oracle-validated”

在开始安装oracle之前,最好在oel或者其他redhat系列的linux上将oracle-validated这个rpm包给打上,省去后续很多更改、配置参数的事情,当然还有创建oracle用户以及其宿主。

[root@node1 ~]# rpm -ivh oracle-validated-1.1.0-7.el5.x86_64.rpm
error: Failed dependencies:
/usr/lib/libaio.so is needed by oracle-validated-1.1.0-7.el5.x86_64
/usr/lib/libodbc.so.1 is needed by oracle-validated-1.1.0-7.el5.x86_64
/usr/lib/libodbccr.so is needed by oracle-validated-1.1.0-7.el5.x86_64
/usr/lib64/libaio.so is needed by oracle-validated-1.1.0-7.el5.x86_64
/usr/lib64/libodbccr.so is needed by oracle-validated-1.1.0-7.el5.x86_64
compat-gcc-34 is needed by oracle-validated-1.1.0-7.el5.x86_64
compat-gcc-34-c++ is needed by oracle-validated-1.1.0-7.el5.x86_64
irqbalance >= 2:0.55-16 is needed by oracle-validated-1.1.0-7.el5.x86_64
kernel-uek >= 2.6.32 is needed by oracle-validated-1.1.0-7.el5.x86_64
kernel-uek-headers is needed by oracle-validated-1.1.0-7.el5.x86_64
libXp.so.6 is needed by oracle-validated-1.1.0-7.el5.x86_64
libaio-devel is needed by oracle-validated-1.1.0-7.el5.x86_64
libodbc.so.1()(64bit) is needed by oracle-validated-1.1.0-7.el5.x86_64
libstdc++.so.5 is needed by oracle-validated-1.1.0-7.el5.x86_64
libstdc++.so.5()(64bit) is needed by oracle-validated-1.1.0-7.el5.x86_64
oraclelinux-release is needed by oracle-validated-1.1.0-7.el5.x86_64
unixODBC-devel is needed by oracle-validated-1.1.0-7.el5.x86_64
util-linux >= 2.13-0.52.0.1.el5_4.1 is needed by oracle-validated-1.1.0-7.el5.x86_64

————————————————————————————-

草…竟然差这么多的依赖包。在linux上,依赖关系的包是很头疼的关系,不过还好,幸亏有个东西叫"yum"。

如果你有OEL的iso文件,那会简单很多,配置一个本地的源即可。

两个地方注意:

1.将iso中的东西全部拷贝到OS上的一个目录下,我这里叫/root/source

[root@node2 ~]# cd source/
[root@node2 source]# ls
blafdoc.css EULA GPL README-en RELEASE-NOTES-en.html Server    VT
Cluster eula.en_US images README-en.html RPM-GPG-KEY supportinfo
ClusterStorage eula.py isolinux RELEASE-NOTES-en RPM-GPG-KEY-oracle TRANS.TBL

2.配置源

按照如下大概配置,就可以使用了。

[root@node2 source]# more /etc/yum.repos.d/Server.repo
[Server]
enabled = 1
name = server
baseurl = file:///root/source/Server
gpgcheck = 1
gpgkey = file:///root/source/RPM-GPG-KEY-oracle

————————————————————————-

gpgkey部分,如果使用的是rhel的iso,需要依据相应的RPM-GPG-KEY-REDHAT-release来做出更改。

 

下面开始yum install

[root@node1 ~]# yum install oracle-validated
Loaded plugins: security
Server | 1.1 kB 00:00
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package oracle-validated.x86_64 0:1.0.0-22.el5 set to be updated
Server/filelists | 2.9 MB 00:00
–> Processing Dependency: libaio-devel for package: oracle-validated
–> Processing Dependency: /usr/lib/libaio.so for package: oracle-validated
–> Processing Dependency: unixODBC-devel for package: oracle-validated
–> Processing Dependency: compat-gcc-34-c++ for package: oracle-validated
–> Processing Dependency: libstdc++.so.5 for package: oracle-validated
–> Processing Dependency: /usr/lib/libodbc.so.1 for package: oracle-validated
–> Processing Dependency: compat-gcc-34 for package: oracle-validated
–> Processing Dependency: /usr/lib/libodbccr.so for package: oracle-validated
–> Processing Dependency: libXp.so.6 for package: oracle-validated
–> Processing Dependency: libstdc++.so.5()(64bit) for package: oracle-validated
–> Processing Dependency: libodbc.so.1()(64bit) for package: oracle-validated
–> Running transaction check
—> Package compat-gcc-34.x86_64 0:3.4.6-4 set to be updated
—> Package compat-gcc-34-c++.x86_64 0:3.4.6-4 set to be updated
—> Package compat-libstdc++-33.i386 0:3.2.3-61 set to be updated
—> Package compat-libstdc++-33.x86_64 0:3.2.3-61 set to be updated
—> Package libXp.i386 0:1.0.0-8.1.el5 set to be updated
—> Package libaio-devel.i386 0:0.3.106-5 set to be updated
—> Package libaio-devel.x86_64 0:0.3.106-5 set to be updated
—> Package unixODBC.i386 0:2.2.11-7.1 set to be updated
—> Package unixODBC.x86_64 0:2.2.11-7.1 set to be updated
—> Package unixODBC-devel.i386 0:2.2.11-7.1 set to be updated
—> Package unixODBC-devel.x86_64 0:2.2.11-7.1 set to be updated
–> Finished Dependency Resolution

Dependencies Resolved

==================================================================================
Package Arch Version Repository Size
==================================================================================
Installing:
oracle-validated x86_64 1.0.0-22.el5 Server 16 k
Installing for dependencies:
compat-gcc-34 x86_64 3.4.6-4 Server 4.4 M
compat-gcc-34-c++ x86_64 3.4.6-4 Server 13 M
compat-libstdc++-33 i386 3.2.3-61 Server 232 k
compat-libstdc++-33 x86_64 3.2.3-61 Server 227 k
libXp i386 1.0.0-8.1.el5 Server 22 k
libaio-devel i386 0.3.106-5 Server 12 k
libaio-devel x86_64 0.3.106-5 Server 11 k
unixODBC i386 2.2.11-7.1 Server 830 k
unixODBC x86_64 2.2.11-7.1 Server 835 k
unixODBC-devel i386 2.2.11-7.1 Server 743 k
unixODBC-devel x86_64 2.2.11-7.1 Server 799 k

Transaction Summary
==================================================================================
Install 12 Package(s)
Upgrade 0 Package(s)

Total download size: 21 M
Is this ok [y/N]: y
Downloading Packages:
————————————————————————————————————————————————————-
Total 50 MB/s | 21 MB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : compat-gcc-34 1/12
Installing : unixODBC 2/12
Installing : unixODBC 3/12
Installing : compat-libstdc++-33 4/12
Installing : unixODBC-devel 5/12
Installing : unixODBC-devel 6/12
Installing : libaio-devel 7/12
Installing : libaio-devel 8/12
Installing : libXp 9/12
Installing : compat-libstdc++-33 10/12
Installing : compat-gcc-34-c++ 11/12
Installing : oracle-validated 12/12

Installed:
oracle-validated.x86_64 0:1.0.0-22.el5

Dependency Installed:
compat-gcc-34.x86_64 0:3.4.6-4 compat-gcc-34-c++.x86_64 0:3.4.6-4 compat-libstdc++-33.i386 0:3.2.3-61 compat-libstdc++-33.x86_64 0:3.2.3-61
libXp.i386 0:1.0.0-8.1.el5 libaio-devel.i386 0:0.3.106-5 libaio-devel.x86_64 0:0.3.106-5 unixODBC.i386 0:2.2.11-7.1
unixODBC.x86_64 0:2.2.11-7.1 unixODBC-devel.i386 0:2.2.11-7.1 unixODBC-devel.x86_64 0:2.2.11-7.1

Complete!
[root@node1 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)

—————————————————————————————-

可以预见到:还是缺少不少rpm包的,使用yum能够省去很多事情。

–EOF–

remove the service in oracle rac 10205

删除service

NAME=ora.rac.testservice.cs
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac1

可以看到有一个service(testservice)注册到了crs中,但需要注意的话,用户尽管使用了dbca创建service,但是TAF的策略还是需要借助dbms_service包来搞定,
而你所看见的service很可能是个半残品,service的配置不仅要体现在CRS中(OCR),而且还要体现在show parameter的参数文件中、dba_services的数据字典中。

下面来尝试删除这个service…..

查看这个service的当前状态:
[oracle@rac2 ~]$ srvctl config service -d rac -s testservice -a
testservice PREF: rac1 AVAIL: rac2 TAF: basic

“PREF”是rac1,avail是rac2,TAF策略是basic,而type之类的就没看到

先把启动的service关闭掉

[oracle@rac2 ~]$ srvctl stop service -d rac -s testservice
使用crs_stat查看一下注册在OCR中的状态,有两条记录offline了。


[oracle@rac2 ~]$ crs_stat -t
Name Type Target State Host
————————————————————
ora.rac.db application ONLINE ONLINE rac1
ora….c1.inst application ONLINE ONLINE rac1
ora….c2.inst application ONLINE ONLINE rac2
ora….vice.cs application OFFLINE OFFLINE
ora….ac1.srv application OFFLINE OFFLINE
ora….C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora….C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2

尽管testservice已经被stop掉了,我们查看一下service的状态。

[oracle@rac2 ~]$ srvctl config service -d rac -s testservice -a
testservice PREF: rac1 AVAIL: rac2 TAF: basic
testservice的配置信息还是记录在配置文件中的,只是被暂时stop掉了。

将它disable,看看有何结果?

[oracle@rac2 ~]$ srvctl disable service -d rac -s testservice
[oracle@rac2 ~]$ srvctl config service -d rac -s testservice -a
testservice PREF: rac1 AVAIL: rac2 TAF: basic
Service testservice is disabled.
被disable之后,service的状态会被显示的告知:”is disable”

彻底remove这个service的配置
[oracle@rac2 ~]$ srvctl remove service -d rac -s testservice
testservice PREF: rac1 AVAIL: rac2
Service testservice is disabled.
Remove service testservice from the database rac? (y/[n]) y
会提示你是否要remove掉这个service?

testservice的配置信息已经没有了,再次想查看其信息时,会反馈”找不到”。
[oracle@rac2 ~]$ srvctl config service -d rac -s testservice -a
PRKO-2017 : Service testservice does not exist for database rac.

crs中少了两条记录(之前被offline的)
[oracle@rac2 ~]$ crs_stat -t
Name Type Target State Host
————————————————————
ora.rac.db application ONLINE ONLINE rac1
ora….c1.inst application ONLINE ONLINE rac1
ora….c2.inst application ONLINE ONLINE rac2
ora….C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora….C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2

OCR中的相关service记录已经清除干净了,但数据字典中还会残留一些信息,如下:
SQL> select name,enabled from dba_services;

NAME ENA
—————————————- —
SYS$BACKGROUND NO
SYS$USERS NO
seeddataXDB NO
seeddata NO
racXDB NO
rac.world NO
testservice NO

testservice的信息还驻留在dba_services视图中,轮到dbms_service包出场了。
SQL> begin
2 dbms_service.delete_service(service_name=>’testservice’);
3 end;
4 /
begin
*
ERROR at line 1:
ORA-44303: service name exists
ORA-06512: at “SYS.DBMS_SERVICE”, line 442
ORA-06512: at “SYS.DBMS_SERVICE”, line 342
ORA-06512: at line 2

遇到报错,但查询一下dba_services,testservice的记录消失了..(奇怪了),再次执行dbms_service.delete_service后,会报错类似”service name not exist”的错误。

SQL> select name,enabled from dba_services;

NAME ENA
—————————————————————- —
SYS$BACKGROUND NO
SYS$USERS NO
seeddataXDB NO
seeddata NO
racXDB NO
rac.world NO

–EOF–

oracle 11.2.0.3 install issue

在安装oracle 11gR2之前,我先大致介绍一下10gR2系列的安装思路。
oracle10gR2:
一般无论是rac还是单实例,都是先安装10.2.0.1这个基础安装,然后下载相应的patchset,在此基础上打补丁,升级至相应的版本,例如:oracle 10.2.0.5。当然在oracle的官方网站上,也能下载到10204 win平台的完整安装包版本。
oracle11gR2:
而到了oracle11g的安装与10g的思路不一样了,如果是初始安装,想安装到11.2.0.3,直接下载11203 patchset(p10404530),从这个patchset直接基础安装,而不是11201–>11203,从而省去了一些时间,详细可以参考文档”E24903-01″:

E24903-01是patch set中的readme文件,开头第一句话就是:

Oracle Database patch set, release 11.2.0.3 is a full installation of the Oracle Database software. This means that you do not need to install Oracle Database 11g Release 2 (11.2.0.1) before installing Oracle Database 11g Release 2 (11.2.0.3)

上面的解释已经说得很明白了。

下面这张图,说明了11203 patch set中7个zip包,分别都是干什么使用的。

如果你仅仅是单实例安装、使用filesystem、不安装grid,那么你需要1,2两个zip包,而恰巧在windows平台上的话,建议将第二个包中的componet中的package拷贝到第一个包相应的目录里,否则你会遇到安装过程中,缺少包的问题的。例如:”未找到文件xxxxxWFMLRSVCapp.ear”,当然如果是linux、unix平台,unzip命令会将所需的1,2,3,4…zip包解压、合并到一个database目录中,省去拷贝各种compontes/xxx包的事情。

Deinstall:

顺便提一下在oracle 11g下面卸载的事情,$ORACLE_HOME/deinstall目录下面有.bat脚本,双击就能帮你搞定卸载的事情。这也是个进步,对于win平台,dba就不用操心卸载后,各种残留东西的问题了。

–EOF–

 

listener log in rac

最近应客户之邀,给简单答疑解惑了一下:listener.log,listener_nodename.log的问题,大致如下:

在rac的环境下最好使用srvctl工具来管理listener,instance的启动、停止,否则可能引起不必要的问题。单实例、多实例的管理方式还是存在差别的。举个例子:

如果在lsnrctl模式下,贸然的start,stop,想停止和启动监听,而这样不加参数的start,stop是在对缺省的listener操作。而在rac环境,最好使用srvctl start listener -n nodename。否则,启动的监听程序很可能是listener,而不是listener_<nodename>,看如下一段日志。

[oracle@rac1 ~]$ lsnrctl status listener_rac1

LSNRCTL for Linux: Version 10.2.0.5.0 – Production on 01-AUG-2012 22:01:41

Copyright (c) 1991, 2010, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.201.149)(PORT=1521)(IP=FIRST)))
STATUS of the LISTENER
————————
Alias LISTENER_RAC1
Version TNSLSNR for Linux: Version 10.2.0.5.0 – Production
Start Date 01-AUG-2012 14:48:22
Uptime 0 days 7 hr. 13 min. 19 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /opt/app/oracle/product/10.2.0/db_1/network/log/listener_rac1.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.201.149)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.201.128)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Services Summary…
Service “rac.world” has 2 instance(s).
Instance “rac1”, status READY, has 2 handler(s) for this service…
Instance “rac2”, status READY, has 1 handler(s) for this service…
Service “racXDB.world” has 2 instance(s).
Instance “rac1”, status READY, has 1 handler(s) for this service…
Instance “rac2”, status READY, has 1 handler(s) for this service…
Service “rac_XPT.world” has 2 instance(s).
Instance “rac1”, status READY, has 2 handler(s) for this service…
Instance “rac2”, status READY, has 1 handler(s) for this service…
Service “rsdb.world” has 2 instance(s).
Instance “rac1”, status READY, has 2 handler(s) for this service…
Instance “rac2”, status READY, has 1 handler(s) for this service…
The command completed successfully

加粗、标红的部分注意一下,在rac环境中,监听的日志正常应当写入listener_<nodename>.log中,而不是listener.log中,这也是为什么很多dba会在$ORACLE_HOME/network/admin/log下面发现两个与监听相关的日志信息:listener.log,listener_<nodename>.log,而且两个日志的时间标签、内容都会让dba觉得疑惑。(到底tmd用了哪个日志记录东西?)

写入listener.log的原因有可能是:在cmd下面”lsnrctl start”这样启动的监听,后没有加任何的参数,这样启动的监听是default的那个listener。

一个简单的测试案例:

在一个节点,使用”srvctl stop listener”来正常关闭监听,在cmd下面使用”lsnrctl start”不加任何参数来启动”监听”,”crs_stat -t”查询你会发现在crs上面是offline的,crs根本没有理会你这样的”单独”行动。当然,”lsnrctl start listener_<nodename>”,crs会帮你将监听的状态注册到crs中,处于online状态。

[oracle@rac1 ~]$ srvctl stop listener -n rac1

//srvctl来停止监听,然后查看状态
[oracle@rac1 ~]$ crs_stat -t
Name Type Target State Host
————————————————————
ora.rac.db application ONLINE ONLINE rac2
ora….c1.inst application ONLINE ONLINE rac1
ora….c2.inst application ONLINE ONLINE rac2
ora….rsdb.cs application ONLINE ONLINE rac1
ora….ac1.srv application ONLINE ONLINE rac1
ora….ac2.srv application ONLINE ONLINE rac2
ora….C1.lsnr application OFFLINE OFFLINE
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora….C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
[oracle@rac1 ~]$ lsnrctl start

//单实例思维管理模式,启动监听。监听日志记录到缺省的listener.log里面了,这说明你起错了。。把缺省的监听给起来了

LSNRCTL for Linux: Version 10.2.0.5.0 – Production on 01-AUG-2012 22:10:22

Copyright (c) 1991, 2010, Oracle. All rights reserved.

Starting /opt/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait…

TNSLSNR for Linux: Version 10.2.0.5.0 – Production
System parameter file is /opt/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /opt/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1.localdomain)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.5.0 – Production
Start Date 01-AUG-2012 22:10:22
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /opt/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac1.localdomain)(PORT=1521)))
The listener supports no services
The command completed successfully

//再查看crs中监听程序的状态
[oracle@rac1 ~]$ crs_stat -t
Name Type Target State Host
————————————————————
ora.rac.db application ONLINE ONLINE rac2
ora….c1.inst application ONLINE ONLINE rac1
ora….c2.inst application ONLINE ONLINE rac2
ora….rsdb.cs application ONLINE ONLINE rac1
ora….ac1.srv application ONLINE ONLINE rac1
ora….ac2.srv application ONLINE ONLINE rac2
ora….C1.lsnr application OFFLINE OFFLINE
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora….C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
—————————————————————————————————————————

所以:RAC的管理最好使用官方建议的srvctl,而不是单实例下的各种蛮干。

–EOF–