可传输表空间现在可以跨平台移植,从而使得数据发布更快更容易。此外,外部表下载使得通过转换进行数据转移的任务更简单更快。您如何将数据从一个数据库转移到另一个数据库?在现有的几种方法中,有一种方法尤为出色:可传输表空间。在这种方法中,您使用一组自包含、只读的表空间,只导出元数据,在操作系统层将这些表空间的数据文件拷贝至目标平台,并将元数据导入数据字典 — 这个过程称为插入。操作系统文件拷贝一般比其它传统的数据转移方法(如导出/导入或 SQL*Loader)要快得多。然而,在 Oracle9i 数据库和更低版本中,可传输表空间仅限于在目标数据库和源数据库都运行在同一操作系统平台上的少数情况下才有用 — 例如,您不能在 Solaris 和 HP-UX 平台之间传输表空间。 在 Oracle 数据库 10g 中,这个局限消失了:只要操作系统字节顺序相同,您就可以在平台之间传输表空间,当在相同字节顺序的平台之间传输表空间时,不需要任何转换。
--Step 1: 查看字节顺序和平台信息
COLUMN PLATFORM_NAME FORMAT A30
SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM. tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM. tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
--Step 2: 验证表空间是否自包含
EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('tspace', TRUE);
执行完成pl/sql包后可以查询信息,如果没有信息表示表空间自包含,可以传输
SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('tspace', TRUE);
PL/SQL procedure successfully completed.
SQL> SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
no rows selected
--Step 3: 源数据库导出表空间元数据
SQL> ALTER TABLESPACE tspace READ ONLY;
Tablespace altered.
SQL> HOST
$ expdp system/sys DUMPFILE=tspacedat.dmp DIRECTORY=dpump_dir TRANSPORT_TABLESPACES = tspace
--Step 4:copy 元数据和相应表空间的数据文件到目标数据库并导入元数据
[oracle@standby ~]$ impdp system/sys DUMPFILE=tspacedat.dmp DIRECTORY=dpump_dir TRANSPORT_DATAFILES= /data/oracle/oradata/target/tspace01.dbf
Import: Release 10.2.0.1.0 - Production on Friday, 26 March, 2010 18:47:32
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** DUMPFILE=tspacedat.dmp DIRECTORY=dpump_dir TRANSPORT_DATAFILES= /data/oracle/oradata/target/tspace01.dbf
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 18:47:41
With the Partitioning, OLAP and Data Mining options
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** DUMPFILE=tspacedat.dmp DIRECTORY=dpump_dir TRANSPORT_DATAFILES= /data/oracle/oradata/target/tspace01.dbf
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 18:47:41
**TRANSPORT_DATAFILES表示目标数据库存放传输的表空间的数据文件的路径,多个文件用逗号隔开
**注意在导入元数据前必须先创建传输的表空间的相应用户
**注意在导入元数据前必须先创建传输的表空间的相应用户
--Step 5: 目标数据库验证数据
[oracle@standby ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 26 18:48:05 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> alter tablespace tspace read write;
Connected.
SQL> alter tablespace tspace read write;
Tablespace altered.
SQL> conn tspace/tspace
Connected.
SQL> select count(*) from cc;
Connected.
SQL> select count(*) from cc;
COUNT(*)
----------
100000
----------
100000
SQL>
上面就是transport tablespace的一个简单例子。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7314177/viewspace-630496/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7314177/viewspace-630496/