签到成功

知道了

CNDBA社区CNDBA社区

Oracle TTS异构平台传输表空间 [单实例(11.2.0.4) --> RAC(18.4) PDB迁移] 操作示例

2021-02-05 19:39 186 0 原创 Oracle 19c
作者: Dave

在上篇我们看了单实例之间的TTS 操作示例,如下:

Oracle 11g 单实例 TTS(异构平台传输表空间) 操作示例
https://www.cndba.cn/dave/article/4392https://www.cndba.cn/dave/article/4394

传输表空间的的使用限制也需要注意:https://www.cndba.cn/dave/article/4394

Oracle 传输表空间(TTS) 的限制与局限性
https://www.cndba.cn/dave/article/4390

简单的说传输表空间有如下限制:

1)源和目标数据库必须使用相同的字符集和国家字符集;
2)目标数据库不能已经包含同名的表空间;
3)目标数据库中必须已经存在传输表空间中对象的用户
4)传输表空间必须是自包含的,否则需要相关的表空间一起传输,比如:表在一个表空间,而索引在另外一个表空间,这两个表空间必须一起传输.
5)传输表空间无法处理同义词、用户、权限

https://www.cndba.cn/dave/article/4394

本篇我们来演示下跨版本的单实例迁移到高版本的RAC。

源端:windows,11.2.0.4, 单实例
目标端:Linux,18.4, RAC集群

1 源端环境说明

PS C:/WINDOWS/system32> sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on 星期五 2月 5 18:10:26 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select name,dbid from v$database;

NAME                     DBID
------------------ ----------
CNDBA               328181787

SQL> col file_name for a50
SQL> set lines 120
SQL> col tablespace_name for a20
SQL> select file_id,file_name,tablespace_name from dba_data_files;

   FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- --------------------
         4 D:/APP/ZHIXIN/ORADATA/CNDBA/USERS01.DBF            USERS
         3 D:/APP/ZHIXIN/ORADATA/CNDBA/UNDOTBS01.DBF          UNDOTBS1
         2 D:/APP/ZHIXIN/ORADATA/CNDBA/SYSAUX01.DBF           SYSAUX
         1 D:/APP/ZHIXIN/ORADATA/CNDBA/SYSTEM01.DBF           SYSTEM
         5 D:/APP/ZHIXIN/ORADATA/CNDBA/EXAMPLE01.DBF          EXAMPLE
         6 D:/APP/ZHIXIN/ORADATA/CNDBA/DAVE6.DBF              CNDBA
         7 D:/APP/ZHIXIN/ORADATA/CNDBA/DAVE5.DBF              CNDBA

已选择7行。

SQL> select count(1) from cndba.dave;

  COUNT(1)
----------
    173925

SQL>

我们这里将CNDBA 表空间迁移到RAC平台。

2 查看平台 endian format (byte ordering)和字符集

SQL> set pages 200
SQL> COLUMN PLATFORM_NAME FORMAT A40
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;

PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT
----------- ---------------------------------------- ----------------------------
          1 Solaris[tm] OE (32-bit)                  Big
          2 Solaris[tm] OE (64-bit)                  Big
          7 Microsoft Windows IA (32-bit)            Little
         10 Linux IA (32-bit)                        Little
          6 AIX-Based Systems (64-bit)               Big
          3 HP-UX (64-bit)                           Big
          5 HP Tru64 UNIX                            Little
          4 HP-UX IA (64-bit)                        Big
         11 Linux IA (64-bit)                        Little
         15 HP Open VMS                              Little
          8 Microsoft Windows IA (64-bit)            Little
          9 IBM zSeries Based Linux                  Big
         13 Linux x86 64-bit                         Little
         16 Apple Mac OS                             Big
         12 Microsoft Windows x86 64-bit             Little
         17 Solaris Operating System (x86)           Little
         18 IBM Power Based Linux                    Big
         19 HP IA Open VMS                           Little
         20 Solaris Operating System (x86-64)        Little
         21 Apple Mac OS (x86-64)                    Little

20 rows selected.

--也可以直接查询当前平台:
SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;  

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


SQL> select userenv('LANGUAGE') FROM DUAL;

USERENV('LANGUAGE')
--------------------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

Linux 和Windows 都是Little,Unix 都是Big。

3 检查表空间自包含

在执行传输之前必须确保这一步通过,否则无法正常进行传输表空间。

SQL>  execute sys.dbms_tts.transport_set_check('CNDBA', true);

PL/SQL procedure successfully completed.

SQL> select * from sys.transport_set_violations;

no rows selected

4 导出元数据

在执行导出之前,必须先将表空间设置为只读模式:https://www.cndba.cn/dave/article/4394

