利用数据泵实现表空间迁移
1、查看源数据库的信息
sql> select tablespace_name,file_name from dba_data_files;
TABLESPACE_NAME FILE_NAME
------------------------------ ----------------------------------------
USERS /u01/oradata/ora10/users01.dbf
SYSAUX /u01/oradata/ora10/sysaux01.dbf
UNDOTBS1 /u01/oradata/ora10/undotbs01.dbf
SYSTEM /u01/oradata/ora10/system01.dbf
TEST1 /u01/oradata/ora10/test1.dbf
sql> select * from v$version;
banner
----------------------------------------------------------------------------
oracle database 11g enterprise edition release 11.1.0.6.0 - 64bit production
pl/sql release 11.1.0.6.0 - production
core 11.1.0.6.0 production
tns for solaris: version 11.1.0.6.0 - production
nlsrtl version 11.1.0.6.0 - production
sql> show parameter db_block_size
name type value
------------- ------- ------
db_block_size integer 32768
准备迁移test1表空间,数据库版本为11g,db_block_size为32k。
2、查看目标数据库的信息
sql> select tablespace_name, file_name from dba_data_files;
TABLESPACE_NAME FILE_NAME
------------------------------ ----------------------------------------
USERS /u01/oradata/ora10/users01.dbf
SYSAUX /u01/oradata/ora10/sysaux01.dbf
UNDOTBS1 /u01/oradata/ora10/undotbs01.dbf
SYSTEM /u01/oradata/ora10/system01.dbf
sql> select * from v$version;
banner
-----------------------------------------------------------------------------
oracle database 11g enterprise edition release 11.1.0.6.0 - 64bit production
pl/sql release 11.1.0.6.0 - production
core 11.1.0.6.0 production
tns for solaris: version 11.1.0.6.0 - production
nlsrtl version 11.1.0.6.0 - production
sql> show parameter db_block_size
name type value
------------- ------- -----
db_block_size integer 8192
表空间test1在目标数据库不存在,可以执行表空间迁移,目标数据库和源数据库版本一致,且都是solaris下数据库,符合表空间迁移的要求,唯一需要注意的是,目标数据库和源数据库的block_size大小不一致,这里需要设置目标数据库的db_32k_cache_size使得32k的表空间可以在目标数据库中加载:
sql> alter system set db_32k_cache_size = 64m;
3、在源数据库中将要迁移的表空间设置为只读状态:
sql> alter tablespace test1 read only;
4、利用数据泵expdp导出test1表空间
$ expdp system/password directory=test_dump dumpfile=t1.dmp transport_tablespaces=test1 transport_full_check=y
完成导出后,下面将test1.dbf数据文件和t1.dmp导出文件拷贝到目标数据库所在服务器
5、将源数据库的表空间至于读写状态:
sql> alter tablespace test1 read write;
6、在目标数据库通过impdp来加载迁移表空间了:
$ impdp system/password directory=d_output dumpfile=trans_test.dp transport_datafiles='/export/home/oracle/test01.dbf'
7、在目标数据库进行检查,可以发现,test表空间以及加载到目标数据库中:
sql> select tablespace_name, file_name from dba_data_files;
TABLESPACE_NAME FILE_NAME
------------------------------ ----------------------------------------
USERS /u01/oradata/ora10/users01.dbf
SYSAUX /u01/oradata/ora10/sysaux01.dbf
UNDOTBS1 /u01/oradata/ora10/undotbs01.dbf
SYSTEM /u01/oradata/ora10/system01.dbf
TEST1 /u01/oradata/ora10/test1.dbf
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17012874/viewspace-693303/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17012874/viewspace-693303/