生产上遇到一个迁移场景,大概1T数据量左右,由于没用XTTS做过迁移,所以准备尝试一下,本次迁移采用XTTS(增强传输表空间) V3版本的DBMS_FILE_TRANSFER方式。
一、源库及目标库情况
从目标库及源库情况来看,选用XTTS并不是个好选择。XTTS主要还是用在跨平台、跨版本且数据量大的场景下,当前的场景:服务器间网络传输速率高用DataPump的netlink方式最简单,用DG停机时间可以做到最短。
| 源库 | 目标库 | |
|---|---|---|
| IP地址 | 10.0.11.XXX | 10.0.14.XXX |
| 系统版本 | CentOS 5.7 | CentOS Linux release 7.6.1810 (Core) |
| 数据库版本 | 11.2.0.3.0 | 11.2.0.4.181016 (28204707) |
| 字符集 | AL32UTF8 | AL32UTF8 |
| 实例名 | XKORG | XKORG |
| CPU | 16 | 16 |
| 内存(GB) | 32 | 32 |
| 数据量GB | 1000 |
要迁移的表空间:USERS、ORCLTBS
二、参考文档
mos 1389592.1
三、迁移流程
3.1 前置条件检查
XTTS使用限制较多,V3版本按照本节逐项检查
3.1.1 目标库操作系统不能为Window
源库:CentOS 5.7
目标库:CentOS Linux 7.6.1810
3.1.2 源库必须在10.2.0.3 版本或以上
sqlplus -v
源库版本:Release 11.2.0.3.0 Production
3.1.3 源库的compatible 兼容性参数在 10.2.0 或以上
show parameter compatible
检查结果:11.2.0.0.0
3.1.4 源库的compatible 参数必须不能比目标库大(向下兼容)
show parameter compatible
源库:11.2.0.0.0
目标库:11.2.0.4.0
3.1.5 源库必须处于归档模式
archive log list
检查结果:已在归档模式下
3.1.6 目标库必须是11.2.0.4或以上
sqlplus -v
检查结果:11.2.0.4.0
3.1.7 rman备份策略应该是备份到disk
检查结果:

3.1.8 rman备份不能启用压缩
show all
检查结果:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
3.1.9 要被传输的表空间必须是online不能包含离线的数据文件
select file_name,online_status from dba_data_files t where t.online_status not in ('ONLINE','SYSTEM');
select tablespace_name,status from dba_tablespaces t where t.status<> 'ONLINE';
检查结果:均为online状态
3.1.10 源库和目标库字符集需要保持一致(包括国家字符集)
select * from nls_database_parameters t where t.parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
检查结果:源库、目标库均为:

3.1.11 目标库db_files参数必须大于源库
show parameter db_files
源库:200
目标库:200
目标库不符合要求,修改
alter system set db_files=500 scope=spfile;
3.1.12 确定SYS及SYSTEM下是否存在业务对象
见3.2.2
3.1.13 SYS、SYSTEM 用户是否有对象存在于业务表空间
见3.2.2
3.1.14 检查是否存在外部表
SELECT DISTINCT owner FROM DBA_EXTERNAL_TABLES;
select owner, TABLE_NAME, DEFAULT_DIRECTORY_OWNER, DEFAULT_DIRECTORY_NAME from DBA_EXTERNAL_TABLES;
检查结果:

3.1.15 检查表加密列信息\加密表空间
SELECT owner, table_name, COUNT(*) FROM DBA_ENCRYPTED_COLUMNS GROUP BY owner, table_name;
SELECT tablespace_name, ENCRYPTED FROM dba_tablespaces WHERE ENCRYPTED = 'YES';
检查结果:

3.1.16 检测数据库时区、TIMEZONE,保证源库目标库一致
select dbtimezone from dual;
select name,value$ from props$ where name ='DST_PRIMARY_TT_VERSION';
检查结果:源库、目标库均为

3.1.17 源库开启块跟踪,并修改bct隐藏参数
alter database enable block change tracking using file '/u02/data/XKORG/trace.log';
select status, filename from v$block_change_tracking;
alter system set "_bct_bitmaps_per_file"=100;
启动BCT后,XTTS使用tracking file里的信息,只需要读取改变的数据块信息,而不用再对全部数据文件进行扫描,从而提高了XTTS增量备份的性能。

3.1.18 目标库UNDO表空间配置
搞大点
select * from v$dbfile;
alter database datafile 3 resize 32766m;
3.1.19 目标库TEMP表空间配置
alter tablespace TEMP add tempfile '/oradata/datafile/XKORG/temp02.dbf' size 20G autoextend on;
3.1.20 目标库USER表空间配置··
需要传输的表空间中包含USER,需要将目标库USER替换为users_back
create tablespace users_back datafile '/oradata/datafile/XKORG/users_back.dbf' size 10m;
alter database

本文详细记录了一次使用XTTS(增强传输表空间)进行1TB数据量的Oracle数据库迁移过程。涉及源库和目标库的系统版本、字符集、表空间等信息检查,以及迁移前的前置条件、初始化设置、准备、前滚、传输等阶段的操作步骤。在迁移过程中,重点关注了网络传输、数据库版本、表空间状态、字符集一致性、增量备份和统计信息收集等关键环节。
最低0.47元/天 解锁文章
2635





