You are on page 1of 5

Transporting Tablespace.

A transportable tablespace is a mechanism for taking the formatted datafiles of one database, and attaching them to another. Instead of unloading the data from one database to a flat file, or a DMP file, and then inserting that data into the other database, transporting a tablespace lets you move the data as fast as you can copy files. scott@10G> create tablespace TTS_TBL datafile 'C:\trash\tts_tb1.dbf' size 1m extent management local uniform size 64k; Tablespace created. scott@10G> create tablespace TTS_INDX datafile 'C:\trash\tts_indx.dbf' size 1m extent management local uniform size 64k; Tablespace created. Elapsed: 00:00:00.64 scott@10G> create user tts_test identified by tts_test default tablespace tts_tbl temporary tablespace temp; User created. scott@10G> grant dba to tts_test; Grant succeeded. scott@10G> connect tts_test/tts_test; Connected. tts_test@10G> create table emp tablespace tts_tbl as select * from scott.emp; Table created. tts_test@10G> create index emp_ix on emp(empno) tablespace tts_indx; Index created.

tts_test@10G> SELECT object_type, object_name, tablespace_name 2 FROM user_objects, user_segments 3 WHERE object_name = segment_name 4 / OBJECT_TYPE OBJECT_NAME TABLESPACE_NAME ------------------- ------------------------------ -----------------------------TABLE EMP TTS_TBL

INDEX

EMP_IX

TTS_INDX

Prior to attempting to export, we need to ensure we have a selfcontained set of objects for transport. We can transport a table without its indexes, but we cannot transport an index without its tables. The following shows the routine that we should use to check if a tablespace, or set of tablespaces, are selfcontained.

tts_test@10G> EXEC sys.dbms_tts.transport_set_check('TTS_TBL',TRUE); PL/SQL procedure successfully completed. tts_test@10G> select * from sys.transport_set_violations; no rows selected tts_test@10G> EXEC sys.dbms_tts.transport_set_check('TTS_INDX',TRUE); PL/SQL procedure successfully completed. tts_test@10G> select * from sys.transport_set_violations; VIOLATIONS -----------------------------------------------------------------------------------------------------------Index TTS_TEST.EMP_IX in tablespace TTS_INDX points to table TTS_TEST.EMP in tablespace TTS_TBL tts_test@10G> EXEC sys.dbms_tts.transport_set_check('TTS_TBL,TTS_TBL',TRUE); PL/SQL procedure successfully completed.

tts_test@10G> select * from sys.transport_set_violations; no rows selected

This shows that we can transport TTS_TBL, because it only contains table data and is selfcontained. Any attempt to transport TTS_INDX, however, would fail since it contains indexes, but not the tables on which they are based. Lastly, both the tablespaces, TTS_TBL and TTS_INDX may be transported together, as we would be transporting both the tables and the indexes. tts_test@10G> CONNECT scott/oracle Connected.

scott@10G> alter tablespace tts_tbl read only; Tablespace altered. scott@10G> alter tablespace tts_indx read only; Tablespace altered. Exporting Tablespace ===================== D:\QA>exp userid="""sys/oracle as sysdba""" transport_tablespace=Y tablespaces=(TTS_TBL,TTS_INDX) file=d:\qa\exp_tbs.dmp Export: Release 10.2.0.3.0 - Production on Wed Feb 24 23:00:35 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options Export done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set Note: table data (rows) will not be exported About to export transportable tablespace metadata... For tablespace TTS_TBL ... . exporting cluster definitions . exporting table definitions . . exporting table EMP For tablespace TTS_INDX ... . exporting cluster definitions . exporting table definitions . exporting referential integrity constraints . exporting triggers . end transportable tablespace metadata export Export terminated successfully without warnings. Importing Tablespace ===================== D:\QA>imp userid="""sys/itg9999@dbss8145:1521:testdb as sysdba""" file=d:\qa\exp_tbs.dmp transport_tablespace=Y "datafiles=(d:\qa\tts_TB1.DBF,d:\qa\tts_INDX.DBF)" Import: Release 10.2.0.3.0 - Production on Wed Feb 24 23:13:00 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production

With the Partitioning, OLAP and Data Mining options Export file created by EXPORT:V10.02.01 via conventional path About to import transportable tablespace(s) metadata... import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set . importing SYS's objects into SYS . importing SYS's objects into SYS . importing TTS_TEST's objects into TTS_TEST . . importing table "EMP" . importing SYS's objects into SYS Import terminated successfully without warnings. D:\QA>sqlplus /nolog SQL*Plus: Release 10.2.0.3.0 - Production on Wed Feb 24 23:15:16 2010 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. idle> connect tts_test/tts_test@dbss8145; Connected. tts_test@dbss8145> update emp set ename = lower(ename); update emp set ename = lower(ename) * ERROR at line 1: ORA-00372: file 6 cannot be modified at this time ORA-01110: data file 6: 'D:\QA\TTS_TB1.DBF'

Elapsed: 00:00:00.07 tts_test@dbss8145> connect scott/oracle@dbss8145; Connected. scott@dbss8145> alter tablespace tts_tbl read write; Tablespace altered. Elapsed: 00:00:00.20 scott@dbss8145> alter tablespace tts_indx read write; Tablespace altered. Elapsed: 00:00:00.17 scott@dbss8145> connect tts_test/tts_test; Connected. tts_test@dbss8145> update emp set ename = lower(ename); 14 rows updated.

Elapsed: 00:00:00.04 tts_test@dbss8145>

You might also like