SQL> alter tablespace cndba read only;
Tablespace altered.

使用expdp/impdp 进行元数据的导出导入,这里要注意点,对于海量数据(T+级别),导出导入时在处理统计信息时可能需要数小时的时间,所以在处理海量数据时建议直接排除统计信息:EXCLUDE=TABLE_STATISTICS, INDEX_STATISTICS。

https://www.cndba.cn/dave/article/4394

SQL> CREATE OR REPLACE DIRECTORY dpump_dir AS 'G:/tmp';
目录已创建。
SQL> GRANT READ,WRITE ON DIRECTORY dpump_dir TO system;
授权成功。

SQL>

PS C:/Users/zhixin> expdp system/oracle DUMPFILE=cndba.dmp DIRECTORY = dpump_dir TRANSPORT_TABLESPACES= CNDBA TRANSPORT_FULL_CHECK=Y EXCLUDE=TABLE_STATISTICS, INDEX_STATISTICS

Export: Release 11.2.0.4.0 - Production on 星期五 2月 5 18:23:17 2021

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/******** DUMPFILE=cndba.dmp directory=dpump_dir transport_tablespaces= TRANSPORT_FULL_CHECK=Y EXCLUDE=TABLE_STATISTICS INDEX_STATISTICS
处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_EXPORT/TABLE
处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
  G:/TMP/CNDBA.DMP
******************************************************************************
可传输表空间 CNDBA 所需的数据文件:
  D:/APP/ZHIXIN/ORADATA/CNDBA/DAVE5.DBF
  D:/APP/ZHIXIN/ORADATA/CNDBA/DAVE6.DBF
作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已于 星期五 2月 5 18:23:53 2021 elapsed 0 00:00:36 成功完成

PS C:/Users/zhixin>

5 传输文件

将上部导出的元数据dump 文件和表空间对应的datafile 复制到目标端。 我们这里随便找一个节点即可。 因为RAC 环境要放到ASM磁盘组中,所以数据文件是临时存放的,路径没有要求。我们这里都放到/tmp/cndba目录下。

[oracle@www.cndba.cn1 tmp]$ cd cndba/
[oracle@www.cndba.cn1 cndba]$ pwd
/tmp/cndba
[oracle@www.cndba.cn1 cndba]$ ll
total 41080
-rw-r--r-- 1 oracle oinstall   102400 Feb  5 18:30 CNDBA.DMP
-rw-r--r-- 1 oracle oinstall 20979712 Feb  5 18:52 dave5.dbf
-rw-r--r-- 1 oracle oinstall 20979712 Feb  5 18:52 dave6.dbf
-rw-r--r-- 1 oracle oinstall     1254 Feb  5 18:30 export.log
[oracle@www.cndba.cn1 cndba]$

6 目标端处理

这里还需要注意一点异构平台的字节顺序转换在源端和目标端都可以进行,在上一节中我们是在源端转换好后直接复制到目标使用的。 因为我们这里采用第二种方法,在目标端来进行处理,源端不做处理。

Oracle 11g 单实例 TTS(异构平台传输表空间) 操作示例
https://www.cndba.cn/dave/article/4392

对应的命令是:https://www.cndba.cn/dave/article/4394

1)CONVERT TABLESPACE:用于在源库转换指定表空间的数据文件 。
2)CONVERT DATAFILE: 用于在目标库转换数据文件到目标平台 。

这2种方式的最主要的区别是转换字节顺序的空间是在哪一段处理。 因为转换后新生成的数据文件占用空间很大。 可以根据实际情况来进行处理。

我们这里在目标端处理。https://www.cndba.cn/dave/article/4394

我们这里是从Windows 迁移到Linux,转换操作如下。

https://www.cndba.cn/dave/article/4394

--查询目标端的字节码:
SQL> col platform_name for a50
SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME; 

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

SQL>

我们这里将字节顺序转换和转移到ASM 磁盘组一起处理:

[oracle@www.cndba.cn1 cndba]$ rman target /

Recovery Manager: Release 18.0.0.0.0 - Production on Fri Feb 5 19:03:40 2021
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates.  All rights reserved.

PL/SQL package SYS.DBMS_BACKUP_RESTORE version 18.03.01.00 in TARGET database is not current
PL/SQL package SYS.DBMS_RCVMAN version 18.03.01.00 in TARGET database is not current
connected to target database: CNDBA (DBID=250480704)

RMAN> 
RMAN> CONVERT DATAFILE '/tmp/cndba/dave5.dbf', '/tmp/cndba/dave6.dbf'
      TO PLATFORM="Linux x86 64-bit" FROM PLATFORM="Microsoft Windows x86 64-bit"
      DB_FILE_NAME_CONVERT="/tmp/cndba/", "+DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/" PARALLELISM=5;

Starting conversion at target at 2021:02:0519:07:27
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
using channel ORA_DISK_5
channel ORA_DISK_1: starting datafile conversion
input file name=/tmp/cndba/dave5.dbf
channel ORA_DISK_2: starting datafile conversion
input file name=/tmp/cndba/dave6.dbf
converted datafile=+DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave5.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:03
converted datafile=+DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave6.dbf
channel ORA_DISK_2: datafile conversion complete, elapsed time: 00:00:03
Finished conversion at target at 2021:02:0519:07:31

RMAN>

7 导入元数据

在目标端创建用户,表空间不用创建,如果用户不同需要在impdp时使用REMAP_SCHEMA=(source:target)。https://www.cndba.cn/dave/article/4394

因为我们这里是18c 的环境,我们直接导入的PDB环境中。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DAVE                           READ WRITE NO
SQL> alter session set container=DAVE;

Session altered.

SQL> 
SQL> create user dave identified by dave;

User created.

SQL> grant connect,resource,dba to dave;

Grant succeeded.


SQL> create directory dpump_dir as '/tmp/cndba';

Directory created.

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

Grant succeeded.

我们这里用户也不同,需要remap一下:https://www.cndba.cn/dave/article/4394

[oracle@www.cndba.cn1 cndba]$ impdp dave/dave@192.168.1.100:1521/DAVE directory=dpump_dir DUMPFILE=CNDBA.DMP  EXCLUDE=TABLE_STATISTICS,INDEX_STATISTICS REMAP_SCHEMA=cndba:dave transport_datafiles='+DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave5.dbf','+DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave6.dbf'

Import: Release 18.0.0.0.0 - Production on Fri Feb 5 19:23:07 2021
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Master table "DAVE"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "DAVE"."SYS_IMPORT_TRANSPORTABLE_01":  dave/********@192.168.1.100:1521/DAVE directory=dpump_dir DUMPFILE=CNDBA.DMP EXCLUDE=TABLE_STATISTICS,INDEX_STATISTICS REMAP_SCHEMA=cndba:dave transport_datafiles=+DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave5.dbf,+DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave6.dbf
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "DAVE"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Fri Feb 5 19:23:24 2021 elapsed 0 00:00:13

[oracle@www.cndba.cn1 cndba]$

8 将目标端表空间设置为读写并验证数据

SQL> show con_name

CON_NAME
------------------------------
DAVE
SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                                              STATUS
------------------------------------------------------------ ------------------
SYSTEM                                                       ONLINE
SYSAUX                                                       ONLINE
UNDOTBS1                                                     ONLINE
TEMP                                                         ONLINE
UNDO_2                                                       ONLINE
USERS                                                        ONLINE
CNDBA                                                        READ ONLY

7 rows selected.

SQL> alter tablespace cndba read write;

Tablespace altered.

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                                              STATUS
------------------------------------------------------------ ------------------
SYSTEM                                                       ONLINE
SYSAUX                                                       ONLINE
UNDOTBS1                                                     ONLINE
TEMP                                                         ONLINE
UNDO_2                                                       ONLINE
USERS                                                        ONLINE
CNDBA                                                        ONLINE

7 rows selected.

SQL>
SQL> col file_name for a85
SQL> select file_id,file_name,tablespace_name from dba_data_files;

   FILE_ID FILE_NAME                                                                             TABLESPACE_NAME
---------- ------------------------------------------------------------------------------------- ---------------
        10 +DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/system.284.986019665            SYSTEM
        11 +DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/sysaux.285.986019665            SYSAUX
        12 +DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/undotbs1.283.986019665          UNDOTBS1
        13 +DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/undo_2.287.986019895            UNDO_2
        14 +DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/users.288.986019901             USERS
        15 +DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave6.dbf                       CNDBA
        16 +DATA/CNDBA/7514123CD7C84168E0536401A8C03846/DATAFILE/dave5.dbf                       CNDBA

7 rows selected.


SQL> select count(1) from dave.dave;

  COUNT(1)
----------
    173925

SQL>

SQL> select banner from v$version;

BANNER
----------------------------------------------------------------------------------------------------------------------------------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

SQL>

至此,采用TTS的方式,将Oracle 11.2.0.4 的表空间迁移到Oracle 18.4 的RAC 平台的PDB上。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Dave

Dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 1832
    原创
  • 2
    翻译
  • 417
    转载
  • 119
    评论
  • 访问:3164643次
  • 积分:2888
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by ZhiXinTech · 皖ICP备19020168号·

        QQ交流群