【TTS】基于RMAN迁移AIX平台数据库到Linux(第一篇)
发布日期:2021-06-30 13:33:09 浏览次数:2 分类:技术文章

本文共 6217 字,大约阅读时间需要 20 分钟。

感谢小麦苗同学的投稿,带给大家的是关于TTS的分享,当然这次的分享的一个亮点是基于rman来做,不会设置表空间为read only状态,实践意义很强

1.1   BLOG文档结构图

 

0?wx_fmt=png

1.1  前言部分

1.1.1  导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

① 异构平台下传输表空间的实施

② 传输表空间基于表空间的read only和rman2种方式

③ 平台字节序、自包含概念

④ expdp/impdp的应用

⑤ 数据库迁移一般情况下应该收集哪些信息及相应的脚本

  Tips

       ①若文章代码格式有错乱,推荐使用搜狗或360浏览器,也可以下载pdf格式的文档来查看,pdf文档下载地址:http://yunpan.cn/cdEQedhCs2kFz (提取码:ed9b) 

       ②本篇BLOG中命令的输出部分需要特别关注的地方我都用灰色背景和粉红色字体来表示,比如下边的例子中,thread 1的最大归档日志号为33,thread 2的最大归档日志号为43是需要特别关注的地方;而命令一般使用黄色背景和红色字体标注;对代码或代码输出部分的注释一般采用蓝色字体表示。

 

  List ofArchived Logs in backup set 11

  Thrd Seq    Low SCN    Low Time            Next SCN   Next Time

  ---- ------- ---------- ----------------------------- ---------

  1   32      1621589    2015-05-29 11:09:52 1625242    2015-05-29 11:15:48

  1    33     1625242    2015-05-29 11:15:481625293    2015-05-29 11:15:58

  2   42      1613951    2015-05-29 10:41:18 1625245    2015-05-29 11:15:49

  2    43     1625245    2015-05-29 11:15:491625253    2015-05-29 11:15:53

 

 

[ZFXDESKDB1:root]:/>lsvg -o

T_XDESK_APP1_vg

rootvg

[ZFXDESKDB1:root]:/>

00:27:22SQL> alter tablespace idxtbs read write;

 

 

====》2097152*512/1024/1024/1024=1G

 

本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。

1.2  相关知识点扫盲

可传输表空间的特性主要用于进行库对库的表空间复制,要进行传输的表空间必须置于read-only模式。如果生产库不允许表空间置为只读模式,没关系,方法还是有的,通过RMAN备份也可以创建可传输表空间集。要使用可传输表空间的特性,oracle至少是8i企业版或更高版本。如果是相同操作系统平台相互导入,则8i及以上版本均可支持,但如果是不同操作系统平台,数据库版本至少10g。被传输的表空间即可以是字典管理,也可以是本地管理。并且自oracle9i开始,被传输表空间的block size可以与目标数据库的block size不同。

可传输表空间(还有个集)最大的优势是其速度比export/import或unload/load要快的多。因为可传输表空间主要是复制数据文件到目标路径,然后再使用export/import或Data Pump export/import等应用仅导出/导入表空间对象的元数据到新数据库。

关于可传输表空间,还有个集(Transportable Tablespace Sets)的创建,其中都提到了很重要一点,就是被传输的表空间在传输过程中必须置为read-only。而在实际操作过程中,对于某些生产数据库,将表空间置为 read-only 是件非常复杂的事情甚至完全不允许,有了 RMAN 的 Transportable Tablespace,这一切都得以避免。RMAN 通过备份创建可传输表空间集,它并不需要存取活动的数据文件,相应也就不需要将表空间置为read-only。因此,数据库可用性得到提升,尤其对于超大的表空间,因为被传输的表空间在此期间仍可进行读写操作,而且把表空间置为 read-only 模式可能会花费较长时间,

