XTTS数据迁移方案

  • 前置条件检查

XTTS使用限制较多,V3版本按照本节逐项检查

    1. 目标库操作系统不能是windows

源库:redhut 7.9

目标库:redhut 7.9

    1. 检查数据库时区(两边都需要)

SQL> select dbtimezone from dual;

检查结果两边都一致

    1. 检查数据库时间

SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;

检查结果两边都一致

    1. 检查数据库字符集

SQL> set linesize 120

SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%';

检查结果两边都一致

    1. 检查目标端补丁情况

 select 'opatch',comments from dba_registry_history;

目标库需要比源库补丁高

    1. 检查两边组件安装

 SQL> Select comp_name from dba_registry;

如果两边安装了不一样的组件,请注意。

    1. 检查是否使用了 Key Compression 的索引组织表

 Select index_name,table_name from dba_indexes where compression='ENABLED';

    1. 检查sys和system用户在业务表空间上是否创建对象

SQL> select table_name, owner, tablespace_name from dba_tables where tablespace_name not in('SYSTEM','SYSAUX') and owner in ('SYS','SYSTEM');

如果数据库用户 SYS、SYSTEM 在业务表空间上创建有对象,则这些对象不能通过 XTTS 迁移,需要在目标库手工创建。

    1. 检查sys和system用户在业务表空间上是否创建对象

SQL> show parameter compatible;

如果目标端数据库版本是 19.0.0 或更低。那么需要在目标端装 19.0.0以上版本 并创建实例,然后用来进行备份集转换。如果 19.0.0以上版本 中转实例使用 ASM。那么 ASM 版本也必须是 19.0.0以上版本,否则报错 ORA-15295

    1. 确认生产库的recycle in功能是关闭,并手工清空回收站

SQL> show parameter recyclebin;

如果数据库这个功能没有关闭,我们需要去关闭一些

SQL> alter system set recyclebin='off' scope=spfile;

    1. 数据文件状态检查

SQL> Select distinct status from v$datafile;

正常返回应为:ONLINE、SYSTEM

    1. 查看v$transportable_platform检查平台信息

SQL> col PLATFORM_NAME format a50

SQL> select * from v$transportable_platform;

    1. 测试数据构建

可以查看《oracle数据库验证数据构造方案》

  • 数据迁移
    1. 创建源端和目标端用于存放备份数据文件夹

 pwd

mkdir xtts

ls

cd xtts/

ll

mkdir source_back

mkdir source_incr_back

mkdir target_data

mkdir target_back

mkdir target_incr_back

    1. 下载并解压rman_xttconvert_v3工具

unzip rman_xttconvert_v3.zip

[oracle@source xtts]$ ls

su

chmod -R 775 xtts/

ll

    1. 编辑和配置xtt.properties文件

tablespaces=MYTBS      # 表示需要迁移的表空间

platformid=13    # 表示源OS平台ID

#srclink=TTSLINK   #表示从目标库指向源库的db_link,由于这里采用的是rman方式,所以不需要db_link

dfcopydir=/u01/app/oracle/xtts/source_back #表示源库备份文件存放目录

backupformat=/u01/app/oracle/xtts/source_incr_back #表示源库增备文件存放目录

stageondest=/u01/app/oracle/xtts/target_back #表示目标库备份文件存放目录

storageondest=/u01/app/oracle/xtts/target_data  #表示目标库正式文件存放目录

backupondest=/u01/app/oracle/xtts/target_incr_back #表示目标库增备文件存放目录

parallel=3  #表示备份转化并行度

rollparallel=2 #表示增备的并行度

getfileparallel=4  #表示使用 dbms_file_transfer 方式的并行度

    1. 将源端xtts目录拷贝到目标端

scp -rp /u01/app/oracle/xtts/ root@192.168.238.21:/u01/app/oracle/xtts

    1. 设置源端和目标端的TMPDIR环境变量

