Solaris裸设备安装三节点RAC102(四)
时间:2011-01-29 来源:yangtingkun
利用裸设备安装Solaris上的三节点Oracle 10.2 RAC。
这一篇主要讨论ORACLE数据库建立过程。
Solaris裸设备安装三节点RAC102(一):http://yangtingkun.itpub.net/post/468/512772
Solaris裸设备安装三节点RAC102(二):http://yangtingkun.itpub.net/post/468/512835
Solaris裸设备安装三节点RAC102(三):http://yangtingkun.itpub.net/post/468/512883
上一篇文章中已经将数据库软件安装完成,下面开始建库操作。
在建库之前,其实是打补丁的好时机。这个时候打完补丁,直接建库就可以了。而如果先建立数据库后,在打补丁的时候就需要停掉所有的数据库服务,安装补丁,然后对现有的数据库进行升级,相对要复杂一些。
为了介绍详细的补丁安装过程,这里就选择了先建立数据库。
启动Xmanager,切换到oracle用户,执行dbca:
# xhost +
access control disabled, clients can connect from any host
# su - oracle
Sun Microsystems Inc. SunOS 5.8 Generic Patch October 2001
$ dbca
进入DBCA欢迎界面。由于建立了RAC环境,欢迎界面可以选择Oracle Real Application Clusters database和Oracle single instance database。选择RAC,点击next。
进行任务选择列表,这里包括创建数据库、配置数据库选项、删除数据库、管理模板、实例管理、服务管理和配置ASM共7个选项。由于是尚未建立数据库,因此只有建立数据库、管理模板和配置ASM是目前可选的。这里由于是在裸设备上直接建立数据库,因此这里选择第一项建立数据库。
进入节点选择界面,将三个节点全部选中,点击next。
数据库模板选择,一般来说,现有的三个模板都不是很合适,因此选择Custom Database,点击next。
在Global Database Name和SID Prefix处都填入testrac。如果数据库需要添加域名,可以在全局数据库名称出后面加上“.domain_name”。点击next。
进入管理选项,这里采用默认的配置:配置Enterprise Manager。如果需要邮件通知或备份设置可以将相应的选项选中,并填入邮件地址、邮件服务器以及操作系统用户和密码等信息。点击next。
密码管理,可以为SYS、SYSTEM、DBSNMP和SYSMAN同一设置口令,也可以设置分别的口令。密码设置完成后,点击next。
进入存储选项页面:这里有三个选项,Cluster文件系统、ASM和裸设备。这里选择裸设备,如果有编辑好的裸设备映射文件,可以在这里提供给DBCA进行参考。
之所以这里说参考,是因为Oracle的裸设备映射文件还存在一些问题。比如多个数据文件,或者额外的表空间,或者像当前RAC环境的多个THREAD的REDO,都难以通过映射文件来直接映射。对于DBCA不存在bug的Solaris和Windows环境,可以考虑不使用映射文件,而直接在最后设置文件的时候直接进行修改。
前面提到了由于网卡的不同,操作系统加载裸设备时映射相同裸设备的名称并不相同。最稳妥的方法是用类似ocr和vot磁盘的方法,在每个服务器的/dev/rac目录下分别建立每个数据文件、控制文件和日志文件的链接。让不同的服务器的连接指向不同的裸设备名称,这样避免多个服务器上裸设备名称不同的问题。
在节点1上执行:
# ln -s -f /dev/rdsk/c2t3d1s1 /dev/rac/system.dbf
# ln -s -f /dev/rdsk/c2t3d1s3 /dev/rac/sysaux.dbf
# ln -s -f /dev/rdsk/c2t3d1s4 /dev/rac/undotbs1.dbf
# ln -s -f /dev/rdsk/c2t3d1s5 /dev/rac/undotbs2.dbf
# ln -s -f /dev/rdsk/c2t3d1s6 /dev/rac/undotbs3.dbf
# ln -s -f /dev/rdsk/c2t3d2s4 /dev/rac/redo1_1.log
# ln -s -f /dev/rdsk/c2t3d2s5 /dev/rac/redo1_2.log
# ln -s -f /dev/rdsk/c2t3d3s1 /dev/rac/redo2_1.log
# ln -s -f /dev/rdsk/c2t3d3s3 /dev/rac/redo2_2.log
# ln -s -f /dev/rdsk/c2t3d3s4 /dev/rac/redo3_1.log
# ln -s -f /dev/rdsk/c2t3d3s5 /dev/rac/redo3_2.log
# ln -s -f /dev/rdsk/c2t3d4s5 /dev/rac/users.dbf
# ln -s -f /dev/rdsk/c2t3d5s1 /dev/rac/control1.ctl
# ln -s -f /dev/rdsk/c2t3d5s3 /dev/rac/control2.ctl
# ln -s -f /dev/rdsk/c2t3d5s4 /dev/rac/control3.ctl
# ln -s -f /dev/rdsk/c2t3d5s5 /dev/rac/spfiletestrac.ora
# ln -s -f /dev/rdsk/c2t3d11s6 /dev/rac/temp.dbf
# chown oracle:oinstall /dev/rac/*
在节点2上执行:
# ln -s -f /dev/rdsk/c2t500601603022E66Ad1s1 /dev/rac/system.dbf
# ln -s -f /dev/rdsk/c2t500601603022E66Ad1s3 /dev/rac/sysaux.dbf
# ln -s -f /dev/rdsk/c2t500601603022E66Ad1s4 /dev/rac/undotbs1.dbf
# ln -s -f /dev/rdsk/c2t500601603022E66Ad1s5 /dev/rac/undotbs2.dbf
# ln -s -f /dev/rdsk/c2t500601603022E66Ad1s6 /dev/rac/undotbs3.dbf
# ln -s -f /dev/rdsk/c2t500601603022E66Ad2s4 /dev/rac/redo1_1.log
# ln -s -f /dev/rdsk/c2t500601603022E66Ad2s5 /dev/rac/redo1_2.log
# ln -s -f /dev/rdsk/c2t500601603022E66Ad3s1 /dev/rac/redo2_1.log
# ln -s -f /dev/rdsk/c2t500601603022E66Ad3s3 /dev/rac/redo2_2.log
# ln -s -f /dev/rdsk/c2t500601603022E66Ad3s4 /dev/rac/redo3_1.log
# ln -s -f /dev/rdsk/c2t500601603022E66Ad3s5 /dev/rac/redo3_2.log
# ln -s -f /dev/rdsk/c2t500601603022E66Ad4s5 /dev/rac/users.dbf
# ln -s -f /dev/rdsk/c2t500601603022E66Ad5s1 /dev/rac/control1.ctl
# ln -s -f /dev/rdsk/c2t500601603022E66Ad5s3 /dev/rac/control2.ctl
# ln -s -f /dev/rdsk/c2t500601603022E66Ad5s4 /dev/rac/control3.ctl
# ln -s -f /dev/rdsk/c2t500601603022E66Ad5s5 /dev/rac/spfiletestrac.ora
# ln -s -f /dev/rdsk/c2t500601603022E66Ad11s6 /dev/rac/temp.dbf
# chown oracle:oinstall /dev/rac/*
在节点3上运行:
# ln -s -f /dev/rdsk/c1t500601603022E66Ad1s1 /dev/rac/system.dbf
# ln -s -f /dev/rdsk/c1t500601603022E66Ad1s3 /dev/rac/sysaux.dbf
# ln -s -f /dev/rdsk/c1t500601603022E66Ad1s4 /dev/rac/undotbs1.dbf
# ln -s -f /dev/rdsk/c1t500601603022E66Ad1s5 /dev/rac/undotbs2.dbf
# ln -s -f /dev/rdsk/c1t500601603022E66Ad1s6 /dev/rac/undotbs3.dbf
# ln -s -f /dev/rdsk/c1t500601603022E66Ad2s4 /dev/rac/redo1_1.log
# ln -s -f /dev/rdsk/c1t500601603022E66Ad2s5 /dev/rac/redo1_2.log
# ln -s -f /dev/rdsk/c1t500601603022E66Ad3s1 /dev/rac/redo2_1.log
# ln -s -f /dev/rdsk/c1t500601603022E66Ad3s3 /dev/rac/redo2_2.log
# ln -s -f /dev/rdsk/c1t500601603022E66Ad3s4 /dev/rac/redo3_1.log
# ln -s -f /dev/rdsk/c1t500601603022E66Ad3s5 /dev/rac/redo3_2.log
# ln -s -f /dev/rdsk/c1t500601603022E66Ad4s5 /dev/rac/users.dbf
# ln -s -f /dev/rdsk/c1t500601603022E66Ad5s1 /dev/rac/control1.ctl
# ln -s -f /dev/rdsk/c1t500601603022E66Ad5s3 /dev/rac/control2.ctl
# ln -s -f /dev/rdsk/c1t500601603022E66Ad5s4 /dev/rac/control3.ctl
# ln -s -f /dev/rdsk/c1t500601603022E66Ad5s5 /dev/rac/spfiletestrac.ora
# ln -s -f /dev/rdsk/c1t500601603022E66Ad11s6 /dev/rac/temp.dbf
# chown oracle:oinstall /dev/rac/*
恢复配置界面,由于选择裸设备,则Flash Recovery Area就没有办法设置,除非为了闪回设置单独的ASM实例并加载磁盘组。至于 Archiving为了建立数据库更加快速可以先置为非归档状态,在安装结束后,在各个实例上设置本地磁盘路径进行归档。
选择数据库安装组件,默认的就是选中所有可用的组件。这里可以去掉认为不需要的组件。也可以配置自己的脚本,使得建库完成后,Oracle自动调用。配置完成后,点击next。
数据库服务页面,这里不需要创建额外的服务,因此这里直接点击NEXT进行下面的操作。数据库建立以后也可以通过DBCA来单独设置服务。
下面是数据库内存、初始化参数、连接模式、字符集、数据库块的设置。这个就需要根据机器的配置进行相应的设置了。其他的设置无所谓,在建立数据库之后还可以修改,但是数据库块的大小和字符集应该正确的进行设置。
在启动参数的地方设置使用SPFILE参数,参数的名称输入前面建立的链接:/dev/rac/spfiletestrac.ora。设置完成后,点击NEXT继续。
下面是数据库存储设置,根据前面建立的链接,输入SYSTEM、SYSAUX、TEMP、USERS、UNDOTBS1、UNDOTBS2和UNDOTBS3表空间所对应的数据文件的名称,并根据裸设备的大小设置这些数据文件的大小。输入三个控制文件对应的路径/dev/rac和文件名称。输入3个实例对应的归档日志的文件名称和路径,根据裸设备分配的大小设置归档日志文件的大小。全部设置完成后,点击next。
无论是日志文件还是数据文件,记得设置的大小要比裸设备的实际大小减少1M,否则在监控的时候可能会出现ORA-27042错误。
需要注意一下,很多版本的dbca在这一步的时候有bug,修改数据文件的位置或大小后,原有的配置没有改变,但是会出现一条新的配置。这就会造成最后建立数据库的过程出错。如果出现这种情况,可以将配置输出到建库脚本,然后手工修改建库脚本,最后通过脚本执行。
最后是创建选项,可以选择创建数据库、创建脚本和创建模板。一般情况会将三个选择全部选中,然后点击Finish。
Oracle会弹出汇总对话框,确认后点击ok,安装开始。
注意,有的时候一些参数填错之后不好修改,设置有的时候建库失败的时候才会发现。这个时候没有关系,只需要后退到相应的配置目录进行修改就可以了。其他的参数如果没有变化不需要进行修改。
安装完毕,出现密码管理界面,点击exit。
这时Oracle会进行一些CLUSTER级的工作,包括重启整个数据库,设置其他的实例,并启动数据库的所有实例。
利用sqlplus进行登陆并检查:
$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 5月 10 19:31:30 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select name from v$database;
NAME
---------
TESTRAC
SQL> col host_name format a30
SQL> select instance_number, instance_name, host_name, status
2 from v$instance;
INSTANCE_NUMBER INSTANCE_NAME HOST_NAME STATUS
--------------- ---------------- ------------------------------ ------------
1 testrac1 racnode1 OPEN
SQL> select instance_number, instance_name, host_name, status
2 from gv$instance;
INSTANCE_NUMBER INSTANCE_NAME HOST_NAME STATUS
--------------- ---------------- ------------------------------ ------------
1 testrac1 racnode1 OPEN
3 testrac3 racnode3 OPEN
2 testrac2 racnode2 OPEN
至此,建库工作结束。