迁移式升级的测试(二)

简介: 在之前写的一篇博文中,自己是打算对一台数据库使用Data Guard+TTS的方式来完成数据迁移和升级的工作,整体的思路如下。 备库Failover之后,导出元数据,然后同一台服务器上的11g的数据库中导入元数据,这样就避免了传输文件的时间消耗。
在之前写的一篇博文中,自己是打算对一台数据库使用Data Guard+TTS的方式来完成数据迁移和升级的工作,整体的思路如下。


备库Failover之后,导出元数据,然后同一台服务器上的11g的数据库中导入元数据,这样就避免了传输文件的时间消耗。从而达到快速迁移升级的目的。
具体的操作步骤如下所示:
1.在备库端需要开启闪回
这个也是为了能够在迁移失败的情况下,能够迅速回退,马上重构主备库的环境。
2.在开启闪回数据库之后,记录一下SCN的信息,留作后面备用。
   select current_scn from v$database;
       CURRENT_SCN
------------------
      228967862801
3.开始备库切换
在备库端进行Failover的操作。整个过程分分钟即可完成。这个过程需要保证主库端的数据能够及时更新过来。
    alter database recover managed standby database finish force;
    alter database commit to switchover to primary;
 select database_role,open_mode from v$database;
4.在开始迁移前,做一个完整的检查,这是迁移的重中之重,如果迁移的表空间很多,可以直接放到脚本里面来统一处理也可以。
exec dbms_tts.transport_set_check(TS_LIST=>'STORELOG_DATA,STORELOG_INDX,USERS,GHOSTOL_DATA,GHOSTOL_INDEX,TEST_DATA,TEST_INDEX,PERFSTAT,TS_AUDIT,STAT_POINT,TEST_MV_DATA,TEST_MV_INDEX,TEST_AUDIT_DATA,JYCX_DATA,OEM_DATA,TEST_INDEX2,TEST_INDEX3,SWDONLINE_DATA,SWDONLINE_INDX,OEM_MON_TEST,USERCENTER_DATA',INCL_CONSTRAINTS=>TRUE,full_check=>true);
查看检查的结果:
select *from transport_set_violations;
------------------------------------------------------------------------------------------------------------------------ Sys owned object  SYS_LOB0000133356C00040$$ in tablespace TS_AUDIT not allowed in pluggable set
可以看到这个例子中还是违反自包含约束的情况,从日志能够看出,主要是和aud$的处理相关。
经过确认,MARKET_ANGEL_USEDUP是个索引,但是属主存在问题,可以在迁移的时候直接重建。
sys@TEST> drop index MARKET_ANGEL_USEDUP;
Index dropped.
sys@TEST> create index TEST.MARKET_ANGEL_USEDUP on TEST.MARKET_ANGEL("USED_UP") tablespace TEST_index;
Index created.
另外的几个表 TEST_WEAPON,TMP_CNINFO_XTG_20081212,AUD$_20120608是临时表,可以直接删除。
drop table TEST_WEAPON;
drop table TMP_CNINFO_XTG_20081212;
drop table AUD$_20120608;
最后的注意力就到了aud$,可以看到这个表是在之前因为考虑到数据量较大,直接迁移到一个独立的表空间了,在这个例子中为了保证迁移的顺利,可以先把aud$迁移到sysaux里面,迁移完成之后再处理即可。数据量不大的情况下直接move tablespace即可,如果里面的数据可以删除,直接truncate即可。
truncate table aud$;
alter table aud$ move tablespace sysaux;
这个时候查看检查信息,还是存在下面的一些提示信息。

这个时候可以查看LOB的具体信息,发现是AUD$里面的一个LOB列,单独迁移即可。
SQL> select table_name,column_name,tablespace_name,index_name from user_lobs where index_name='SYS_IL0000011218C00041$$'

SQL>alter table aud$ move tablespace sysaux lob(SQLTEXT) store as lobsegment(tablespace sysaux);
另外一个LOB也是同样的处理。
SQL> alter table aud$ move tablespace sysaux lob(SQLBIND) store as lobsegment2(tablespace sysaux);
对于其他的对象,如果不是LOB列,那很可能就是回收站里的对象了,直接删除即可。
sys@TEST> select table_name,column_name,tablespace_name,index_name from user_lobs where segment_name='SYS_LOB0000133356C00041$$';