su - oracle

vi .bash_profile

export TMPDIR=/u01/app/oracle/xtts

source .bash_profile

    1. 源端和目标端开启归档模式并且换日志

SQL> archive log list

目标端修改为归档模式

SQL> alter system switch logfile;

SQL> archive log list

    1. 源端执行如下命令开始初始备份

cd /u01/app/oracle/xtts/

$ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -p

    1. 源端查看备份文件,并将备份文件传到目标端

[oracle@oramig source_back]$  scp -p /u01/app/oracle/xtts/source_back/*  root@192.168.238.21:/u01/app/oracle/xtts/target_back

目标端给权限

    1. 将源端生成的rmanconvert.cmd文件传到目标端,并执行文件转换命令

scp -p rmanconvert.cmd root@192.168.238.21:/u01/app/oracle/xtts/

    1. 目标端执行如下命令

$ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -c

转换成功之后会生成 xttnewdatafiles.txt文件。

    1. 开始增量同步

SQL> alter tablespace MYTBS read only;

    1. 将最后的增备文件传到目标端

Pwd

$ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -i

cd source_incr_back/

Ls

scp -p 0f2ntcso_1_1 root@192.168.238.21:/u01/app/oracle/xtts/target_back

cd ..

scp -p xttplan.txt tsbkupmap.txt root@192.168.238.21:/u01/app/oracle/xtts

目标端修改权限

    1. 目标端应用增备

$ORACLE_HOME/perl/bin/perl /u01/app/oracle/xtts/xttdriver.pl -r

    1. 源端导出元数据

mkdir -p /u01/app/oracle/data

SQL> create directory source_dbdata as '/u01/app/oracle/data';

SQL> grant read,write on directory source_dbdata to system;

SQL> select * from dba_directories;

    1. 源端检查表空间的自包含性

SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('MYTBS', TRUE);

 

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

    1. 源端导出元数据

cd //u01/app/oracle/data

expdp system/123456 directory=source_dbdata dumpfile=MYTBS.dmp transport_tablespaces=MYTBS transport_full_check=y

ls

    1. 将导出的数据拷贝到目标端

scp -p /u01/app/oracle/data/MYTBS.dmp root@192.168.238.21:/u01/app/oracle/data

    1. 目标端导入元数据

创建zgc用户,但是不要创建表空间

SQL> create user zgc identified by 123456;

SQL> grant dba to zgc;

SQL> create directory t_dbdata as '/u01/app/oracle/data';

SQL> grant read,write on directory t_dbdata to zgc;

SQL> grant exp_full_database,imp_full_database to zgc;

目标端导入元数据

pwd

impdp zgc/123456 DUMPFILE=MYTBS.dmp DIRECTORY=t_dbdata TRANSPORT_DATAFILES=/u01/app/oracle/xtts/target_data/MYTBS_8.dbf ,/u01/app/oracle/xtts/target_data/MYTBS_9.dbf

    1. 目标端更改zgc默认表空间

SQL> alter user zgc default tablespace MYTBS;

更改表空间zgc状态为读写

SQL> ALTER TABLESPACE MYTBS read write;

    1. 源端目标端数据比较

源端

目标端

  • 问题分析
    1. 问题一

system 用户没设置密码 设置一下就行了

    1. 问题二

目标端创建zgc用户时

SELECT DEFAULT_TABLESPACE FROM USER_TABLESPACES WHERE USERNAME = ‘zgc’;

说无效的用户名

解决方法:

ALTER SESSION SET "_oracle_script"=true;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620625.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux的线程概念

目录 1.原理 2.线程的周边概念 3.创建线程的接口 1.pthread_create 2.pthread_join 3.pthread_detach 4.终止线程 5.C11封装的多线程库 4.线程库的大概结构 5.__thread(只能修饰内置类型) 6.线程的互斥 1.了解原理 2.加锁 1.接口 2.代码示…

医院一站式后勤管理系统 processApkUpload.upload 任意文件上传漏洞复现

0x01 产品简介 医院一站式后勤管理系统由南京博纳睿通软件科技有限公司开发的一款基于现代医院后勤管理理念的业务系统,产品结合后勤业务管理特点,通过管理平台将后勤管理业务予以系统化、规范化和流程化,从而形成一套构建于平台之上且成熟完善的后勤管理体系,并可在此体系…

Unity绘制地图

首先在项目/Assets文件夹下创建一个Tiles文件夹 在层级下点击鼠标右键选择2D对象选择瓦片地图创建Tilemap。 选择地图素材 如果素材需要裁剪,在检查器Sprite模式选择多个,点击Sprite Editor,选择切 ,选择类型Grid By Cell Count,…

CTFshow-PWN-Test_your_nc(pwn0-pwn4)

1、pwn0 连上,等它程序执行完你可以直接来到 shell 界面 执行命令,获取 flag ctfshow{294ffc57-ee28-40ea-8c74-4dfeaf89d1e7} 2、pwn1 提供一个后门函数,连上即可得到flag 下载附件,拉进 ubantu ,使用命令 checksec …

腾讯EdgeOne产品测评体验——多重攻击实战验证安全壁垒:DDoS攻击|CC压测|Web漏洞扫描|SQL注入

腾讯EdgeOne产品测评体验——实战验证安全壁垒:DDoS攻击|CC压测|Web漏洞扫描|SQL注入 写在最前面一、产品概述1.1 什么是边缘安全加速平台 EO?1.2 EdgeOne产品功能 二、准备工作2.1 选择:NS(Name Server)接入模式或 CN…

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅳ)其他配置项

github求⭐ vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅰ)配置项文档 vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅱ)搜索…

微信小程序认证指南及注意事项

如何认证小程序? 一、操作步骤 登录小程序后台: https://mp.weixin.qq.com/ (点击前往) 找到设置,基本设置; 在【基本信息】处有备案和认证入口; 点击微信认证的【去认证】; 按照步骤指引一步步填写信息&#xff…

【Css】table数据为空,以“-“形式展现

解决:class类名 它表示的是在一个名为class类名的元素内部,当该元素为空时,会在该元素的:before伪元素上应用一些样式。 这种写法通常用于在元素内容为空时,添加一些占位符或者提示文字

Python | Leetcode Python题解之第24题两两交换链表中的节点

题目: 题解: class Solution:def swapPairs(self, head: ListNode) -> ListNode:dummyHead ListNode(0)dummyHead.next headtemp dummyHeadwhile temp.next and temp.next.next:node1 temp.nextnode2 temp.next.nexttemp.next node2node1.next…

内网渗透-域环境的搭建

域环境的搭建 文章目录 域环境的搭建前言一、什么是域环境 什么是域内网基础知识点 二、域环境的搭建 1. 部署域结构2.如何加入域3.SRV出错及解决办法4.SRV记录注册不成功的可能原因 禁用域中的账户将计算机退出域添加域用户总结 前言 一、什么是域环境 什么是域 域是一种管…

Linux学习之路 -- 进程篇 -- PCB介绍 -- 进程的孤儿和僵尸状态

前面介绍了进程的各种状态,下面介绍比较特殊的两种状态 -- 孤儿和僵尸(僵死)。 一、僵尸状态 我们创建进程的目的其实就是想要进程帮我们执行一些任务,当任务被执行完后,进程的使命其实就已经完成了。此时我们就需要…

MCU的最佳存储方案CS创世 SD NAND

MCU的最佳存储方案CS创世 SD NAND 写在最前面MCU是什么CS创世 SD NAND 6大优势 写在最前面 转载自 雷龙官网 MCU是什么 大家都知道MCU是一种"麻雀"虽小,却"五脏俱全"的主控。它的应用领域非常广泛,小到手机手表,大到航空…