背景:在一次xtts的测试中遇到因源库数据文件名称包含特殊字符导致表空间全量备份缺失文件,之所以说是诡异现象,是因为xtts的全备日志不报任何错误,在恢复阶段才发现缺少文件,这个缺陷比较隐晦,尤其在迁移的表空间较多的场景下,不注意的话很难第一时间发现。

环境:客户环境是AIX 5.3 + Oracle 10.2.0.3,使用xtts脚本2.0版本,本文在测试环境OEL 5.7 + Oracle 10.2.0.5 下,使用xtts脚本3.0实验,同样可以重现这个现象,说明是普遍现象。

1.模拟环境

查询本次测试迁移的表空间对应数据文件信息:
set lines 180
col file_name for a55
select file_id, file_name, status, online_status from dba_data_files where tablespace_name in ('DBS_D_JINGYU','DBS_I_JINGYU');

SYS@orcl> select file_id, file_name, status, online_status from dba_data_files where tablespace_name in ('DBS_D_JINGYU','DBS_I_JINGYU');

   FILE_ID FILE_NAME                                               STATUS    ONLINE_
---------- ------------------------------------------------------- --------- -------
5 /oradata/orcl/dbs_d_jingyu01.dbf AVAILABLE ONLINE
6 /oradata/orcl/dbs_i_jingyu01.dbf AVAILABLE ONLINE
7 /oradata/orcl/dbs_d_jingyu02.dbf AVAILABLE ONLINE
8 /oradata/orcl/dbs_d_jingyu03.dbf AVAILABLE ONLINE
9 /oradata/orcl/dbs_d_jingyu04.dbf AVAILABLE ONLINE
10 /oradata/orcl/dbs_d_jingyu05.dbf AVAILABLE ONLINE
11 /oradata/orcl/dbs_d_jingyu06.dbf AVAILABLE ONLINE
12 /oradata/orcl/dbs_d_jingyu07.dbf AVAILABLE ONLINE
13 /oradata/orcl/dbs_d_jingyu08.dbf AVAILABLE ONLINE
14 /oradata/orcl/ AVAILABLE ONLINE
dbs_d_jingyu09.dbf 15 /oradata/orcl/ AVAILABLE ONLINE
dbs_d_jingyu10.dbf 11 rows selected.

发现14和15号文件本身名字就包含特殊字符,导致显示发生折行。

2.重现问题

此时直接测试xtts备份,就会发现虽然日志不会有任何报错,但实际上备份跑完之后,发现dbs_d_jingyu这个表空间整个都没有成功备份出来,只有其他表空间备份成功,比如我这里实验环境就是只有dbs_i_jingyu表空间的数据文件成功备份:

[oracle@db10 xtts]$ nohup sh full_backup.sh > full_backup.log &
[oracle@db10 src_backup]$ ls -lrth
total 31M
-rw-rw---- 1 ora10 1000 31M Dec 16 23:26 DBS_I_JINGYU_6.tf

3.解决方法

需要处理名字含特殊符号的数据文件,我这里采用的方法是copy备份这些数据文件,然后停机(一般业务闲时操作影响应该也不大,看业务重要程度来决定)offline相关数据文件,切换到copy副本并恢复成功,最后online数据文件,核心步骤参考如下:

RMAN>
backup as copy datafile 14 format '/oradata/orcl/dbs_d_jingyu09.dbf';
backup as copy datafile 15 format '/oradata/orcl/dbs_d_jingyu10.dbf'; list copy of datafile 14,15; --SQL>alter database datafile 14,15 offline;
sql 'alter database datafile 14,15 offline'; switch datafile 14,15 to copy;
recover datafile 14,15; --SQL>alter database datafile 14,15 online;
sql 'alter database datafile 14,15 online';

最后查询本次测试迁移的表空间对应数据文件信息,已经显示正常,再次去xtts备份就可以正常备份出dbs_d_jingyu表空间的数据文件。

附录:

本文的测试环境是通过在添加数据文件时,利用类似这样的不规范操作模拟实现的:

SYS@orcl> alter tablespace dbs_d_jingyu add datafile '/oradata/orcl/
2 dbs_d_jingyu10.dbf' size 10M; Tablespace altered.

测试过这种情况下rman去备份是可以成功的,但xtts脚本备份就有问题,应该算是xtts的脚本缺陷,但是对于这类不规范的情况还是要尽可能避免。

所以建议以后xtts的准备工作多加一项数据文件数量的检查比对,及早发现这类情况提前处置:

select count(1) from dba_data_files where tablespace_name in ('DBS_D_JINGYU','DBS_I_JINGYU');

还有一个需要注意的地方,如果是后发现想进行增量处理未备份的数据文件,需要确保先把之前已经备份成功的文件保存好,因为实验中发现xtts如果重新跑full_backup.sh脚本会自动清空dfcopydir定义的目录。