使用 RMAN 创建可传输表空间集,允许你在传输过程中指定目标恢复时间点或 SCN,这样传输的数据可以更灵活,不必完全复制现有表空间,只要备份中存在,你就可以选择性的恢复数据。例如,你的备份策略为保留一周,你希望创建的可传输表空间中数据是截止本月底最后一天的数据,那么你在下个月第一周内任何时候都可以进行传输操作而不需要考虑这期间生产库是否会有写入操作。

1.2.1  注意事项

  注意:

① source和target database的数据库版本最好一致,否则会因为db time zone 不一致导致报如下错误,但是如果source大于等于target的话是可以的,向下兼容的

ORA-39002:invalid operation

ORA-39322: Cannot usetransportabletablespace with timestamp with timezone columns and differenttimezone version.

② source和target端的字符集必须一致,例如如下情况报错:

source为 ZHS16GBK,target为AL32UTF8

ORA-39123: Data Pumptransportable tablespace job aborted

ORA-29345: cannot plug atablespace into a database using an incompatible character set

Tartget db char set AL32UTF8is not a superset of ZHS16GBK.

Failed to plug in atablespace due to incompatible

  database character set"AL32UTF8"and

  transportable set database character set"ZHS16GBK"

 

    ③ source和target database的compatible 参数最好一致,但source如果小于等于target端的话是可以的,例如source为11.2.0.4.0,target为11.2.0.0.0就不行,impdp的时候报错:

ORA-39123: Data Pumptransportable tablespace job aborted

ORA-00721: changes by release11.2.0.4.0 cannot be used by release 11.2.0.0.0

1.3  实验部分

1.3.1  迁移环境介绍

项目

source db

target   db

db 类型

单实例

单实例

db version

11.2.0.3

11.2.0.3

db 存储

ASM

ASM

ORACLE_SID

oraSKY

oraSKY

db_name

ORASKY

ORASKY

主机IP地址:

22.188.139.33

192.168.59.30

OS版本及kernel版本

AIX 64位 5.3.0.0

RHEL6.5 64位,2.6.32-504.16.2.el6.x86_64

OS hostname

ZDMTRAIN2

rhel6_lhr

platform_name

AIX-Based Systems (64-bit)

Linux x86 64-bit

compatible

11.2.0.0.0

11.2.0.0.0

db time zone

14

14

字符集

AL32UTF8

AL32UTF8

归档模式

Archive Mode

Archive Mode

需迁移的SCHEMA个数

3 (T,XPADAD,TEST1)

3 (T,XPADAD,TEST1)

需迁移的TS个数

3 (USERS,XPADDATA,TEST_USER1)

3 (USERS,XPADDATA,TEST_USER1)

无效对象个数

0

0

数据文件路径

+DATA1/ora11g/datafile/

+DATA

日志及日志组情况

+DATA1/ora11g/onlinelog/group_3.388.936264969

+DATA1/ora11g/onlinelog/group_3.389.936264969

+DATA1/ora11g/onlinelog/group_2.386.936264967

+DATA1/ora11g/onlinelog/group_2.387.936264967

+DATA1/ora11g/onlinelog/group_1.384.936264967

+DATA1/ora11g/onlinelog/group_1.385.936264967

+DATA

控制文件

+DATA1/ora11g/controlfile/current.381.936264963,

+DATA1/ora11g/controlfile/current.383.936264963

+DATA

使用spfile还是pfile

spfile

spfile

需要迁移的库的实际大小

100M

表空间总大小

14G

需要copy到target端的文件大小

450M

1.3.2  实验目标

在实际的工作过程中,需要将AIX上的数据库迁移到Linux,或者将Linux上的数据库迁移到AIX上,除了exp/imp和expdp/impdp外,最常用的就是传输表空间了,若是整个库迁移的话,我们需要做的就是把业务用户和业务表空间的数据迁移过来就行,Undo、temp、system等等的就不用迁移了,整个处理过程和本文档的处理过程大同小异,需要关注的是业务对象的个数、大小、状态等,本文档要实现将AIX上的数据库oraSKY从源平台传递到目标平台Linux上。

