ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用数据泵实现表空间迁移

利用数据泵实现表空间迁移

原创 Linux操作系统 作者:hjianping 时间:2011-04-24 14:56:13 0 删除 编辑

利用数据泵实现表空间迁移


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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: EXPDP、IMPDP
请登录后发表评论 登录
全部评论

注册时间:2011-04-24

  • 博文量
    80
  • 访问量
    72823