sys@TEST> show recyclebin

SQL>purge recyclebin;
 
对于aud$上面的索引可以直接rebuild即可达到效果。
alter index I_AUD2 rebuild tablespace sysaux;
再次检查阿九没有任何问题了。
PL/SQL procedure successfully completed.
no rows selected
5.接下来的工作就是把表空间置为READ ONLY状态。
alter tablespace USERS read only;
alter tablespace TS_AUDIT read only;
alter tablespace GHOSTOL_DATA read only;
alter tablespace GHOSTOL_INDEX read only;
alter tablespace TEST_DATA read only;
alter tablespace TEST_INDEX read only;

6.导出10g数据库的元数据信息,标注为迁移表空间的方式。
exp \'sys/oracle as sysdba\' file=exp_tts_TEST.dmp transport_tablespace= y tablespaces=USERS,GHOSTOL_DATA,GHOSTOL_INDEX,TEST_DATA,TEST_INDEX,PERFSTAT,STAT_POINT,TEST_MV_DATA,TEST_MV_INDEX,TEST_AUDIT_DATA,JYCX_DATA,OEM_DATA,TEST_INDEX2,TEST_INDEX3,SWDONLINE_DATA,SWDONLINE_INDX,STORELOG_DATA,STORELOG_INDX,OEM_MON_TEST,USERCENTER_DATA log=exp_tts_TEST.log

7.在11g的新库中可以尝试建立相应的用户,这里有几个地方需要注意。
理论上可以通过impdp来完成用户信息的导入,但是这个步骤建议还是手工处理,从10g的库上导出用户的DDL语句,简单修改。
原因在于默认表空间在新库上存在,如果存在PROFILE的资源设置,很可能导入失败。可以批量生成语句,简单修改即可。
   CREATE USER "TEST" IDENTIFIED BY VALUES '5F712A8369686639'
      DEFAULT TABLESPACE "TEST_DATA"
      TEMPORARY TABLESPACE "TEMP"
      PROFILE "PF_TEST" ;

后续来继续解读这个迁移的过程。整个过程会是一个完整的演练过程,碰到的问题越多,解决的越多。迁移的时候越顺利。
目录
相关文章
|
5月前
|
SQL 存储 Oracle
跨库迁移有多难?我们用 YashanDB YMP 做了个测试,效果惊艳了
异构数据库迁移常被视为企业数字化转型中的难题,涉及SQL兼容性、对象依赖顺序与数据一致性等关键环节。YashanDB Migration Platform(YMP)通过实际测试展示了卓越能力,从Oracle到YashanDB的迁移表现超预期。其亮点包括:零脚本全自动迁移逻辑、全面支持复杂对象(如存储过程、触发器)、高性能迁移速度远超传统方案。YMP提供评估、SQL转换、对象迁移、数据校验及可视化全流程管理,为企业平滑过渡至国产数据库提供了可靠选择。
跨库迁移有多难?我们用 YashanDB YMP 做了个测试,效果惊艳了
|
6月前
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
11月前
|
存储 消息中间件 运维
架构升级的救星!流量回放自动化测试的必备指南
大家好,我是小米,一名29岁的技术宅。今天分享一个物联网领域的实用技能——流量回放自动化测试。系统重构后,测试工作量巨大,本文介绍如何通过日志收集和数据回放进行自动化测试,包括离线、实时和并行回放模式,帮助快速定位Bug,提升测试效率和系统稳定性。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
331 3
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
178 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
11月前
|
弹性计算 网络协议 Linux
云服务器评估迁移时间与测试传输速度
云服务器评估迁移时间与测试传输速度
|
关系型数据库 MySQL 测试技术
数据库升级是一个涉及数据备份、新版本安装、数据迁移和测试等关键环节的复杂过程
【7月更文挑战第21天】数据库升级是一个涉及数据备份、新版本安装、数据迁移和测试等关键环节的复杂过程
315 1
|
运维 测试技术
测试如何快速升级打怪?
测试如何快速升级打怪?
测试如何快速升级打怪?
|
3月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
721 23
|
8月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。