暂无图片
日志切换会造成数据库卡住吗?
我来答
分享
baalchina
2022-09-25
日志切换会造成数据库卡住吗?
暂无图片 10M

环境如下:
1.win 2008 r2+oracle 11.2.0.0,服务器是一台虚拟机

2.因为业务需要,数据库上运行了一个5分钟刷新的物化视图,目前数据量比较大,大约是100w条。

3.近期发现zabbix频繁提示磁盘负载超95%,但是过一会就好。事后我停掉了物化视图就不报错了,所以应该就是物化视图刷新造成的。

4.业务主要包括一个oa(jsp写的)应用,和一个etl接口(大约10分钟一次运行select)

现象如下:

  1. 业务反馈经常性卡死打不开,查看业务日志,有这个报错:java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection

2.etl接口卡死,有时候啥报错都没有,偶尔也报ORA-12518, TNS:listener could not hand off client connection

  1. 在数据库服务器上tnsping或者lsnrctl status反应都很慢。

  2. 重启服务器(shutdown immedieate;startup)后可以恢复。但是过段时间又抽了。

  3. listener.log报这个错误

25-9月 -2022 18:55:11 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=APP$))) * (ADDRESS=(PROTOCOL=tcp)(HOST=1.1.1.1)(PORT=55230)) * establish * orcl * 12560
TNS-12560: TNS: 协议适配器错误
 TNS-00530: 协议适配器错误
  64-bit Windows Error: 53: Unknown error
   TNS-12518: TNS: 监听程序无法分发客户机连接
    TNS-12571: TNS: 包写入程序失败
     TNS-12560: TNS: 协议适配器错误
      TNS-00530: 协议适配器错误
       64-bit Windows Error: 54: Unknown error
  1. alert_orcl.log报这个:
Sun Sep 25 20:16:37 2022
Shutting down archive processes
ARCH shutting down
ARC4: Archival stopped
Thread 1 cannot allocate new log, sequence 2169395
Checkpoint not complete
  Current log# 1 seq# 2169394 mem# 0: C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG
Archived Log entry 2193186 added for thread 1 sequence 2169393 ID 0x59a7be8c dest 1:
Thread 1 advanced to log sequence 2169395 (LGWR switch)
  Current log# 2 seq# 2169395 mem# 0: C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
Sun Sep 25 20:16:40 2022
Archived Log entry 2193187 added for thread 1 sequence 2169394 ID 0x59a7be8c dest 1:
Thread 1 cannot allocate new log, sequence 2169396
Checkpoint not complete
  Current log# 2 seq# 2169395 mem# 0: C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
Thread 1 advanced to log sequence 2169396 (LGWR switch)
  Current log# 3 seq# 2169396 mem# 0: C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG

我自己查了一些资料,猜测如下(但是不太确定,请各位指点)

  • 由于有5分钟100w条左右的写入,造成磁盘负载较高,从zabbix的报警就可以看到
  • 由于磁盘负载高,造成日志切换失败,从而数据库卡死
  • Oracle卡死,也就产生了前述的ORA-12518, TNS:listener could not hand off client connectionjava.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection错误

不知道我这个理解是否正确?目前,我已经把物化视图停掉了,至少目前zabbix不再报警了,数据库我还需要观察,也请大家多指教,谢谢!

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
baalchina

为啥不能编辑…补充下。trace文件报这个错误

** DBGRL Error: Text Alert Log
** DBGRL Error: SLERC_OERC, 48180
** DBGRL Error: OSD-00001: 附加错误信息
O/S-Error: (OS 32) 另一个程序正在使用此文件,进程无法访问。
** DBGRL Error: 25-9月 -2022 18:53:50 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=APP1$))) * (ADDRESS=(PROTOCOL=tcp)(HOST=1.1.1.1)(PORT=54218)) * establish * orcl * 12560

** DBGRL Error: Text Alert Log
** DBGRL Error: SLERC_OERC, 48180
** DBGRL Error: OSD-00001: 附加错误信息
O/S-Error: (OS 32) 另一个程序正在使用此文件,进程无法访问。
** DBGRL Error: TNS-12560: TNS: 协议适配器错误
 TNS-00530: 协议适配器错误
  64-bit Windows Error: 53: Unknown error
   TNS-12518: TNS: 监听程序无法分发客户机连接
    TNS-12571: TNS: 包写入程序失败
     TNS-12560: TNS: 协议适配器错误
      TNS-00530: 协议适配器错误
暂无图片 评论
暂无图片 有用 0
zhangyfr
2022-09-26
Thomas

要在物化视图上想办法。refresh force的意思:如果可以FAST(增量)更新,则FAST,如果不能,则COMPLETE。

FAST更新的前提是都相关表或MV要建立materialized view log,语法是create materialized view log on tb_xxx [with] [rowid/primary keys]
而且MV的语法中不能有分析函数或用户自定义函数 ,不能包含SYSDATE和ROWNUM,不能包含对LONG和LONG RAW数据类型的引用。

看看MV建立的语法,是否是refresh force。最好保证是增量刷新。

另外刷新时禁止产生日志:

alter materialized view xxx nologging;

当然,这也受DB端是否force logging有关

SQL> select force_logging from v$database; 看是否返回no

暂无图片 评论
暂无图片 有用 1
愤怒的蜗牛
2022-09-26
zhangyfr

#赞;

暂无图片 评论
暂无图片 有用 0
张sir

1、看下你业务连接失败的时间跟物化视图刷新的时间是否能对上号。

2、一次更改量太大,redo组数太少了,导致需要切换redo的时候,数据库还没来得及做checkpoint,日志没法切换,这个时候数据库会夯住。

解决方案:

 a、增加redo的大小和组数。

 b、物化视图加no logging

暂无图片 评论
暂无图片 有用 0
超越无限D
2022-09-26
吾喾

Checkpoint not complet

可以看出来日志写不过来,肯定是导致数据库性能下降,造成数据库卡顿甚至卡死。增大redo大小/增加redo数量,另外就是楼上说的优化物化视图。虚拟机跑数据库本来就不建议,受限比较多。

暂无图片 评论
暂无图片 有用 0
手机用户8432

问题很清楚清楚日志切换后面归档进程没有把要覆盖日志组数据归档,建议调大日志,并且添加日志组问题可以得到解决。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