【TTS】传输表空间Linux asm -> AIX asm

一.1  BLOG文档结构图

 

【TTS】传输表空间Linux asm -> AIX asm 

 

一.2  前言部分

 

一.2.1  导读和注意事项

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

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

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

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

④ expdp/impdp的应用

 

  Tips:

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

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

 

  List of Archived 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:48 1625293    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:49 1625253    2015-05-29 11:15:53

 

 

 

 

[ZFXDESKDB1:root]:/>lsvg -o

T_XDESK_APP1_vg

rootvg

[ZFXDESKDB1:root]:/>

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

 

 

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

 

 

 

 

 

 

 

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

 

 

一.2.2  相关参考文章链接

 

其他异构平台迁移的一些文章参考:

【推荐】 oracle 异构平台迁移之传输表空间一例 http://blog.itpub.net/26736162/viewspace-1391913/

【推荐】 oracle 传输表空间一例 http://blog.itpub.net/26736162/viewspace-1375260/

【推荐】 利用rman来实现linux平台数据库复制到windows平台数据库http://blog.itpub.net/26736162/viewspace-1352436/

【推荐】 直接复制数据文件实现linux平台数据库复制到windows平台数据库http://blog.itpub.net/26736162/viewspace-1352243/

 

 

 

一.3  相关知识点扫盲

可传输表空间的特性主要用于进行库对库的表空间复制,要进行传输的表空间必须置于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,这样传输的数据可以更灵活,不必完全复制现有表空间,只要备份中存在,你就可以选择性的恢复数据。例如,你的备份策略为保留一周,你希望创建的可传输表空间中数据是截止本月底最后一天的数据,那么你在下个月第一周内任何时候都可以进行传输操作而不需要考虑这期间生产库是否会有写入操作。

 

一.3.1  注意事项

 

 

 

☞  注意:

 

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

ORA-39002: invalid operation

ORA-39322: Cannot use transportabletablespace with timestamp with timezone columns and different timezone version.

 

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

source为 ZHS16GBK,target为AL32UTF8

ORA-39123: Data Pump transportable tablespace job aborted

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

 

Tartget db char set AL32UTF8 is not a superset of ZHS16GBK.

Failed to plug in a tablespace 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 Pump transportable tablespace job aborted

ORA-00721: changes by release 11.2.0.4.0 cannot be used by release 11.2.0.0.0

 

 

 

 

一.4  实验部分

 

一.4.1  实验环境介绍

 

项目

source db

target db

db 类型

单实例

单实例

db version

11.2.0.3

11.2.0.4

db 存储

ASM

ASM

ORACLE_SID

orclasm

ora2lhr

db_name

orclasm

ora2lhr

主机IP地址:

192.168.59.30

22.188.194.66

OS版本及kernel版本

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

AIX 64位 7.1.0.0

OS hostname

rhel6_lhr

ZFXDESKDB2

platform_name

Linux x86 64-bit

AIX-Based Systems (64-bit)

db time zone

14

14

字符集

ZHS16GBK

ZHS16GBK

compatible

11.2.0.0.0

11.2.0.4.0

归档模式

Archive Mode

Archive Mode

 

一.4.2  实验目标

 

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

【TTS】传输表空间Linux asm -> AIX asm 

一.4.3  实验过程

 

 

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

 

 

 

 

一.5  source端环境准备

【TTS】传输表空间Linux asm -> AIX asm 

 

一.5.1  在源库上创建3个用户应用的表空间

 

