[Oracle]3 Node ORACLE RAC项目手记
作者:charly 来源:IT168.com 添加时间:2006-5-26 9:53:33 4. Oracle RAC 安装和建库
终于要开始安装Oracle RAC了,再次检查HACMP后开始安装Oracle。安装Oracle非常顺利,但是在建库的时候碰到了一些问题。
建库LV准备:
由于用户较多,因此需要的表空间也多,相对需要的LV也较多。LV建完成后将所有的Lv改Owner为Oracle
#chown -R oracle:dba /dev/r_*
#chown -R oracle:dba /dev/rr_*
问题1:
创建LV失败,告诉我说LV的名字超长。(小于12字符?忘记了)只好重新修改LV的脚本,重新建立LV。
问题2:
建库的时候,跳出个窗口告诉我PRKR-1064错误,说是共享的srvconfig设备无法访问。我试着在Oracle用户下执行srvconfig -init,报错,什么JAVA无法访问Rawdevices 如下:
$srvconfig -init -f
oracle.ops.mgmt.rawdevice.RawDeviceException: PRKR-1064 : General Exception in OCR
at oracle.ops.mgmt.rawdevice.RawDeviceUtil.
at oracle.ops.mgmt.rawdevice.RawDeviceUtil.
接着,我用dd命令测试:dd if=/dev/r_srvmconf of=/dev/null bs=8192
分别在三台机器上执行,其中有一台报错,我一看属性,原来/var/opt/oracle/srvConfig.loc
文件的属性错误,用chmod 777 srvConfig.loc后问题解决。
小结:
4.1 最好通过脚本文件来做LV,这样万一出现问题,重做比较方便快捷。同时也减少出错的机会。
4.2 另外,需要注意就是LV的名称长度有限制,最好推荐使用Oracle例子的命名方式:如r_user01_1G,方便理解。
4.3 一定要多做几个备用的LV,以备不时之需和以后扩表空间用。
4.4 redo log文件一定要在建库的时候把相关的参数定好,如文件大小,每组有几个文件,一共多少组,否则会很麻烦。
4.5 注意每一个步骤,必须得每台机器上都做。
这样,折腾了我2个晚上。
5. Oracle 数据库迁移
第二次数据迁移很痛苦。一直EXP失败,后来发现buffer开得太(我开了1000000000)。
IMP后导入成功,但是发现其它问题。
这个折腾了我3个晚上。
6. 出现问题,问题解决
6.1 发现其中的A服务器CPU经常在100%,严重影响系统运行。检查了N多,都没有发现异常,最后A机重启后居然好了。没有办法解释。
6.2 发现其中所有大表(500万)条记录只有只能在一个Node操作。现象如下:
如果A机操作过A表,那么在B机或C机上查询一条A表得记录,得10多个小时(我狂倒),也就是更本无法查询A表。
经过多方查证,基本确定是Oracle的一个BUG,于是下载9204,安装Patch。可是在安装Patch 9204到最后一步执行脚本root.sh得时候,其中A机
执行了1个多小时还有完成,只好人工取消。(结果这里又留下隐患)。Patch完成,发现问题解决。
6.3 升级到9204后,系统运行正常,回家。第三天客户报告说这2天得EXP导出都没有成功。网上一查,发现说使一个SQL得包没有正常运行。而且,运行那个包必须在特种模式下(migrate),也就是说必须得停库,只有晚上做。
第二天晚上,我安说明,shutdown 库,startup migrate结果报错,说是RAC系统无法启动到Migrate下。没有办法,只好修改参数,cluster_database=false和PARALLEL_SERVER=false,然后:
1. shutdown immedaite
2. startup migrate
3 @rdbms/admin/catpatch
4. shutdown immedaite
5. startup
启动成功后将cluster_database=true和PARALLEL_SERVER=true
6.4 发现磁盘IO非常不均,oravg1在Hdisk1经常100%,而oravg2在得hdisk2空得很,检查后发现user1的业务量远大于user2,虽然数据量差不多。所以说开始的时候设计出现问题了。还好,我在oravg2上有部分备用的LV,把它加了4G到user1的表空间,并把user1的数据重新导出,导入后发现好多了。
到这里,项目基本稳定了,但是其实事情还有很多,如数据备份、带库、FAST T500等。
项目后感:
第一条:做事一定要仔细,最好每一部都有记录,下破坏性的命令前一定要考虑后果;我用的是SecureCRT,我一般都会做Log记录,方便查询。
第二条:碰到问题不要荒,其实现在这个信息这么发达的时代,我们碰到的大部分的问题都有解决方法,只是看怎么找到它。
第三条:2个人出差比一个人好,尤其是后半夜,至少可以有个商量的人,有时候其实问题很简单,但是一个人容易走进死胡同(因为后半夜基本没有办法打电话)。当然老板不会那么好,每次都派2个人去。呵呵。
第四条:碰到奇怪问题,如果真的穷途末路(黔驴技穷)了,那么restart机器或者数据库等,也许有意外的收获,因为实事证明有一些问题是 没有道理的也无法解释的,但是重启可以解决的。