海量資料遷移之傳輸表空間(一)
在自己接觸的很多的資料遷移工作中,使用外部表在一定程度上達到了系統的預期,對於增量,批次的資料遷移效果還是不錯的,但是也不能停步不前,在很多限定的場景中,有很多物理遷移中使用傳統方法還是相當不錯的,傳輸表空間就是一個樣例。
最近的有一個資料遷移任務是需要把一些全新的資料表遷移到另外一個庫中,因為這些表在目標庫中不存在,所以使用邏輯遷移就顯得有些力不從心了。儘管在速度可以接受的情況下,最大的痛處就是大量的歸檔檔案了。
因為需要在原有的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;
淡然了上面的步驟只是簡單的一個常規步驟,其實還是有不少的細節考慮的,後面繼續補充。
最近的有一個資料遷移任務是需要把一些全新的資料表遷移到另外一個庫中,因為這些表在目標庫中不存在,所以使用邏輯遷移就顯得有些力不從心了。儘管在速度可以接受的情況下,最大的痛處就是大量的歸檔檔案了。
因為需要在原有的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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料遷移】使用傳輸表空間遷移資料
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移[轉]
- 用傳輸表空間跨平臺遷移資料
- 跨平臺表空間遷移(傳輸表空間)
- 基於可傳輸表空間的表空間遷移
- 使用可傳輸表空間向rac環境遷移資料
- oracle 異構平臺遷移之傳輸表空間一例Oracle
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- oracle 12c 使用RMAN的傳輸表空間功能在PDB之間遷移資料Oracle
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- [zt]跨平臺表空間傳輸 (DB遷移)
- 基於redhat 6.5 oracle 11.2.0.4測試tts傳輸表空間之資料庫遷移之一RedhatOracleTTS資料庫
- 資料庫物件遷移表空間資料庫物件
- 【實驗】利用可傳輸表空間技術實現資料的高效遷移
- mysql之 表空間傳輸MySql
- 一個利用傳輸表空間和分割槽交換技術進行資料遷移的案例
- 線上遷移表空間資料檔案
- Oracle 表空間資料檔案遷移Oracle
- 【TTS】使用Grid Control完成傳輸表空間資料遷移之備份檔案生成TTS
- 表空間遷移
- 遷移表空間
- 【資料遷移】XTTS跨平臺傳輸表空間v3(3.DFT方式)TTS
- 【資料遷移】XTTS跨平臺傳輸表空間v3(2.RMAN增量)TTS
- Oracle資料庫遷移 - 異構傳輸表空間TTS HP-UX遷移至Redhat Linux 7.7Oracle資料庫TTSRedhatLinux
- 利用可傳輸表空間跨平臺遷移 -RMAN CONVERT
- 【TTS】使用Grid Control完成傳輸表空間資料遷移之備份檔案匯入TTS
- 海量資料遷移之資料抽取流程
- 海量資料遷移之外部表切分
- InnoDB資料表空間檔案平滑遷移
- 【遷移】表空間transport
- RMAN遷移表空間
- 海量資料遷移之透過rowid切分大表
- 海量資料遷移之通過rowid切分大表
- 海量資料遷移之資料載入流程
- 海量資料遷移之外部表載入
- 12c 資料泵傳輸表空間
- 資料泵 TTS(傳輸表空間技術)TTS