因机房搬迁,一个oracle数据库需要将数据从原IBM存储(DS8700)迁移到富士通存储(DX8900)。数据迁移采用Oracle 新增DG节点的方式,DG切换操作能正常进行,切换前后DG状态正常。
旧环境--A
新环境--B
A操作系统: AIX 5300-11-04-1015
B操作系统: AIX 5300-11-04-1015
A文件系统: Veritas SF:5.0.3.3
B文件系统: AIX jfs2
A数据库:Oracle:10.2.0.4
B数据库:Oracle:10.2.0.4
A存储:IBM DS8700
B存储:富士通 DX8900
现在遇到的问题是数据库在jfs2环境下运行一段时间后,会出现数据文件打开失败的情况,部分oracle日志如下:
Sat Dec 9 19:45:09 2017
Errors in file /oracle/PRD/saptrace/background/prd_arc2_18857992.trc:
ORA-00313: open failed for members of log group 62 of thread 1
ORA-00312: online log 62 thread 1: '/oracle/PRD/mirrlogB/log_g62m2.log'
ORA-27041: unable to open file
IBM AIX RISC System/6000 Error: 23: File table overflow
Additional information: 2
ORA-00312: online log 62 thread 1: '/oracle/PRD/origlogB/log_g62m1.log'
ORA-27041: unable to open file
IBM AIX RISC System/6000 Error: 23: File table overflow
Additional information: 2
数据库报错的同时,操作系统也会有命令执行失败的情况,如ls、vmstat等。
通过sar命令监控,可以看到数据库异常时,file-sz的使用量接近或达到3050215。
参考http://www-01.ibm.com/support/docview.wss?uid=swg21426868 ,这个值好像是达到了AIX 5.3的极限。
想确认一下AIX5.3的File table是不是有300W这样的限制。如果有,在不影响应用的情况下,有没有可以控制File table使用量的方法;或者可以放大这个值。
另外想问一下,在AIX6.1或者AIX7.1有没有这样的限制。
我在使用chfs扩容文件系统时遇到过一次File table overflow的报错,是通过增加J2_inodecachesize的值来解决的,您可以通过ioo -a查看系统当前值。希望对你有帮助。
收起AIX系统的/etc/security/limits文件配置能贴一下么?
@================================
On AIX, ENFILE (23) means either "system file table" overflowed, or
"inode cache" overflowed, both are system level resources
@================================
关于file-sz的限制,可以参考https://www.ibm.com/developerworks/community/blogs/aixworld/entry/why_file_size_of_sar_v_is_different_with_lsof_wc_l3?lang=zh_cn
在AIX6.1环境下,系统支持的file table最大值可以通过echo var | kdb | grep v_file_max命令查看。在不同CPU配置下,v_file_max只也不同。
如果AIX5.3上不能控制open file数量,那现在看来只能升级AIX来解决。
J2_inodecachesize 这个参数之前尝试调整过,从400到600到800,在这个场景下并不起作用。
==============================================================
limits文件内容
default:
fsize = -1
core = 2097151
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1
root:
daemon:
bin:
sys:
adm:
uucp:
guest:
nobody:
lpd:
esaadmin:
stack = 393216
stack_hard = 393216
收起