海量資料遷移之傳輸表空間(一)

jeanron100發表於2015-06-17
在自己接觸的很多的資料遷移工作中,使用外部表在一定程度上達到了系統的預期,對於增量,批次的資料遷移效果還是不錯的,但是也不能停步不前,在很多限定的場景中,有很多物理遷移中使用傳統方法還是相當不錯的,傳輸表空間就是一個樣例。
最近的有一個資料遷移任務是需要把一些全新的資料表遷移到另外一個庫中,因為這些表在目標庫中不存在,所以使用邏輯遷移就顯得有些力不從心了。儘管在速度可以接受的情況下,最大的痛處就是大量的歸檔檔案了。
因為需要在原有的schema下增加一些全新的資料表,不是很肯定傳輸表空間的校驗是否能夠完全支援。所以在給出方案之前還是做了做測試,達到了預期的想法。
為了對比清晰,我建立了兩個全新的表空間,然後建立一個使用者,建立兩個表,制定到兩個不同的表空間下,然後使用exp使用傳輸表空間模式匯出,然後複製資料檔案,匯入,為了簡單驗證,就在同一個例項下做了測試。唯一多出來的步驟就是做一些簡單的清理。
--資料準備
建立兩個表空間
 create tablespace test_new datafile '/u02/ora11g/oradata/TEST11G/test_new01.dbf' size 10M;
 create tablespace test_old datafile '/u02/ora11g/oradata/TEST11G/test_old01.dbf' size 10M;
建立一個使用者
create user test_tts identified by oracle default tablespace test_old;
grant connect,resource to test_tts;
然後建立兩個表制定不同的表空間
create table test1 tablespace test_new as select *from all_objects where rownum<1000;
create table test2 tablespace test_old as select *from all_objects where rownum<100;
可以簡單驗證一下資料情況。
select count(*)from test1;
select count(*)from test2;
然後檢視user_tables簡單驗證一下表所處的表空間
select tablespace_name,table_name from user_tables;
TABLESPACE_NAME                TABLE_NAME
------------------------------ ------------------------------
TEST_NEW                       TEST1
TEST_OLD                       TEST2
----表空間傳輸檢查
在匯出之前,使用dbms_tts做一下檢查,在這個例子中是沒有問題的。
exec dbms_tts.transport_set_check('TEST_NEW',TRUE);
使用給定的檢視來檢視是否有傳輸的限制。
select *from transport_set_violations;

--表空間傳輸匯出
匯出時需要指定表空間為只讀模式alter tablespace test_new read only;

[ora11g@oel1 ~]$ exp \'sys/oracle as sysdba\' file=test_new.dmp transport_tablespace=y tablespaces=test_new log=test_new_tts.log
Export: Release 11.2.0.1.0 - Production on Wed Jun 17 18:26:17 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set
Note: table data (rows) will not be exported
About to export transportable tablespace metadata...
For tablespace TEST_NEW ...
. exporting cluster definitions
. exporting table definitions
. . exporting table                          TEST1
. exporting referential integrity constraints
. exporting triggers
. end transportable tablespace metadata export
Export terminated successfully without warnings.
 --額外的步驟,做一下簡單的備份和資料清理。因為在同一個例項中實驗,所以需要備份一下,然後把資料刪除。
    備份:
cp /u02/ora11g/oradata/TEST11G/test_new01.dbf /u02/ora11g/oradata/TEST11G/test_new01.dbf1
    清理
drop table TEST1 purge;
drop tablespace test_new including contents and datafiles cascade constraint
簡單驗證是否資料檔案存在,需要確定資料檔案的控制程式碼已經釋放。
sys@TEST11G> !ls -l /u02/ora11g/oradata/TEST11G/test_new01.dbf
ls: /u02/ora11g/oradata/TEST11G/test_new01.dbf: No such file or directory
然後重新命名資料檔案,把原有的備份恢復。這個時候資料檔案就回來了。
!mv /u02/ora11g/oradata/TEST11G/test_new01.dbf1 /u02/ora11g/oradata/TEST11G/test_new01.dbf
!ls -l /u02/ora11g/oradata/TEST11G/test_new01.dbf
--表空間匯入
 imp \'sys/oracle as sysdba\' file=test_new.dmp transport_tablespace=y tablespaces=test_new datafiles=/u02/ora11g/oradata/TEST11G/test_new01.dbf
Import: Release 11.2.0.1.0 - Production on Wed Jun 17 18:42:47 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path
About to import transportable tablespace(s) metadata...
import done in AL32UTF8 character set and AL16UTF16 NCHAR character set
. importing SYS's objects into SYS
. importing SYS's objects into SYS
. importing TEST_TTS's objects into TEST_TTS
. . importing table                        "TEST1"
. importing SYS's objects into SYS
Import terminated successfully without warnings.

--遷移後的補充
遷移後需要把表空間設定為read,write模式alter tablespace test_new read write;
--資料檢查
select tablespace_name,table_name from user_tables;
淡然了上面的步驟只是簡單的一個常規步驟,其實還是有不少的細節考慮的,後面繼續補充。

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

相關文章