建议使用Chrome浏览器访问!
技术支持
互动社区
学习培训
深信服官网
合作伙伴

超融合HCI

关注
深信服超融合SANGFOR HCI是面向下一代数据中心的软件定义基础架构,通过虚拟化技术融合计算、存储、网络和安全等资源,并提供运维管理、容灾备份、智能监控等高级特性,帮助用户构建极简、稳定、高性能的云化数据中心基石。
故障案例库
典型场景排查思路

【aCloud】非归档模式下Oracle RAC加错表空间数据文件恢复1

更新时间:2019-06-11
  • 阅读权限:游客
  • 下载
  • 分享
  • 收藏
所属模块
适用版本 通用
本案例针对在非归档模式下对Oracle数据库asm存储不太熟悉的客户,扩容表空间时加错datafile,如:
1.把本地文件存储加到asm类型的表空间;
2.添加asm存储时少写了"+"号;
  1. Errors in file /u01/app/oracle/diag/rdbms/ctidb/ctidb2/trace/ctidb2_dbw0_24948.trc:
  2. ORA-01157: cannot identify/lock data file 8 - see DBWR trace file
  3. ORA-01110: data file 8: '/home/oracle/sxf_data02'
  4. ORA-27037: unable to obtain file status
  5. Linux-x86_64 Error: 2: No such file or directory
实验环境:Linux 6.4 + Oracle 11gR2 +RAC
(一)环境准备
1.分别查询两节点数据库实例归档状态,"No Archive Mode"为非归档:
  1. SQL> archive log list;
  2. Database log mode              No Archive Mode
  3. Auto某公司 archival             Disabled
  4. Archive destination            /u01/app/oracle/product/11.2.0.3/db_1/dbs/arch
  5. Oldest online log sequence     12
  6. Current log sequence           13
2.创建表空间及测试表,节点1操作
  1. SQL> create tablespace sxf_data datafile '+DATA_DATADG' size 15M autoextend off;

  2. Tablespace created.

  3. SQL> create table TT1 tablespace sxf_data AS select * from dba_objects;

  4. Table created.
3.继续插入数据,报表空间不足,目的为使第二次添加的数据文件(datafile)中分布有数据,节点1操作
  1. SQL> insert into TT1 select * from dba_objects;
  2. insert into TT1 select * from dba_objects
  3.             *
  4. ERROR at line 1:
  5. ORA-01653: 表 SYS.TT1 无法通过 128 (在表空间 SXF_DATA 中) 扩展


  6. SQL> alter tablespace sxf_data add datafile '/home/oracle/sxf_data02' size 15M autoextend off;

  7. Tablespace altered.

  8. SQL> insert into TT1 select * from dba_objects;

  9. 86952 rows created.

  10. SQL> commit;

  11. Commit complete.
4.此时查看测试表空间的datafile,第二次添加数据文件为本地文件:
  1. set linesize 120
  2. col name format a60
  3. col file# format 9999
  4. col size_mb format 99999  --以上为格式制表符
  5. select f.file#, F.NAME, TRUNC(f.BYTES/1048576,2) SIZE_MB , f.CREATION_TIME, status
  6. FROM V$DATAFILE F,V$TABLESPACE T
  7. WHERE F.ts#=T.ts# AND T.NAME = 'SXF_DATA'
  8. order by f.CREATION_TIME;

  9. 节点1:
  10. FILE# NAME                                                         SIZE_MB CREATION_TIME       STATUS
  11. ----- ------------------------------------------------------------ ------- ------------------- -------
  12.     8 +DATA_DATADG/ctidb/datafile/sxf_data.265.1010587371               15 2019-06-10 14:42:50 ONLINE
  13.     9 /home/oracle/sxf_data02                                           15 2019-06-10 14:45:35 ONLINE
5.节点2查询测试表:
  1. SQL> select count(1) from tt1;
  2. select count(1) from tt1
  3.                            *
  4. ERROR at line 1:
  5. ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
  6. ORA-01110: 数据文件 9: '/home/oracle/sxf_data02'

6.查看节点2后台报错日志
  1. Errors in file /u01/app/oracle/diag/rdbms/ctidb/ctidb2/trace/ctidb2_dbw0_20428.trc:
  2. ORA-01186: file 9 failed verification tests
  3. ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
  4. ORA-01110: data file 9: '/home/oracle/sxf_data02'

(2)处理过程
注意:
    因数据库为非归档模式,该报错发现越早越好。
1.发现该报错,立即停止业务,防止频繁的增删改使redo日志频繁切换;
2.设置表空间为只读,并offline数据文件(注:数据文件编号"9"为第一步环境准备第4小步"file#"得到):
  1. SQL> alter database datafile 9 offline;
  2. alter database datafile 9 offline
  3. *
  4. ERROR at line 1:
  5. ORA-01145: 除非启用了介质恢复, 否则不允许立即脱机


  6. SQL> alter tablespace SXF_DATA read only;

  7. Tablespace altered.

  8. SQL> alter database datafile 9 offline;

  9. Database altered.
3.重建数据文件,并查询数据文件状态(查询语句见第一.4不再重复)
  1. SQL> ALTER DATABASE CREATE DATAFILE 9 AS '+DATA_DATADG' size 15m ;

  2. Database altered.
4.在线恢复数据文件
注:此步依赖于在线日志(非归档),千万不可手动切换日志
  1. SQL> recover datafile 9;
  2. Media recovery complete.
5.数据文件ONLINE
  1. SQL> alter database datafile 9 online;

  2. Database altered.
6.数据文件ONLINE
  1. FILE# NAME                                                         SIZE_MB CREATION_TIME       STATUS
  2. ----- ------------------------------------------------------------ ------- ------------------- -------
  3.     8 +DATA_DATADG/ctidb/datafile/sxf_data.265.1010587371               15 2019-06-10 14:42:50 ONLINE
  4.     9 +DATA_DATADG/ctidb/datafile/sxf_data.266.1010588435               15 2019-06-10 14:45:35 ONLINE

///////////////////////////*******///////////////////////////////
(三)当未停止业务导致日志切换频繁或者很长时间(假设2小时以上)才发现,会导致在线恢复时恢复不了,因为找不到归档日志了,报错:
  1. SQL> recover datafile 9;
  2. ORA-00279: change 1686019 generated at 06/10/2019 21:06:30 needed for thread 1
  3. ORA-00289: suggestion : +LOG
  4. ORA-00280: change 1686019 for thread 1 is in sequence #24


  5. Specify log: {<ret>=suggested | filename | AUTO | CANCEL}
  6. auto
  7. ORA-00308: cannot open archived log '+LOG'
  8. ORA-17503: ksfdopn:2 Failed to open file +LOG
  9. ORA-15045: ASM file name '+LOG' is not in reference form


  10. ORA-00308: cannot open archived log '+LOG'
  11. ORA-17503: ksfdopn:2 Failed to open file +LOG
  12. ORA-15045: ASM file name '+LOG' is not in reference form</ret>

节点1扩容表空间时,使用了节点1的本地文件系统存储,而非共享的ASM存储,导致节点2访问不了。
详见处理过程
1.建议业务数据库开启归档模式;
2.扩容
本页目录
  • 问题描述
  • 告警信息
  • 处理过程
  • 根因
  • 解决方案
  • 建议与总结