1.3.3  实验过程

-------------------------------------------------------------------------------------------------------------

第2章   AIX平台数据库迁移到Linux--基于RMAN(真实环境)

2.1   源库信息收集

1.1   源库信息收集

1.1.1  先跑一下健康检查(可选)

根据我自己写的脚本,在源库上跑一下健康检查,主要为了收集一下源库的信息,脚本可以找我私聊

1.1.2  表空间及数据文件情况

1.1.2.1  表空间大小

0?wx_fmt=png

 由此可以看出,真正迁移的数据大约为100M,但是表空间有14G,就是说本地文件最少需要14G+100M的空间才能完成后续的操作。

1.1.2.2  需要传输的数据文件大小

0?wx_fmt=png

也就是说最终需要拷贝到target端的数据文件大小为450M。

schema对象大小、个数、列表)

0?wx_fmt=png1.1.3.2  用户权限

0?wx_fmt=png1.1.3.3  用户表大小

0?wx_fmt=png

1.1.3.4  对象个数

0?wx_fmt=png1.1.3.5  对象详细信息

---- 以下数据导出到excel表格备份

 SELECT d.OWNER, d.OBJECT_NAME, d.SUBOBJECT_NAME,d.OBJECT_TYPE,d.status

  FROMdba_objects d

 WHEREd.OWNER   in ('T','XPADAD','TEST1')

 and d.OWNER notin ('PUBLIC')

 ANDNOTEXISTS (SELECT1FROMDBA_RECYCLEBIN B WHEREB.object_name=D.OBJECT_NAME AND D.OWNER=B.owner)

 ORDERBY D.OWNER ;

 

  SELECT d.owner,

       d.segment_name,

       d.partition_name,

       d.segment_type,

       d.tablespace_name,

       d.BYTES

  FROMdba_segments d

 WHEREd.OWNER  in ('T','XPADAD','TEST1')

 ANDNOTEXISTS (SELECT1FROMDBA_RECYCLEBIN B WHEREB.object_name=D.segment_name AND D.OWNER=B.owner) 

 ORDERBY D.OWNER ;

 

1.1.4  无效对象情况

 SELECT ownerowner,

       count(1)

  FROMdba_objects   d

 WHERE status <> 'VALID'

 and  d.OWNER in ('T','XPADAD','TEST1') 

 AND D.OWNER NOTIN ('PUBLIC')

 groupby d.OWNER

 ORDERBY owner

 SELECT ownerowner,

       object_name,

       object_type,

       status,

       'alter ' || decode(object_type,

                          'PACKAGEBODY',

                          'PACKAGE',

                          'TYPE BODY',

                          'TYPE',

                         object_type) || ' ' || owner || '.' ||

       object_name || ' ' ||

       decode(object_type, 'PACKAGE BODY','compile body','compile') || ';' hands_on

  FROM dba_objects   d

 WHERE status <> 'VALID'

 and  d.OWNER in ('T','XPADAD','TEST1') 

 ORDERBY owner, object_name;

1.1.5  索引情况

SELECT D.OWNER,COUNT(1)

  FROMdba_indexes d

 WHERE d.OWNER in ('T','XPADAD','TEST1')

 and d.OWNER notin ('PUBLIC')

 ANDNOTEXISTS (SELECT1FROMDBA_RECYCLEBIN B WHEREB.object_name=D.index_name AND D.OWNER=B.owner)

 GROUP BY D.OWNER

 ORDER BY D.OWNER ;

 

1.1.6  确定是否有业务数据、脚本在例如sys用户等的默认用户下

跟开放确认是否有业务数据表在sys等默认用户下,若有是否需要迁移。

后续还会有下一篇分享,再次感谢小麦苗。

转载地址:https://jeanron100.blog.csdn.net/article/details/102507309 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:system表空间不足的问题分析(二) (r8笔记第5天)
下一篇:一条关于swap争用的报警邮件分析(二)(r8笔记第4天)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月19日 14时03分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章