【TTS】傳輸表空間Linux asm -> AIX asm

lhrbest發表於2016-02-12

TTS】傳輸表空間Linux asm -> AIX asm

一.1  BLOG文件結構圖

 

wps1558.tmp 

 

一.2  前言部分

 

一.2.1  導讀和注意事項

各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~:

異構平臺下傳輸表空間的實施

傳輸表空間基於表空間的read only和rman2種方式

平臺位元組序、自包含概念

expdp/impdp的應用

 

  Tips:

       ① 若文章程式碼格式有錯亂,推薦使用QQ360瀏覽器,也可以下載pdf格式的文件來檢視,pdf文件下載地址:http://yunpan.cn/cdEQedhCs2kFz (提取碼:ed9b 

       ② 本篇BLOG中命令的輸出部分需要特別關注的地方我都用灰色背景和粉紅色字型來表示,比如下邊的例子中,thread 1的最大歸檔日誌號為33thread 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 647.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/impexpdp/impdp外,最常用的就是傳輸表空間了,若是整個庫遷移的話,我們需要做的就是把業務使用者和業務表空間的資料遷移過來就行,Undotempsystem等等的就不用遷移了,整個處理過程和本文件的處理過程大同小異,需要關注的是業務物件的個數、大小、狀態等。

wps1559.tmp 

一.4.3  實驗過程

 

 

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

 

 

 

 

一.5  source端環境準備

wps1569.tmp 

 

一.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 v$tablespace a , v$datafile 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 v$transportable_platform tp,v$database 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 v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name;

 

PLATFORM_NAME                            ENDIAN_FORMAT

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

AIX-Based Systems (64-bit)               Big

 

 

 

結論: 當前的AIX平臺支援跨平臺的表空間傳輸

源平臺和目標平臺的Endian_format 不同,source端為Littletarget端為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.

先試試要傳輸app1tbsidxtbs2個表空間

 

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  傳輸轉儲元檔案到目標庫

 

wps1589.tmp 

 

 

一.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/ 下,如下:

wps159A.tmp 

 

[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 v$tablespace a , v$datafile 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  總結

 

到此所有的處理算是基本完畢,過程很簡單,但是不同的場景處理方式有很多種,我們應該學會靈活變通。

 

 

 

一.15  About Me

 

...........................................................................................................................................................................................

本文作者:小麥苗,只專注於資料庫的技術,更注重技術的運用

ITPUB BLOG:http://blog.itpub.net/26736162

本文地址:http://blog.itpub.net/26736162/viewspace-1987949/

本文pdf版:http://yunpan.cn/cdEQedhCs2kFz (提取碼:ed9b)

QQ:642808185 若加QQ請註明所正在讀的文章標題

2016-01-26 10:00~ 2016-02-06 19:00 在中行完成

<版權所有,文章允許轉載,但須以連結方式註明源地址,否則追究法律責任!>

...........................................................................................................................................................................................

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-1987949/,如需轉載,請註明出處,否則將追究法律責任。

相關文章