当前位置: 首页 > news >正文

XTTS基于rman全量迁移Oracle

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.XTTS简介
    • 📣 2.XTTS迁移
      • ✨ 2.1 迁移环境
      • ✨ 2.2 数据库检查
    • 📣 3.全量迁移
      • ✨ 3.1 源端和目标端配置XTTS脚本
      • ✨ 3.2 修改xtt.properties参数
      • ✨ 3.3 源端迁移准备
      • ✨ 3.4 源端转移到目标端
      • ✨ 3.5 目标端字节序转换
    • 📣 4 迁移元数据
      • ✨ 4.1 在目标库创建业务用户
      • ✨ 4.2 导入xtts的元数据
    • 📣 5 迁移后收尾工作
      • ✨ 5.1 数据一致性
      • ✨ 5.2 迁移后的对象
      • ✨ 5.3 收集统计信息

前言

最近客户应客户需求,基于rman实现XTTS基于rman全量迁移Oracle,分享给大家

📣 1.XTTS简介

XTTS(Cross Platform Transportable Tablespaces)属于跨平台迁移表空间,它是从Oracle 8i开始就引入的一种基于表空间传输的物理迁移方法,命名为TTS,经历各个版本的不断演进,从11gR2开始,在相对停机时间要求日益减少的情况,为了应对越来越大的数据量跨平台迁移,Oracle推出了新的解决方案—加强版TTS(以下简称XTTS),XTTS使用增量备份的方式实现跨平台的数据迁移,从真正意义上大大缩短停机时间。在U2L如火如荼的今天,通过XTTS快捷、高效、平稳、安全的将Oracle数据库“小型机+集中式存储”环境迁移至“X86架构平台+分布式存储”已然成为一大神技。

“U2L”(Unix to Linux的简称),即企业用户将应用从“小型机+Unix”架构迁往“x86服务器+Linux”架构

在这里插入图片描述

📣 2.XTTS迁移

✨ 2.1 迁移环境

在这里插入图片描述

✨ 2.2 数据库检查

1、查询平台、字节序、字符集
col PLATFORM_NAME format a30
SELECT d.PLATFORM_ID,d.PLATFORM_NAME, tp.ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

PLATFORM_ID PLATFORM_NAME                  ENDIAN_FORMAT
----------- ------------------------------ --------------
         13 Linux x86 64-bit               Little

--字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

2.业务表空间和业务用户
--源端排除系统表空间、默认表表空间,避免冲突

select TABLESPACE_NAME,BLOCK_SIZE,CONTENTS,STATUS
from dba_tablespaces
where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP','EXAMPLE','USERS');

TABLESPACE_NAME                BLOCK_SIZE CONTENTS  STATUS
------------------------------ ---------- --------- ---------
MES_TBS                              8192 PERMANENT ONLINE
OGG_TBS                              8192 PERMANENT ONLINE

3、表空间自包含
需要传输的表空间为MES_TBS、OGG_TBS,要确保这2个表空间为自包含的表空间
表空间自包含的含义:自包含是指当前表空间集中的对象不依赖表空间集之外的对象

-- 自包含检查(源库操作)
SQL> exec dbms_tts.transport_set_check('MES_TBS,OGG_TBS',true);
PL/SQL procedure successfully completed.

4.迁移对象个数统计
需要确认,非业务用户下是否有业务数据,例如SYS用户是否有业务数据,源库操作

-- 需要迁移的对象和数量
SQL> set pagesize 999
select owner, object_type, count(*)
from dba_objects
where object_name not like 'BIN%'
and owner in ('SCOTT','OGG')
group by owner, object_type
order by 1,2 desc;

5. 无效对象
select owner, object_type, count(*)
from dba_objects
where status <> 'VALID'
and owner in ('SCOTT','OGG')
group by owner, object_type
order by 1, 2 desc;

6、开启块改变跟踪功能
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING  FILE '/u01/app/oracle/changetracking.chg';
SQL> select status, filename from v$block_change_tracking;

📣 3.全量迁移

✨ 3.1 源端和目标端配置XTTS脚本

rm -rf /u01/app/xtts/
rm -rf /home/oracle/scripts

mkdir -p /u01/app/xtts/inc_bk
mkdir -p /u01/app/xtts/df_bk

mkdir -p /home/oracle/scripts
cd /home/oracle/scripts

[root@rhel64 ~]# cp rman_xttconvert_V3.zip /home/oracle
[root@rhel64 ~]# chown oracle:oinstall /home/oracle/rman_xttconvert_V3.zip

[oracle@rhel64 ~]$ cp ~/rman_xttconvert_V3.zip /home/oracle/scripts
[oracle@rhel64 ~]$ cd scripts

✨ 3.2 修改xtt.properties参数

cat > /home/oracle/scripts/xtt.properties  <<"EOF"
tablespaces=MES_TBS,OGG_TBS
platformid=13
dfcopydir=/u01/app/xtts/df_bk
backupformat=/u01/app/xtts/inc_bk
stageondest=/u01/app/xtts/df_bk
storageondest=/u01/app/oracle/oradata/MES
backupondest=/u01/app/xtts/inc_bk
#srcdir=SOURCEDIR
#dstdir=DESTDIR
#srclink=ttslink
#cnvinst_home=/oracle/app/oracle/product/11.2.0/dbhome_1
#cnvinst_sid=targetdb
EOF

✨ 3.3 源端迁移准备

cd /home/oracle/scripts
export TMPDIR=/home/oracle/scripts
$ORACLE_HOME/perl/bin/perl xttdriver.pl -p

