ORACLE 小机集群启停及常见问题处理.docx
《ORACLE 小机集群启停及常见问题处理.docx》由会员分享,可在线阅读,更多相关《ORACLE 小机集群启停及常见问题处理.docx(18页珍藏版)》请在冰豆网上搜索。
ORACLE小机集群启停及常见问题处理
Oracle集群启动关闭及常见问题解决方法
一系统环境介绍1
二小型机的集群启停2
1开启OracleRAC2
2关闭OracleRAC4
3客户机连接5
4Weblogic连接7
5AIX操作系统常用命令9
6oracle常用命令11
三、常见问题12
1用crs_stat检查状态时报错IOT/Aborttrap12
2用crs_stat检查状态时报错CRS-0184:
CannotcommunicatewiththeCRSdaemon15
3用sysdba用户登录sqlplus或OEM时报错“无权限”15
一系统环境介绍
以超高压项目为例:
小型机共2台,分别为
●1#机:
portaldb110.118.250.51
●2#机:
portaldb210.118.250.52
分别有2个用户,用户名密码分别为
●管理员账号:
root/*******
●数据库管理账号:
oracle/******
Oracle中用户名密码分别为
●sys及system用户密码均为******
下文的登陆指的是用telnet远程或本地控制台登陆小型机
二小型机的集群启停
1开启OracleRAC
1.启动HACMP服务(异常情况下,平时不需要此步骤)
方法1:
在任意一台机器上用root用户登录,在#提示符下执行smittycl_start
StartClusterServices
Typeorselectvaluesinentryfields.
PressEnterAFTERmakingalldesiredchanges.
[EntryFields]
*Startnow,onsystemrestartorbothnow+
StartClusterServicesonthesenodes[portaldb1,portaldb2]+
BROADCASTmessageatstartup?
false+
StartupClusterInformationDaemon?
true+
Reacquireresourcesafterforceddown?
false+
光标移动到“StartClusterServicesonthesenodes”这行,将空格内填入2台小型机的名称,中间用逗号隔开,之后回车2次开始执行
或者将将光标移动到“StartClusterServicesonthesenodes”这行,按Esc+4键,此时会弹出一个选择主机的窗口,在此窗口上依次将光标停在需要启动的节点上,按Esc+7键选中,选中后,节点的左边将会有“>”符号。
全部选中后按回车返回上级菜单,回车2次开始执行。
执行完毕后左上角将会提示OK,此时按Esc+0退出菜单
方法2:
直接在#提示符下输入以下命令
#_SPOC_FORCE=Y/usr/es/sbin/cluster/cspoc/fix_argsnopcl_rc.cluster'-N'\
-cspoc-nportaldb1,portaldb2''-i'
启动命令到此完成,可以通过以下命令检查RAC服务是否正确启动
2.检查HACMP服务(2节点)
#lssrc-gcluster
SubsystemGroupPIDStatus
clstrmgrEScluster442598active
clinfoEScluster553022active
检查集群服务是否均处于活动(active)状态
3.检查共享卷(2节点),
#lspv
hdisk000c6fff2e3567855rootvgactive
hdisk100c6fff2dfe9a21brootvgactive
hdisk200c6ffd2e57b1961oravgconcurrent
hdisk300c6ffd2e57b1a3aoravgconcurrent
hdisk400c6ffd2e57b4dc9oravgconcurrent
hdisk500c6ffd2e57b4e68oravgconcurrent
hdisk600c6ffd2e57b4f08oravgconcurre
检查共享磁盘oravg是否正确挂载(concurrent),如果显示正常,则说明集群已经起来。
4.检查oracle服务(2节点)
#/u01/app/oracle/crs/bin/crs_stat-t
或用oracle用户登录,直接输入crs_stat-t
NameTypeTargetStateHost
------------------------------------------------------------
ora.orcl.dbapplicationONLINEONLINEportaldb1
ora....l1.instapplicationONLINEONLINEportaldb1
ora....l2.instapplicationONLINEONLINEportaldb2
ora....B1.lsnrapplicationONLINEONLINEportaldb1
ora....db1.gsdapplicationONLINEONLINEportaldb1
ora....db1.onsapplicationONLINEONLINEportaldb1
ora....db1.vipapplicationONLINEONLINEportaldb1
ora....B2.lsnrapplicationONLINEONLINEportaldb2
ora....db2.gsdapplicationONLINEONLINEportaldb2
ora....db2.onsapplicationONLINEONLINEportaldb2
ora....db2.vipapplicationONLINEONLINEportaldb2
检查是否全部服务均处于激活(online)状态
5.如需打开OracleEnterpriseManager(OEM),需要在2台机器上分别输入以下命令
在portaldb1上,以oracle用户登录,在$提示符下输入
$emctlstartdbconsole
在protaldb2上,以oracle用户登录,在$提示符下输入
$emctlstartagent
然后在浏览器中输入http:
//10.118.250.51:
1158/em即可打开
2关闭OracleRAC
1.关闭连接数据库的连接,如Weblogic等
2.如需 关闭OracleEnterpriseManager(OEM),需要在2台机器上分别输入以下命令
在portaldb1上,以oracle用户登录,在$提示符下输入
$emctlstopdbconsole
在portaldb2上,以oracle用户登录,在$提示符下输入
$emctlstopagent
3.关闭oracle数据库
在任意一个节点上用oracle用户登录,在$提示符下执行以下命令
$srvctlstopnodeapps-nportaldb1
$srvctlstopnodeapps-nportaldb2
完成后执行crs_stat-t检查服务状态,是否已关闭(OFFLINE)
NameTypeTargetStateHost
------------------------------------------------------------
ora.orcl.dbapplicationONLINEONLINEportaldb1
ora....l1.instapplicationOFFLINEOFFLINE
ora....l2.instapplicationOFFLINEONLINEportaldb2
ora....B1.lsnrapplicationOFFLINEOFFLINE
ora....db1.gsdapplicationOFFLINEOFFLINE
ora....db1.onsapplicationOFFLINEOFFLINE
ora....db1.vipapplicationOFFLINEOFFLINE
ora....B2.lsnrapplicationOFFLINEOFFLINE
ora....db2.gsdapplicationOFFLINEOFFLINE
ora....db2.onsapplicationOFFLINEOFFLINE
ora....db2.vipapplicationONLINEONLINEportaldb2
4.关闭HACMP
方法A:
以root用户登录,在#提示符下输入以下命令
#smittycl_stop
StopClusterServices
Typeorselectvaluesinentryfields.
PressEnterAFTERmakingalldesiredchanges.
[EntryFields]
*Stopnow,onsystemrestartorbothnow+
StopClusterServicesonthesenodes[portaldb1,portaldb2]+
BROADCASTclustershutdown?
true+
*Shutdownmodegraceful+
执行完成后用Esc+0退出菜单
方法B:
直接使用以下命令关闭集群服务
#_SPOC_FORCE=Y/usr/es/sbin/cluster/cspoc/fix_argsnopcl_clstop'-N'\
-cspoc-n'portaldb1,portaldb2''-g'
5.关闭小型机
#shutdown-F
如果需要重新启动请输入shutdown-Fr,紧急情况下,2-3步可以跳过直接执行shutdown命令关机
3客户机连接
1.确认客户端可以ping通小型机地址
小型机地址:
portaldb110.118.50.51
Portaldb210.118.50.52
数据库对外服务地址:
10.118.250.54portaldb2-vip
10.118.250.53portaldb1-vip
2.如果客户机启用的XP防火墙,需要手工将javaw.exeoracle.exe设置为信任应用程序
3.打开客户机host文件,路径为c:
\windows\system32\drivers\etc\hosts
在文件尾部添加以下2行
10.118.250.54portaldb2-vip
10.118.250.53portaldb1-vip
4.打开$ORACLE_HOME/network/admin/tnsnames.ora($ORACLE_HOME代表oracle安装路径,增加以下数据
orcl=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.118.250.54)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=10.118.250.53)(PORT=1521))
(LOAD_BALANCE=yes)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
ORCL1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.118.250.53)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
(INSTANCE_NAME=orcl1)
)
)
ORCL2=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.118.250.54)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
(INSTANCE_NAME=orcl2)
)
)
上述数据一定要放在EXTPROC_CONNECTION_DATA这行之前
重新启动Listener:
在服务中重启或者在dos命令中输入以下命令
lsnrctlstop
lsnrctlstart
打开NetManager,会发现增加了3个连接,一般我们使用orcl进行连接即可,其他2个连接分别对应2台小型机上的实例。
4Weblogic连接
方法1:
使用Oracle实现负载及故障转移
配置Weblogic的连接池时,在connectpool中新建任意一个连接池,手动修改jdbc为以下url
jdbc:
oracle:
thin:
@(description=(address_list=(address=(host=10.118.250.53)(protocol=tcp)(port=1521))(address=(host=10.118.250.54)(protocol=tcp)(port=1521))(load_balance=yes)(failover=yes))(connect_data=(service_name=orcl)))
如下图所示
注意需要打开host文件,路径为c:
\windows\system32\drivers\etc\hosts
在文件尾部添加以下2行
10.118.250.54portaldb2-vip
10.118.250.53portaldb1-vip
方法2:
使用weblogicmultipool实现负载及故障转移
首先需要分别配置2个JDBC连接池,分别对应2台小型机上的实例:
orcl1和orcl2
URL如下:
jdbc:
oracle:
thin:
192.168.168.67:
1521:
orcl1
jdbc:
oracle:
thin:
192.168.168.68:
1521:
orcl2
之后建立一个JDBCMutilPool
点缓冲池,将之前建立的2个连接池分配到这个MutilPool中,点应用
在各连接池的“目标和部署”页面中,确认这些连接池已经分配给目标服务器
之后正常建立JNDI,完成后重启Weblogic
5AIX操作系统常用命令
查看系统基本信息
Pmcycles查看CPU的主频
vmstat查看CPU个数及内存
lspvhdiskn查看硬盘信息
oslevel-r查看操作系统版本
lsdev检查硬件设备信息
errpt检查报错日志
errpt-aj错误代码检查详细报错信息
errclear0清除报错日志
lslpp-l|grep包名称查看操作系统包安装状态
解压缩命令
解压tar.Z
uncompress*.tar.Z
tar-xvf*.tar
解压cpio
cpio-idcmv<*.cpio
文件系统操作
df-g检查磁盘空间
ls-a目录名检查目录内容
cd目录名变更目录
chmod权限文件名更改文件读取、更改以及运行权限
chown用户:
组文件名更改文件的所有者以及所有组
配置命令
smittytcpip->”MinimumConfiguration&Startup”->选择网卡配置网卡
smittydate更改系统时间
smittychtz更改系统时区
smittyhostname配置主机名
smittyuser配置用户
6oracle常用命令
监听管理
lsnrctlstart启动监听
lsnrctlstop关闭监听
lsnrctlstatus检查监听状态
导入导出数据
exp用户名/密码@连接符file=文件名log=日志名导出远程数据
imp用户名/密码@连接符file=文件名log=日志名fromuser=原导出用户touser=导入用户导入数据
以下为SQLPLUS控制命令
sqlplus用户名/密码@连接符连接远程OracleSqlplus
shutdownimmediate立即关闭数据库,注意先关闭weblogic等连接程序,否则无法关闭
startup当连接上一个空闲例程(connecttoaidleinstance)时,启动此实例
建表空间
createtablespace表空间datafile'表空间全路径'size大小建立表空间,确定路径及尺寸
autoextendonnext大小满后自动扩展大小
maxsizeunlimited;扩展上限、unlimited表示无限
建用户
createuser用户名identifiedby密码建立用户,确定密码
defaulttablespace用户名对应表空间指定表空间
temporarytablespace用户名对应临时表空间指定临时表空间
quotaunlimitedon用户名;指定用户空间配额
grantconnect,resourceto用户名;将连接、访问资源权限授予此用户
删除表空间
droptablespace表空间includingcontents删除表空间、不包括文件
droptablespace表空间includingcontentsanddatafilescascade删除表空间、包括文件
删除用户
dropuser用户名cascade删除用户
三、常见问题
1用crs_stat检查状态时报错IOT/Aborttrap
首先telnet登陆报错的主机,使用df-g命令检查“/”分区是否已满
如果没有满,见第二步。
如果满了,则见第三步
第二步:
在root用户下(#提示符)执行
ls-l/u01/app/oracle/crs/crs
检查是否存在auth目录,已经没有的话,执行
mkdir/u01/app/oracle/crs/crs/auth
chownoracle:
oinstall/u01/app/oracle/crs/crs/auth
之后执行crs_stat检查是否正常反馈信息,如正常转第四步。
第三步:
如果空间满了,在root用户下(#提示符)执行smittychfs命令对磁盘空间进行扩容
选择第一项,更改增强型文件系统参数
选择“/”分区,将光标移动到“UnitSize”行上,按Esc+4键,此时会弹出一个对话框,提示选择单元大小,选择Gigabyte之后,回到Numberofunits栏上,将数字改为需要分配的新的空间大小,回车确定
成功后将会如下图提示
此时再使用df-g命令检查磁盘空间,是否已增加
第四步:
此时我们使用crs_stat检查RAC服务状态
db01的instance状态为未知(UNKNOWN),还有几个服务尚未启动
可以使用crs_start-all命令启动这些服务
此时instance的状态仍然为UNKNOWN,我们可以使用以下命令启动它
srvctlstartinstance-dorcl-iorcl1
执行后等提示符出现后,如果没有任何反馈信息,则表示执行成功,此时使用crs_stat命令检查服务状态
已经都正常了。
2用crs_stat检查状态时报错CRS-0184:
CannotcommunicatewiththeCRSdaemon
首先确认HACMP服务已启动,磁盘已挂载,具体方法见1.1开启OracleRAC
之后检查CRSdaemon是否启动,用root用户(#提示符)执行以下命令
/u01/app/oracle/crs/bin/crsctlcheckcrs
CSSappearshealthy
CRSappearshealthy
EVMappearshealthy
如果有fail的进程,使用以下命令启动
/u01/app/oracle/crs/bin/crsctlstartcrs
3用sysdba用户登录sqlplus或OEM时报错“无权限”
现象:
在小型机上使用sqlplus“/assysdba”可以登录,使用sqlplussys/system@orcl1assysdba无法登陆,提示无权限
分析:
密码文件故障
解决:
重新生成PWD文件,例如
在portaldb1上,使用oracle用户($提示符)执行
cd$ORACLE_HOME/dbs
mvorapworcl1orapworcl1.bak
orapwdfile=orapworcl1password=systementries=30
在portaldb2上,使用oracle用户($提示符)执行
cd$ORACLE_HOME/dbs
mvorapworcl2orapworcl2.bak
orapwdfile=orapworcl2password=systementries=30
之后测试
sqlplus/nolog
connsys/system@orcl1assysdba;
connect
connsys/system@orcl2assysdba;
connect
连接正常