[oracle@rhel6_lhr ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on 星期日 1月 31 23:34:27 2016

 

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

 

 

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, Automatic Storage Management, OLAP, Data Mining

and Real Application Testing options

 

23:34:27 SQL>  create tablespace app1tbs datafile '+DATA' size 10m;

 

表空间已创建。

 

已用时间:  00: 00: 07.60

23:34:42 SQL> create tablespace app2tbs datafile '+DATA' size 10m;

 

表空间已创建。

 

已用时间:  00: 00: 27.25

23:35:53 SQL> create tablespace idxtbs datafile '+DATA' size 10m;

 

表空间已创建。

 

已用时间:  00: 00: 09.45

23:36:09 SQL> set line 9999 pagesize 9999

23:36:12 SQL> SELECT   a.NAME,  b.NAME FROM vtablespacea,vtablespacea,vdatafile b WHERE a.TS#=b.TS#  ;

 

NAME                           NAME

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

SYSTEM                         +DATA/orclasm/datafile/system.256.850260145

SYSAUX                         +DATA/orclasm/datafile/sysaux.257.850260145

UNDOTBS1                       +DATA/orclasm/datafile/undotbs1.258.851526539

USERS                          +DATA/orclasm/datafile/users.259.850260147

EXAMPLE                        +DATA/orclasm/datafile/example.265.850260295

APP1TBS                        +DATA/orclasm/datafile/app1tbs.268.902619275

APP2TBS                        +DATA/orclasm/datafile/app2tbs.280.902619327

TS_LHR                         +DATA/orclasm/datafile/ts_lhr.269.852632495

ENCRYPTED_TS                   +DATA/orclasm/datafile/encrypted_ts.272.854650889

GOLDENGATE                     +DATA/orclasm/datafile/goldengate.273.862829891

IDXTBS                         +DATA/orclasm/datafile/idxtbs.281.902619361

TS_LHR                         +DATA/orclasm/datafile/ts_lhr.284.869738273

USERS                          +FRA/orclasm/datafile/users.449.880121199

SYSTEM                         +FRA/orclasm/datafile/system.349.880121287

 

已选择14行。

 

已用时间:  00: 00: 00.80

23:36:21 SQL>

 

 

一.5.2  在相应的表空间创建表和索引

23:36:21 SQL> create user user_app1 identified by user_app1 default tablespace app1tbs;

 

用户已创建。

 

已用时间:  00: 00: 00.14

23:40:13 SQL> create user user_app2 identified by user_app2 default tablespace app1tbs;

 

用户已创建。

 

已用时间:  00: 00: 00.35

23:43:51 SQL> create user user_app2 identified by user_app2 default tablespace app2tbs;

 

用户已创建。

 

已用时间:  00: 00: 02.72

23:43:56 SQL> grant connect,resource to user_app1;

 

授权成功。

 

已用时间:  00: 00: 00.06

23:44:50 SQL>  grant connect,resource to user_app2;

 

授权成功。

 

已用时间:  00: 00: 00.00

23:44:52 SQL> create table user_app1.app1_tab tablespace app1tbs as select * from scott.emp;

 

表已创建。

 

已用时间:  00: 00: 01.02

23:45:09 SQL>  create table user_app2.app2_tab tablespace app2tbs as select * from scott.dept;

 

表已创建。

 

已用时间:  00: 00: 00.23

23:45:27 SQL> create index user_app1.idx_emp_ename on user_app1.app1_tab(ename) tablespace idxtbs;

 

索引已创建。

 

已用时间:  00: 00: 00.25

23:45:51 SQL> create index user_app2.idx_dept_dname on user_app2.app2_tab(dname) tablespace idxtbs;

 

索引已创建。

 

已用时间:  00: 00: 00.01

23:46:13 SQL>

 

一.6  判断平台支持并确定字节序

如果传输表空间集到不同的平台,则要确定对于源和目标平台这种跨平台表空间被支持,也要确定每个平台的字节序,如果平台具有相同的字节序,则不需要进行转化,否则必须做一个表空间集转化,在源端或目标端。

一.6.1  在源平台查询

23:46:13 SQL>  col platform_name for a40

23:48:55 SQL> select d.platform_name,tp.endian_format from vtransportableplatformtp,vtransportableplatformtp,vdatabase d where tp.platform_name=d.platform_name;

 

PLATFORM_NAME                            ENDIAN_FORMAT

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

Linux x86 64-bit                         Little

 

已用时间:  00: 00: 00.19

23:49:13 SQL>

 

结论:当前的系统平台支持跨平台表空间传输(因为上面的查询有记录返回)

 

一.6.2  在目标平台查询

 

[ZFXDESKDB2:oracle]:/oracle>ORACLE_SID=ora2lhr

[ZFXDESKDB2:oracle]:/oracle>sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 1 13:47:14 2016

 

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

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

 

SYS@ora2lhr> col platform_name for a40

SYS@ora2lhr> select d.platform_name,tp.endian_format from vtransportableplatformtp,vtransportableplatformtp,vdatabase d where tp.platform_name=d.platform_name;

 

PLATFORM_NAME                            ENDIAN_FORMAT

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

AIX-Based Systems (64-bit)               Big

 

 

 

结论: 当前的AIX平台支持跨平台的表空间传输

源平台和目标平台的Endian_format 不同,source端为Little,target端为Big,所以需要进行表空间集转换,前边说过在源端或目标端都可以进行转换,这里我们选择在目标端来进行转换。

 

一.7  选择自包含的表空间集

一.7.1  进行检查

Indicates whether a full or partial dependency check is required. If TRUE, treats all IN and OUT pointers(dependencies) and captures them as violations if they are not self-contained in the transportable set.

先试试要传输app1tbs和idxtbs这2个表空间:

 

SQL> execute dbms_tts.transport_set_check('app1tbs,idxtbs',true);

 

PL/SQL procedure successfully completed.

 

 

一.7.2  查看检查结果

SQL> col violations for a70

 

23:50:53 SQL> select * from transport_set_violations;

 

VIOLATIONS

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

ORA-39907: 索引 USER_APP2.IDX_DEPT_DNAME (在表空间 IDXTBS 中) 指向表 USER_APP2.APP2_TAB (在表空间 APP2TBS 中)。

 

已用时间:  00: 00: 00.18

23:51:14 SQL>

 

结论: 在idxtbs表空间中IDX_DEPT_DNAME索引指向了表空间集外的USER_APP2.APP2_TAB表,所以这里选择app1tabs,app2tabs,idxtbs作为新的表空间集再次进行检查

 

23:51:14 SQL> execute dbms_tts.transport_set_check('app1tbs,app2tbs,idxtbs',true);

 

PL/SQL 过程已成功完成。

 

已用时间:  00: 00: 07.24

23:52:14 SQL> select * from transport_set_violations;

 

未选定行

 

已用时间:  00: 00: 00.00

23:52:54 SQL>

结论: 此时这个表空间集已经不再违背自包含的条件,可以确定为一个可传输表空间集。在实际生产环境中也是如此检查的,若是全库迁移,得把需要迁移的表空间修改为自包含的。

 

一.8  产生可传输表空间集

一.8.1  使自包含的表空间集中的所有表空间变为只读状态

23:52:54 SQL> alter tablespace app1tbs read only;

 

表空间已更改。

 

已用时间:  00: 00: 00.36

23:54:31 SQL> alter tablespace app2tbs read only;

 

表空间已更改。

 

已用时间:  00: 00: 00.15

23:54:42 SQL> alter tablespace idxtbs read only;

 

表空间已更改。

 

已用时间:  00: 00: 00.14

23:54:48 SQL>

 

 

一.8.2  使用数据泵导出工具,导出要传输的各个表空间的元数据

一.8.2.1  确定导出目录

 

23:55:51 SQL> set line 9999

23:56:07 SQL> col directory_name for a28

23:56:07 SQL> col directory_path for a100

23:56:07 SQL> select directory_name,directory_path from dba_directories;

 

DIRECTORY_NAME               DIRECTORY_PATH

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

OSDESC                       /home/oracle/

ASMSRC                       +DATA/orclasm/datafile/

DIR_ALERT                    /u01/app/oracle/diag/rdbms/orclasm/orclasm/trace

SCHEDULER$_WALLET_DIR        /u01/app/oracle/product/11.2.0/dbhome_1/scheduler/wallet

TMP_HF_DIR                   +DATA/orclasm/datafile/

FY_DATA_DIR                  /tmp

REPDIR                       /oradata06/repdir

DIR_ALERT_CHECKHELTH_LHR_1   /u01/app/oracle/diag/rdbms/orclasm/orclasm/trace

SUBDIR                       /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/order_entry//2002/Sep

SS_OE_XMLDIR                 /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/order_entry/

LOG_FILE_DIR                 /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/log/

MEDIA_DIR                    /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/product_media/

XMLDIR                       /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/xml

DATA_FILE_DIR                /u01/app/oracle/product/11.2.0/dbhome_1/demo/schema/sales_history/

DATA_PUMP_DIR                /u01/app/oracle/admin/orclasm/dpdump/

ORACLE_OCM_CONFIG_DIR        /u01/app/oracle/product/11.2.0/dbhome_1/ccr/state

 

已选择16行。

 

已用时间:  00: 00: 00.01

23:56:08 SQL>

 

 

一.8.2.2  开始导出

[oracle@rhel6_lhr ~]$ env | grep ORACLE

ORACLE_SID=orclasm

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

 

[oracle@rhel6_lhr ~]$ expdp \'/ as sysdba\' dumpfile=expdat_20160131.dmp directory=DATA_PUMP_DIR transport_tablespaces=app1tbs,app2tbs,idxtbs transport_full_check=y logfile=tts_export_20160131.log

 

Export: Release 11.2.0.3.0 - Production on 星期一 2月 1 00:03:39 2016

 

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

 

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, Automatic Storage Management, OLAP, Data Mining

and Real Application Testing options

启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  "/******** AS SYSDBA" dumpfile=expdat_20160131.dmp directory=DATA_PUMP_DIR transport_tablespaces=app1tbs,app2tbs,idxtbs transport_full_check=y logfile=tts_export_20160131.log

处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK

处理对象类型 TRANSPORTABLE_EXPORT/TABLE

处理对象类型 TRANSPORTABLE_EXPORT/INDEX/INDEX

处理对象类型 TRANSPORTABLE_EXPORT/INDEX_STATISTICS

处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01"

******************************************************************************

SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:

  /u01/app/oracle/admin/orclasm/dpdump/expdat_20160131.dmp

******************************************************************************

可传输表空间 APP1TBS 所需的数据文件:

  +DATA/orclasm/datafile/app1tbs.268.902619275

可传输表空间 APP2TBS 所需的数据文件:

  +DATA/orclasm/datafile/app2tbs.280.902619327

可传输表空间 IDXTBS 所需的数据文件:

  +DATA/orclasm/datafile/idxtbs.281.902619361

作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 00:07:22 成功完成

 

[oracle@rhel6_lhr ~]$

 

 

查看文件:

 

[oracle@rhel6_lhr ~]$ cd  /u01/app/oracle/admin/orclasm/dpdump/

[oracle@rhel6_lhr dpdump]$ ll

total 13536

-rw-r----- 1 oracle asmadmin  110592 Feb  1 00:07 expdat_20160131.dmp

-rw-r--r-- 1 oracle asmadmin    1450 Feb  1 00:07 tts_export_20160131.log

[oracle@rhel6_lhr dpdump]$

 

 

告警日志可以看到:

Sun Dec 21 17:48:50 2014

DM00 started with pid=45, OS id=13188, job SYSTEM.SYS_EXPORT_TRANSPORTABLE_01

Sun Dec 21 17:48:56 2014

DW00 started with pid=46, OS id=13190, wid=1, job SYSTEM.SYS_EXPORT_TRANSPORTABLE_01

Sun Dec 21 17:49:15 2014

XDB installed.

XDB initialized.

一.8.3  生成数据文件

[root@rhel6_lhr ~]# su - grid

[grid@rhel6_lhr ~]$ asmcmd

ASMCMD> cd  +DATA/orclasm/datafile/

ASMCMD> ls

APP1TBS.274.866911939

APP2TBS.275.866912075

ENCRYPTED_TS.272.854650889

EXAMPLE.265.850260295

GOLDENGATE.273.862829891

IDXTBS.276.866912133

SYSAUX.257.850260145

SYSTEM.256.850260145

TBS_RC.268.852116523

TS_LHR.269.852632495

UNDOTBS1.258.851526539

UNDOTBS2.267.851204361

USERS.259.850260147

example.265.850260295_bk

ASMCMD> cp APP1TBS.274.866911939 /u01/app/oracle/admin/orclasm/dpdump

copying +DATA/orclasm/datafile/APP1TBS.274.866911939 -> /u01/app/oracle/admin/orclasm/dpdump/APP1TBS.274.866911939

ASMCMD-8016: copy source->'+DATA/orclasm/datafile/APP1TBS.274.866911939' and target->'/u01/app/oracle/admin/orclasm/dpdump/APP1TBS.274.866911939' failed

ORA-19505: failed to identify file "/u01/app/oracle/admin/orclasm/dpdump/APP1TBS.274.866911939"

ORA-27040: file create error, unable to create file

Linux-x86_64 Error: 13: Permission denied

Additional information: 1

ORA-15120: ASM file name '/u01/app/oracle/admin/orclasm/dpdump/APP1TBS.274.866911939' does not begin with the ASM prefix character

ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 413

ORA-06512: at line 3 (DBD ERROR: OCIStmtExecute)

 

无权限,暂时拷贝到grid目录下:

ASMCMD> cp APP1TBS.274.866911939 /home/grid

copying +DATA/orclasm/datafile/APP1TBS.274.866911939 -> /home/grid/APP1TBS.274.866911939

ASMCMD> cp APP2TBS.275.866912075 /home/grid

copying +DATA/orclasm/datafile/APP2TBS.275.866912075 -> /home/grid/APP2TBS.275.866912075

ASMCMD> cp IDXTBS.276.866912133 /home/grid

copying +DATA/orclasm/datafile/IDXTBS.276.866912133 -> /home/grid/IDXTBS.276.866912133

ASMCMD>

 

[grid@rhel6_lhr ~]$ asmcmd

ASMCMD> cd  +DATA/orclasm/datafile/

ASMCMD> ls

APP1TBS.268.902619275

APP2TBS.280.902619327

ENCRYPTED_TS.272.854650889

EXAMPLE.265.850260295

GOLDENGATE.273.862829891

IDXTBS.281.902619361

SYSAUX.257.850260145

SYSTEM.256.850260145

TS_LHR.269.852632495

TS_LHR.284.869738273

UNDOTBS1.258.851526539

USERS.259.850260147

example.265.850260295_bk

ASMCMD> rm -rf example.265.850260295_bk

ASMCMD> ls

APP1TBS.268.902619275

APP2TBS.280.902619327

ENCRYPTED_TS.272.854650889

EXAMPLE.265.850260295

GOLDENGATE.273.862829891

IDXTBS.281.902619361

SYSAUX.257.850260145

SYSTEM.256.850260145

TS_LHR.269.852632495

TS_LHR.284.869738273

UNDOTBS1.258.851526539

USERS.259.850260147

ASMCMD> cp APP1TBS.268.902619275 /u01/app/oracle/admin/orclasm/dpdump

copying +DATA/orclasm/datafile/APP1TBS.268.902619275 -> /u01/app/oracle/admin/orclasm/dpdump/APP1TBS.268.902619275

ASMCMD-8016: copy source->'+DATA/orclasm/datafile/APP1TBS.268.902619275' and target->'/u01/app/oracle/admin/orclasm/dpdump/APP1TBS.268.902619275' failed

ORA-19505: failed to identify file "/u01/app/oracle/admin/orclasm/dpdump/APP1TBS.268.902619275"

ORA-27040: file create error, unable to create file

Linux-x86_64 Error: 13: Permission denied

Additional information: 1

ORA-15120: ASM file name '/u01/app/oracle/admin/orclasm/dpdump/APP1TBS.268.902619275' does not begin with the ASM prefix character

ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 413

ORA-06512: at line 3 (DBD ERROR: OCIStmtExecute)

ASMCMD> cp APP1TBS.268.902619275 /home/grid

copying +DATA/orclasm/datafile/APP1TBS.268.902619275 -> /home/grid/APP1TBS.268.902619275

ASMCMD> cp APP2TBS.280.902619327 /home/grid

copying +DATA/orclasm/datafile/APP2TBS.280.902619327 -> /home/grid/APP2TBS.280.902619327

ASMCMD> cp IDXTBS.281.902619361 /home/grid

copying +DATA/orclasm/datafile/IDXTBS.281.902619361 -> /home/grid/IDXTBS.281.902619361

ASMCMD>

 

然后利用root用户将数据文件和expdp出来的源数据再拷贝到同一个目录下:

 

[root@rhel6_lhr ~]# ll /home/grid

total 209832

-rw-r--r--  1 grid oinstall      316 Jan  5  2015 aa.txt

-rw-r--r--. 1 grid oinstall      244 Jun 23  2014 a.ora

-rw-r-----  1 grid oinstall 10493952 Feb  1 00:22 APP1TBS.268.902619275

-rw-r-----  1 grid oinstall 52436992 Dec 21  2014 APP1TBS.274.866911939

-rw-r-----  1 grid oinstall 52436992 Dec 21  2014 APP2TBS.275.866912075

-rw-r-----  1 grid oinstall 10493952 Feb  1 00:22 APP2TBS.280.902619327

-rw-r-----  1 grid oinstall 52436992 Dec 21  2014 IDXTBS.276.866912133

-rw-r-----  1 grid oinstall 10493952 Feb  1 00:22 IDXTBS.281.902619361

drwxr-xr-x. 3 grid oinstall     4096 Jun 14  2014 oradiag_grid

-rw-r-----. 1 grid oinstall     3584 Jul  1  2014 spfileorclasm.ora

-rw-r-----  1 grid oinstall  2105344 Jan 13  2015 testdg.dbf

-rw-r-----  1 grid oinstall 23950848 Dec 24  2014 thread_1_seq_754.333.865158557

[root@rhel6_lhr ~]# cp /home/grid/APP1TBS.268.902619275 /u01/app/oracle/admin/orclasm/dpdump/

[root@rhel6_lhr ~]# cp /home/grid/APP2TBS.280.902619327 /u01/app/oracle/admin/orclasm/dpdump/

[root@rhel6_lhr ~]# cp /home/grid/IDXTBS.281.902619361  /u01/app/oracle/admin/orclasm/dpdump/

[root@rhel6_lhr ~]#

[root@rhel6_lhr ~]# ll  /u01/app/oracle/admin/orclasm/dpdump/

total 40540

-rw-r----- 1 root   root     10493952 Feb  1 00:28 APP1TBS.268.902619275

-rw-r----- 1 root   root     10493952 Feb  1 00:28 APP2TBS.280.902619327

-rw-r----- 1 oracle asmadmin   110592 Feb  1 00:07 expdat_20160131.dmp

-rw-r----- 1 root   root     10493952 Feb  1 00:28 IDXTBS.281.902619361

-rw-r--r-- 1 oracle asmadmin     1450 Feb  1 00:07 tts_export_20160131.log

[root@rhel6_lhr ~]#

 

 

 

 

一.9  还原源库中的表空间为读/写模式

[oracle@rhel6_lhr dpdump]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on 星期一 2月 1 00:27:13 2016

 

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

 

 

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, Automatic Storage Management, OLAP, Data Mining

and Real Application Testing options

 

00:27:13 SQL> alter tablespace app1tbs read write;

 

表空间已更改。

 

已用时间:  00: 00: 01.19

00:27:16 SQL> alter tablespace app2tbs read write;

 

表空间已更改。

 

已用时间:  00: 00: 00.11

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

 

表空间已更改。

 

已用时间:  00: 00: 00.17

00:27:31 SQL> exit

从 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, Automatic Storage Management, OLAP, Data Mining

and Real Application Testing options 断开

[oracle@rhel6_lhr dpdump]$

 

一.10  传输数据文件和元数据到target端

这里需要传输转储元文件和数据文件到目标库

 

一.10.1  传输转储元文件到目标库

 

【TTS】传输表空间Linux asm -> AIX asm 

 

 

一.10.2  查看目标库数据文件位置和目录

[ZFXDESKDB2:oracle]:/oracle>ORACLE_SID=ora2lhr

[ZFXDESKDB2:oracle]:/oracle>sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 1 14:53:49 2016

 

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

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

 

SYS@ora2lhr> select name from v$datafile;

 

NAME

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

+DATA/ora2lhr/datafile/system.335.902674033

+DATA/ora2lhr/datafile/sysaux.336.902674033

+DATA/ora2lhr/datafile/undotbs1.337.902674033

+DATA/ora2lhr/datafile/users.338.902674033

+DATA/ora2lhr/datafile/example.348.902674109

 

SYS@ora2lhr> set line 9999

SYS@ora2lhr> col directory_name for a28

SYS@ora2lhr> col directory_path for a100

SYS@ora2lhr> select directory_name,directory_path from dba_directories;

 

DIRECTORY_NAME               DIRECTORY_PATH

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

SUBDIR                       /oracle/app/oracle/product/11.2.0/db/demo/schema/order_entry//2002/Sep

SS_OE_XMLDIR                 /oracle/app/oracle/product/11.2.0/db/demo/schema/order_entry/

LOG_FILE_DIR                 /oracle/app/oracle/product/11.2.0/db/demo/schema/log/

MEDIA_DIR                    /oracle/app/oracle/product/11.2.0/db/demo/schema/product_media/

DATA_FILE_DIR                /oracle/app/oracle/product/11.2.0/db/demo/schema/sales_history/

XMLDIR                       /oracle/app/oracle/product/11.2.0/db/rdbms/xml

ORACLE_OCM_CONFIG_DIR        /oracle/app/oracle/product/11.2.0/db/ccr/state

DATA_PUMP_DIR                /oracle/app/oracle/admin/ora2lhr/dpdump/

ORACLE_OCM_CONFIG_DIR2       /oracle/app/oracle/product/11.2.0/db/ccr/state

 

9 rows selected.

 

SYS@ora2lhr>

SYS@ora2lhr>

 

一.10.3  拷贝文件到目标库相应位置并修改权限

 

将表空间文件和元数据文件拷贝到/oracle/app/oracle/admin/ora2lhr/dpdump/ 下,如下:

【TTS】传输表空间Linux asm -> AIX asm 

 

[ZFXDESKDB2:root]:/>cd /oracle/app/oracle/admin/ora2lhr/dpdump

[ZFXDESKDB2:root]:/oracle/app/oracle/admin/ora2lhr/dpdump>l

total 123424

-rw-r-----    1 root     system     10493952 Feb 01 00:28 APP1TBS.268.902619275

-rw-r-----    1 root     system     10493952 Feb 01 00:28 APP2TBS.280.902619327

-rw-r-----    1 root     system     10493952 Feb 01 00:28 IDXTBS.281.902619361

-rw-r-----    1 root     system     10493952 Feb 01 01:02 IDXTBS.dbf

-rw-r-----    1 root     system     10493952 Feb 01 01:01 app1tbs.dbf

-rw-r-----    1 root     system     10493952 Feb 01 01:01 app2tbs.dbf

-rw-r-----    1 root     system       110592 Feb 01 00:07 expdat_20160131.dmp

-rw-r-----    1 root     system       110592 Feb 01 00:58 expdat_20160131_2.dmp

-rw-r-----    1 root     system         1452 Feb 01 00:58 expdat_20160131_2.log

-rw-r-----    1 root     system         1450 Feb 01 00:07 tts_export_20160131.log

[ZFXDESKDB2:root]:/oracle/app/oracle/admin/ora2lhr/dpdump>chown oracle:dba ./*

[ZFXDESKDB2:root]:/oracle/app/oracle/admin/ora2lhr/dpdump>l

total 123424

-rw-r-----    1 oracle   dba        10493952 Feb 01 00:28 APP1TBS.268.902619275

-rw-r-----    1 oracle   dba        10493952 Feb 01 00:28 APP2TBS.280.902619327

-rw-r-----    1 oracle   dba        10493952 Feb 01 00:28 IDXTBS.281.902619361

-rw-r-----    1 oracle   dba        10493952 Feb 01 01:02 IDXTBS.dbf

-rw-r-----    1 oracle   dba        10493952 Feb 01 01:01 app1tbs.dbf

-rw-r-----    1 oracle   dba        10493952 Feb 01 01:01 app2tbs.dbf

-rw-r-----    1 oracle   dba          110592 Feb 01 00:07 expdat_20160131.dmp

-rw-r-----    1 oracle   dba          110592 Feb 01 00:58 expdat_20160131_2.dmp

-rw-r-----    1 oracle   dba            1452 Feb 01 00:58 expdat_20160131_2.log

-rw-r-----    1 oracle   dba            1450 Feb 01 00:07 tts_export_20160131.log

 

一.11  target端转换字节序

 

[ZFXDESKDB2:root]:/oracle/app/oracle/admin/ora2lhr/dpdump>su - oracle

[ZFXDESKDB2:oracle]:/oracle>ORACLE_SID=ora2lhr

[ZFXDESKDB2:oracle]:/oracle>rman target /

 

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Feb 1 14:58:54 2016

 

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

 

connected to target database: ORA2LHR (DBID=4055514164)

 

RMAN>

 

RMAN> CONVERT DATAFILE

2> "/oracle/app/oracle/admin/ora2lhr/dpdump/APP1TBS.268.902619275",

3> "/oracle/app/oracle/admin/ora2lhr/dpdump/APP2TBS.280.902619327",

4> "/oracle/app/oracle/admin/ora2lhr/dpdump/IDXTBS.281.902619361"

5> TO PLATFORM="AIX-Based Systems (64-bit)"

6> FROM PLATFORM="Linux x86 64-bit"

7> FORMAT '+DATA';

 

Starting conversion at target at 2016-02-01 15:00:07

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=222 device type=DISK

channel ORA_DISK_1: starting datafile conversion

input file name=/oracle/app/oracle/admin/ora2lhr/dpdump/APP1TBS.268.902619275

converted datafile=+DATA/ora2lhr/datafile/app1tbs.350.902674809

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

channel ORA_DISK_1: starting datafile conversion

input file name=/oracle/app/oracle/admin/ora2lhr/dpdump/APP2TBS.280.902619327

converted datafile=+DATA/ora2lhr/datafile/app2tbs.351.902674809

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

channel ORA_DISK_1: starting datafile conversion

input file name=/oracle/app/oracle/admin/ora2lhr/dpdump/IDXTBS.281.902619361

converted datafile=+DATA/ora2lhr/datafile/idxtbs.352.902674811

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

Finished conversion at target at 2016-02-01 15:00:11

 

RMAN>

 

 

[ZFXDESKDB2:root]:/oracle/app/oracle/admin/ora2lhr/dpdump>

[ZFXDESKDB2:root]:/oracle/app/oracle/admin/ora2lhr/dpdump>su - grid

[ZFXDESKDB2:grid]:/home/grid>asmcmd

ASMCMD> cd +DATA/ora2lhr/datafile/

ASMCMD> ls

APP1TBS.350.902674809

APP2TBS.351.902674809

EXAMPLE.348.902674109

IDXTBS.352.902674811

SYSAUX.336.902674033

SYSTEM.335.902674033

UNDOTBS1.337.902674033

USERS.338.902674033

ASMCMD> ls -l

Type      Redund  Striped  Time             Sys  Name

DATAFILE  UNPROT  COARSE   FEB 01 15:00:00  Y    APP1TBS.350.902674809

DATAFILE  UNPROT  COARSE   FEB 01 15:00:00  Y    APP2TBS.351.902674809

DATAFILE  UNPROT  COARSE   FEB 01 14:00:00  Y    EXAMPLE.348.902674109

DATAFILE  UNPROT  COARSE   FEB 01 15:00:00  Y    IDXTBS.352.902674811

DATAFILE  UNPROT  COARSE   FEB 01 14:00:00  Y    SYSAUX.336.902674033

DATAFILE  UNPROT  COARSE   FEB 01 14:00:00  Y    SYSTEM.335.902674033

DATAFILE  UNPROT  COARSE   FEB 01 14:00:00  Y    UNDOTBS1.337.902674033

DATAFILE  UNPROT  COARSE   FEB 01 14:00:00  Y    USERS.338.902674033

ASMCMD>

 

一.12  开始导入

一.12.1  创建source库的2个用户并赋权限

如果不创建用户会报如下的错误:

ORA-39123: Data Pump transportable tablespace job aborted

ORA-29342: user USER_APP1 does not exist in the database

 

 

 

[ZFXDESKDB2:oracle]:/oracle>sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 1 15:07:32 2016

 

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

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

 

SYS@ora2lhr> create user user_app1 identified by user_app1;

 

User created.

 

SYS@ora2lhr> create user user_app2 identified by user_app2;

 

User created.

 

SYS@ora2lhr> grant connect , resource to user_app1;

 

Grant succeeded.

 

SYS@ora2lhr> grant connect , resource to user_app2;

 

Grant succeeded.

 

SYS@ora2lhr> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

[ZFXDESKDB2:oracle]:/oracle>

 

一.12.2  开始导入

 

[ZFXDESKDB2:oracle]:/oracle>impdp \'/ as sysdba \' DUMPFILE=expdat_20160131.dmp DIRECTORY=DATA_PUMP_DIR TRANSPORT_DATAFILES='+DATA/ora2lhr/datafile/APP1TBS.350.902674809','+DATA/ora2lhr/datafile/app2tbs.351.902674809','+DATA/ora2lhr/datafile/idxtbs.352.902674811' LOGFILE=impdp_tts_20160131.log

 

Import: Release 11.2.0.4.0 - Production on Mon Feb 1 15:08:24 2016

 

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

 

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

Master table "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded

Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_01":  "/******** AS SYSDBA" DUMPFILE=expdat_20160131.dmp DIRECTORY=DATA_PUMP_DIR TRANSPORT_DATAFILES=+DATA/ora2lhr/datafile/APP1TBS.350.902674809,+DATA/ora2lhr/datafile/app2tbs.351.902674809,+DATA/ora2lhr/datafile/idxtbs.352.902674811 LOGFILE=impdp_tts_20160131.log

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX

Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Job "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Mon Feb 1 15:08:32 2016 elapsed 0 00:00:06

 

[ZFXDESKDB2:oracle]:/oracle>

 

 

日志:

Plug in tablespace APP1TBS with datafile

  '+DATA/ora2lhr/datafile/APP1TBS.350.902674809'

Plug in tablespace APP2TBS with datafile

  '+DATA/ora2lhr/datafile/app2tbs.351.902674809'

Plug in tablespace IDXTBS with datafile

  '+DATA/ora2lhr/datafile/idxtbs.352.902674811'

 

一.12.3  查看目标平台信息

 

SYS@ora2lhr> select tablespace_name,status from dba_tablespaces;

 

TABLESPACE_NAME                STATUS

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

SYSTEM                         ONLINE

SYSAUX                         ONLINE

UNDOTBS1                       ONLINE

TEMP                           ONLINE

USERS                          ONLINE

EXAMPLE                        ONLINE

APP1TBS                        READ ONLY

APP2TBS                        READ ONLY

IDXTBS                         READ ONLY

 

9 rows selected.

 

 

SYS@ora2lhr> alter tablespace APP1TBS read write;

 

Tablespace altered.

 

SYS@ora2lhr> alter tablespace APP2TBS read write;

 

Tablespace altered.

 

SYS@ora2lhr> alter tablespace IDXTBS read write;

 

Tablespace altered.

 

SYS@ora2lhr> select tablespace_name,status from dba_tablespaces;

 

TABLESPACE_NAME                STATUS

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

SYSTEM                         ONLINE

SYSAUX                         ONLINE

UNDOTBS1                       ONLINE

TEMP                           ONLINE

USERS                          ONLINE

EXAMPLE                        ONLINE

APP1TBS                        ONLINE

APP2TBS                        ONLINE

IDXTBS                         ONLINE

 

9 rows selected.

 

SYS@ora2lhr>

SYS@ora2lhr> SELECT d.username,d.default_tablespace FROM dba_users d where d.username like 'USER_%' ;

 

USERNAME                       DEFAULT_TABLESPACE

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

USER_APP2                      USERS

USER_APP1                      USERS

 

SYS@ora2lhr> alter user user_app1 default tablespace app1tbs;

 

User altered.

 

SYS@ora2lhr> alter user user_app2 default tablespace app2tbs;

 

User altered.

 

SYS@ora2lhr>  SELECT d.username,d.default_tablespace FROM dba_users d where d.username like 'USER_%' ;

 

USERNAME                       DEFAULT_TABLESPACE

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

USER_APP2                      APP2TBS

USER_APP1                      APP1TBS

 

SYS@ora2lhr>

 

一.13  查看导入后结果

SYS@ora2lhr> set line 9999 pagesize 9999

SYS@ora2lhr> select * from user_app1.app1_tab;

 

     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO

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

      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20

      7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600        300         30

      7521 WARD       SALESMAN        7698 1981-02-22 00:00:00       1250        500         30

      7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975                    20

      7654 MARTIN     SALESMAN        7698 1981-09-28 00:00:00       1250       1400         30

      7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850                    30

      7782 CLARK      MANAGER         7839 1981-06-09 00:00:00       2450                    10

      7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10

      7844 TURNER     SALESMAN        7698 1981-09-08 00:00:00       1500          0         30

      7900 JAMES      CLERK           7698 1981-12-03 00:00:00        950                    30

      7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000                    20

      7934 MILLER     CLERK           7782 1982-01-23 00:00:00       1300                    10

 

12 rows selected.

 

SYS@ora2lhr> select * from user_app2.app2_tab;

 

    DEPTNO DNAME          LOC

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

        10 ACCOUNTING     NEW YORK

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

        40 OPERATIONS     BOSTON

 

SYS@ora2lhr>  select D.owner,D.index_name,D.table_name,D.tablespace_name from dba_indexes d WHERE d.table_name in ('APP1_TAB','APP2_TAB');

 

OWNER                          INDEX_NAME                     TABLE_NAME                     TABLESPACE_NAME

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

USER_APP2                      IDX_DEPT_DNAME                 APP2_TAB                       IDXTBS

USER_APP1                      IDX_EMP_ENAME                  APP1_TAB                       IDXTBS

 

SYS@ora2lhr> SELECT   a.NAME,  b.NAME FROM vtablespacea,vtablespacea,vdatafile b WHERE a.TS#=b.TS#  ;

 

NAME                           NAME

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

SYSTEM                         +DATA/ora2lhr/datafile/system.335.902674033

SYSAUX                         +DATA/ora2lhr/datafile/sysaux.336.902674033

UNDOTBS1                       +DATA/ora2lhr/datafile/undotbs1.337.902674033

USERS                          +DATA/ora2lhr/datafile/users.338.902674033

EXAMPLE                        +DATA/ora2lhr/datafile/example.348.902674109

APP1TBS                        +DATA/ora2lhr/datafile/app1tbs.350.902674809

APP2TBS                        +DATA/ora2lhr/datafile/app2tbs.351.902674809

IDXTBS                         +DATA/ora2lhr/datafile/idxtbs.352.902674811

 

8 rows selected.

 

SYS@ora2lhr>

 

 

至此说明3个表空间已经完全由Linux平台迁移到AIX平台上。

 

 

 

 

 

 

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

 

 

一.14  总结

 

到此所有的处理算是基本完毕,过程很简单,但是不同的场景处理方式有很多种,我们应该学会灵活变通。


上一篇:Delphi - OLE类实现TTS方式语音朗读


下一篇:2020-12-18工作安排和学习内容