在这里插入图片描述

✨ 3.4 源端转移到目标端

[oracle@rhel64 ~]$ scp /u01/app/xtts/df_bk/* 192.168.1.58:/u01/app/xtts/df_bk/
[oracle@rhel64 ~]$ scp /home/oracle/scripts/rmanconvert.cmd 192.168.1.58:/home/oracle/scripts/

✨ 3.5 目标端字节序转换

cd /home/oracle/scripts
export TMPDIR=/home/oracle/scripts
$ORACLE_HOME/perl/bin/perl xttdriver.pl -c

在这里插入图片描述

📣 4 迁移元数据

✨ 4.1 在目标库创建业务用户

create user SCOTT identified by jem;
create user OGG identified by jem;
grant dba to SCOTT,OGG;

✨ 4.2 导入xtts的元数据

-- 利用dblink直接迁移元数据,这里只会迁移表、索引、约束等,因为其它对象存储在系统表空间中
impdp system/oracle directory=DATA_PUMP_DIR logfile=tts_imp_mes.log \
network_link=ttslink transport_full_check=no \
EXCLUDE=STATISTICS  \
transport_tablespaces=MES_TBS,OGG_TBS \
transport_datafiles='/u01/app/oracle/oradata/MES/MES_TBS_5.dbf','/u01/app/oracle/oradata/MES/OGG_TBS_6.dbf'

--导入存储过程、触发器、函数、包、视图、序列
impdp system/oracle directory=DATA_PUMP_DIR \
network_link=ttslink schemas=SCOTT,OGG content=metadata_only exclude=index,table,constraint parallel=8

--导入公共同义词和dblink等其它对象
源库查询共有同义词
set long 9999
select dbms_metadata.get_ddl('SYNONYM',SYNONYM_NAME,OWNER) 
FROM dba_synonyms 
where owner='PUBLIC' and table_owner in  ('SCOTT','OGG');

源库查询dblink
set long 9999
select dbms_metadata.get_ddl('DB_LINK',DB_LINK,OWNER) 
FROM DBA_DB_LINKS;

📣 5 迁移后收尾工作

✨ 5.1 数据一致性

SQL> select count(*) from scott.emp_test11;

  COUNT(*)
----------
        14
SQL> select count(*) from scott.emp_test;

  COUNT(*)
----------
        14
        
确认后,源库和目标库信息一致

✨ 5.2 迁移后的对象

select owner, object_type, count(*)
from dba_objects
where object_name not like 'BIN%'
and owner in ('SCOTT','OGG')
group by owner, object_type
order by 1,2 desc;

OWNER                          OBJECT_TYPE           COUNT(*)
------------------------------ ------------------- ----------
OGG                            VIEW                        14
OGG                            TYPE                         2
OGG                            TABLE                       39
OGG                            SEQUENCE                     3
OGG                            RULE SET                    10
OGG                            RULE                         8
OGG                            QUEUE                        6
OGG                            PROCEDURE                    2
OGG                            LOB                         15
OGG                            JOB                          2
OGG                            INDEX                       45
OGG                            FUNCTION                     1
OGG                            EVALUATION CONTEXT           3
SCOTT                          TABLE                        3

✨ 5.3 收集统计信息

exec dbms_stats.gather_database_stats(degree => 8);
exec dbms_stats.gather_dictionary_stats(degree => 8);
exec dbms_stats.gather_fixed_objects_stats();

相关文章:

  • [LeetCode]-使用特殊算法的题目-2
  • 比较CPU和GPU中的矩阵计算
  • 【数据结构】树形结构——线索二叉树
  • 突如其来的第一个1024要笑着过
  • 2022年都快结束了,Java的这些新技术、热门技术,你不会还不知道吧?
  • 【Linux】Linux文件权限的理解
  • 力扣(LeetCode)2008. 出租车的最大盈利(C语言)
  • 【正点原子I.MX6U-MINI应用篇】5、嵌入式Linux在LCD上显示BMP、JPG、PNG图片
  • 四非到保研厦大,我们还有多少路要走----技术人的保研之路
  • 美团Leaf分布式ID源码启动部署
  • 归一化小程序
  • 走过岁月我才发现——云IDE真方便(Python3.8环境测试)
  • SpringBoot核心技术 之 基础入门
  • Linux下编译工具:gcc/g++ の最全使用教程
  • 【计算机视觉】imutils的基本使用
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • JS基础之数据类型、对象、原型、原型链、继承
  • vue:响应原理
  • Xmanager 远程桌面 CentOS 7
  • 产品三维模型在线预览
  • 坑!为什么View.startAnimation不起作用?
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 原生 js 实现移动端 Touch 滑动反弹
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #android不同版本废弃api,新api。
  • #Java第九次作业--输入输出流和文件操作
  • #数学建模# 线性规划问题的Matlab求解
  • (9)STL算法之逆转旋转
  • (a /b)*c的值
  • (zt)最盛行的警世狂言(爆笑)
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (黑马C++)L06 重载与继承
  • (六)激光线扫描-三维重建
  • (没学懂,待填坑)【动态规划】数位动态规划
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ../depcomp: line 571: exec: g++: not found
  • .bashrc在哪里,alias妙用
  • .jks文件(JAVA KeyStore)
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net Core 中间件验签
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net core使用ef 6
  • .NET/C# 使用反射注册事件
  • .NET分布式缓存Memcached从入门到实战
  • .NET性能优化(文摘)
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • [C#]C#学习笔记-CIL和动态程序集
  • [C/C++]数据结构 循环队列
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件