记录一则xtts测试遇到的诡异现象的更多相关文章

  1. pthread_create多线程执行顺序诡异现象

    多线程执行顺序诡异现象谈,你不知道的pthread_create 引文:学而时习之,不亦说乎.总是忙于具体项目,业务功能的实现:关于编程本身的技能都要有些生疏了,于是就选择了几个专题做了一次温习,重点 ...

  2. 记录一下Junit测试MongoDB,获取MongoTemplate

    只是自己记录一下,测试MongoDB帮助类时,没有配置文件的测试 public class HelperTest { MongoTemplate template; @Before public vo ...

  3. python UI自动化实战记录五:测试页面2 pageobject

    该部分记录测试页面2-StrategyPage,所有页面2上的元素定位.操作.获取属性等方法都写在该类中. 1 页面2继承自BasePage: 2 页面2第一部分写的是所有的定位器 3 页面2第二部分 ...

  4. python UI自动化实战记录四:测试页面1-pageobject

    该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...

  5. Microsoft.Windows.Controls.Ribbon.RibbonWindow 碰到 AvalonDock出现的诡异现象

    部分一 14年底进入目前公司时,领导准备开发一款新软件平台以取代原有平台.原平台采用C++Build开发界面(window c/s客户端) .Visual Studio(封装dll模块).过完年,领导 ...

  6. flexible.js字体大小诡异现象解析及解决方案

    最近在做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致.大家可以查看这个Demo(记得打开Chrome DevTools). 就如上图所示,你可以发现,原本指定的 ...

  7. 多线程执行顺序诡异现象谈,你不知道的pthread_create

    引文:学而时习之,不亦说乎.总是忙于具体项目,业务功能的实现:关于编程本身的技能都要有些生疏了,于是就选择了几个专题做了一次温习,重点放在了多线程和多进程上,跑了一个实例,居然有新的发现: (1)多个 ...

  8. 记录一次测试环境遇到的push消息记录

    测试环境测试push消息,调用消息中心同事的api接口,感觉怎么都调用不通.纠结了一天,最终发现原因:一是版本的问题,不同的测试包有不同的版本,不同的版本 可能push的消息不同.二是 用户有没有 开 ...

  9. ie8浏览器 图片本身问题导致 无法显示图片--- 诡异现象的排查分享

    引子:   前段时间 做新版2.0 首页 的时候, 总感觉 新版首页 线上 精彩回顾下的 2张图片颜色怪怪的,当时以为是图片压缩太厉害导致的,由于实在太忙就没太在意!以下 是来自线上 截图:  红色方 ...

随机推荐

  1. Spark性能优化指南——基础篇

    本文转自:http://tech.meituan.com/spark-tuning-basic.html 感谢原作者 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一 ...

  2. vs 2015 项目筛选器没了,.h头文件和.cpp文件混在一起了

    场景: git 拉取 VS 2015 项目,打开之后,.h头文件和.cpp文件混在一起了. 解决方案: 需要XXX..vcxproj.filters 文件.

  3. netty 对象序列化传输示例

    package object.server.impl; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Chann ...

  4. [tomcat启动报错]registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped

    环境:一个tomcat ,一个工程配置了多数据源,在启动的时候报如下错误: SEVERE: The web application [/qdp-resource-job] registered the ...

  5. C# 在while循环中new的对象

    一: 问:那每次循环都会new一个A?那内存不是会满吗?还是说要把这个初始化对象的动作放到循环外面的写法会比较好? while(true) { A a = new A(); ... sleep(100 ...

  6. unix下ksh获取昨天的日期

    http://blog.chinaunix.net/uid-27795718-id-3347473.html 总结:使用了TZ以后,时间立刻变伦敦时间.如果你打算用"TZ=aaa24 dat ...

  7. [python] python3.6 安装 pytesseract 出错

    安装pytesseact出错, 下载 tesseract-ocr , 地址 https://github.com/tesseract-ocr/tesseract 修改pytesseract.py 设置 ...

  8. python调用shell脚本时需要切换目录

    最近遇到了一个问题,就是python代码调用shell脚本时,发现输入输出的文件,总是和自己预想的有偏差,但是单独在linux下执行命令的时候,却没有错误.后来发现是相对路径的问题,因为执行pytho ...

  9. Docker-服务(4)

    服务定义 在分布式应用程序中,应用程序的不同部分称为“服务”.例如,如果您想象一个视频共享站点,它可能包括一个用于在数据库中存储应用程序数据的服务,一个用户在上传内容后在后台进行视频转码的服务,一个用 ...

  10. Android的Base64的坑

    Base64.encodeToString加密后一直和Apache的对不上,多了换行符,最后使用了NO_WRAP就好了 Base64.encodeToString(src, Base64.URL_SA ...