暂无图片
日志切换会造成数据库卡住吗?
我来答
分享
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
打赏 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
打赏 0
愤怒的蜗牛
2022-09-26
zhangyfr

#赞;

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

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

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

解决方案:

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

 b、物化视图加no logging

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

Checkpoint not complet

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

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

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

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
现在Oracle的A库是生产的 ,B库空的, 想把一些跑数的工作,放到B库处理 ,处理完结果同步到A库,如何实施?
回答 3
在B库做A库数据的物化视图,在B库跑数,跑出的结果表是A库表的视图
Oracle中临时表与实体表可以组合建一个视图表吗?
回答 2
可以的
AIX7.2搭建Oracle11g数据库在安装数据库软件时报错,runInstaller无法启动。
回答 4
一般是下面两种解决方法:下面是DISPLAY解决方案:
oracle 11.2.0.4版本 win环境,生成awr报告停止不动
回答 2
已采纳
这是一个已知问题。原因是新库没有统计信息,其中一个SQL的执行计划出现问题。收集一下统计信息即可。
11gR2中C_OBJ#异常增大
回答 1
selectowner,TABLEname,numrowsfromdbatableswhereclustername'COBJ'ORDERBYnumrowsdesc可以关注一下哪张表的记录增加过多,进
如何验证数据库
回答 3
有系统级别的i/o压测工具,fio等,这个是最准确的,这个让存储厂商做一个对比报告即可。Oracle也有自带的dbms包(只做参考,不要在业务时间运行):set time onse
FRA下ARCHIVELOG为何创建时间都是整点的?
回答 1
已采纳
1、ASMCMD和V$ASMFILE显示的时间(MODIFICATIONDATE)是取整到最近的小时的,DocID744486.12、归档(ARCHIVELOG)之后内容是不会变的,redo(onli
Oracle 表新增字段索引,如何评估所需要空间大小?
回答 1
这个其实很简单啊。索引保存了。rowid的一部分,和字段本身。所以可以根据字段大小和条数来评估
Oracle数据库的哪种数据类型精度最高?
回答 2
已采纳
TIMESTAMP数据类型在Oracle中精度最高,通常可以精确到微秒(百万分之一秒)。
Exadata调整scan IP
回答 1
已采纳
是一样的,您可以参考这篇文档(DocID952903.1)HowtoUpdatetheIPAddressoftheSCANVIPResources(ora.scan{n}.vip)(DocID9529