搞oracle 10g rac
两年前搞了一套10g rac,然后把9i的系统dbua成10g。系统总是感觉不太对付。最近潜心搞了搞。发现以前很多的毛病。
毛病一,主机一挂到,主机2总是也就自动不正常了。最后怀疑问题可能出在NFS上,归档分别在本地的文件系统上,主机1起NFS SERVER,然后使用NFS共享到主机2上。然后用TSM备份到带库。主机1宕机,主机2是NFS的client,NFS的某些重试造成操作系统网络阻塞,oracle的程序挂了,而database本身可能没有问题。修改归档目录,改到ASM里面。把NFS给停了,不再用了,以后注意,最后不用NFS。
毛病二,机器启动,不能自动启动数据库,看/u01/app/oracle/product/10.2.0/db_1/log/jtibmserver1/racg下的log,ora.jtgl.jtgl2.inst.log,报错是CRS-0254: authorization failure,使用sqlplus可以自动启动。
这是因为执行srvctl add的时候没有使用oracle用户,而使用root用户导致的。使用root用户执行srvctl remove。然后使用oracle用户在执行srvctl去add。解决这个问题。
毛病三,还是不能自动启动数据库。sqlplus可以。报错为ORA-27126: unable to lock shared memory segment in core。在spfile里面lock_sga=true。oracle用户的相关设置已经都搞了。sqlplus可以启动库。crs命令不行。按照修改oracle的命令,修改root用户。解决。
毛病四,还是sqlplus可以启动数据库,不能自动启动,报无法找到初始化文件,ORA-01565: error in identifying file '+jtglasm/jtgl/spfilejtgl.ora'。找到毛病的原因。数据库在rac里面的服务是我用srvctl add的命令加到里面的。和dbca自动加到里面的不同,缺少依赖关系。通过命令crs_stat -p命令可以查到。
crs_stat -p ora.orcl.orcl1.inst
NAME=ora.orcl.orcl1.inst
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0/db_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600
DESCRIPTION=CRS application for Instance
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=qbypdb1
OPTIONAL_RESOURCES=
PLACEMENT=restricted
REQUIRED_RESOURCES=
RESTART_ATTEMPTS=5
SCRIPT_TIMEOUT=600
START_TIMEOUT=0
STOP_TIMEOUT=0
UPTIME_THRESHOLD=7d
USR_ORA_ALERT_NAME=
USR_ORA_CHECK_TIMEOUT=0
USR_ORA_CONNECT_STR=/ as sysdba
USR_ORA_DEBUG=0
USR_ORA_DISCONNECT=false
USR_ORA_FLAGS=
USR_ORA_IF=
USR_ORA_INST_NOT_SHUTDOWN=
USR_ORA_LANG=
USR_ORA_NETMASK=
USR_ORA_OPEN_MODE=
USR_ORA_OPI=false
USR_ORA_PFILE=
USR_ORA_PRECONNECT=none
USR_ORA_SRV=
USR_ORA_START_TIMEOUT=0
USR_ORA_STOP_MODE=immediate
USR_ORA_STOP_TIMEOUT=0
USR_ORA_VIP=
里面的REQUIRED_RESOURCES属性是空的,应该有依赖关系,等vip和asm都启动后启动,让它等于ora.jtibmserver2.vip ora.jtibmserver2.ASM2.asm。
crs_stat -p ora.jtgl.jtgl1.inst > ora.jtgl.jtgl1.inst.cap
vi ora.jtgl.jtgl1.inst.cap
crs_unregister ora.jtgl.jtgl1.inst
crs_register ora.jtgl.jtgl1.inst -dir ./