li
  当前位置:主页 > 备份恢复 > 文章内容
li
oracle逻辑备份:关于exp/imp的操作与案例分析
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2007-12-26   阅读:46  

oracle Export/Import工具提供了灵活多样的功能和导出/导入模式,最常使用的三种模式是Usertablefull database除此以外,还可以在导出/导入时决定是否包含与对象有关的数据字典信息,如索引、约束、权限等等。
  
注意:通过逻辑备份可以备份整个数据库, 或仅备份部分重要数据。因为是逻辑上的备份,故只能用于逻辑的恢复数据, 一旦数据库被物理损坏, 导致不能启动,逻辑备份的数据不能帮助恢复数据库。

1 table model

  1) backup one user's table

IXDBA.NET社区论坛

     exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp_icdmain_table_yyyymmdd.dmp log=exp_icdmain_table_yyyymmdd.log tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo

  2) recover all table

     imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_icdmain_table_yyyymmdd.dmp log=imp_icdmain_table_yyyymmdd.log

  3) recover some table of all table

     imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_icdmain_table_yyyymmdd.dmp log=imp_icdmain_table_yyyymmdd.log tables=commoninformation,serviceinfo

     

 

2 user model

  1) backup all someone's object

     exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0  owner=icdmain file=exp_icdmain_user_yyyymmdd.dmp log=exp_icdmain_user_yyyymmdd.log

  2) recover all someone's object

     imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_icdmain_user_yyyymmdd.dmp log=imp_icdmain_user_yyyymmdd.log

  3) recover some table of all someone's object

     imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_icdmain_user_yyyymmdd.dmp log=imp_icdmain_user_yyyymmdd.log tables=commoninformation,serviceinfo

 

 

3 full model

  1)backup the full db for all

    exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 full=y inctype=complete file=exp_fulldb_yyyymmdd.dmp log=exp_fulldb_yyyymmdd.log

  2)backup the full db for zengliang

    exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 full=y inctype=incremental file=exp_fulldb_zl_yyyymmdd.dmp log=exp_fulldb_zl_yyyymmdd.log

  3)recover all date for full backup

    imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 full=y file=exp_fulldb_yyyymmdd.dmp log=imp_fulldb_yyyymmdd.log

  4)recover all date for zengliang backup

    imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 full=y inctype=restore file=exp_fulldb_zl_yyyymmdd.dmp

log=imp_fulldb_zl_yyyymmdd.log

 

关于在两个表空间倒换数据的案例:

有这样的问题我要把表空间table_01的表tbs_test 导入到表空间table_02

 

exp userid=a_new/a_new@218_BILLING file=TBS_CLS_TEST1.dmp tables=(tbs_test ) CONSTRAINTS=N INDEXES=N CONSISTENT=N

 

imp userid=a_data/a_data@WT_36 TABLESPACES=table_02 file=TBS_CLS_TEST1.dmp tables=(tbs_test ) IGNORE=Y commit=Y

 

查看导入后表的表空间

select * from  user_all_tables where table_name='TBS_CLS_TEST1'

 

结果是

TABLE_NAME  TABLESPACE_NAME

tbs_test                  table_01

 

结果表明tbs_test 还是在原来的表空间tbs_01这是因为我imp过来的数据库中也有表空间tbs_01如果我imp过来的库没有表空间tbs_01则他将imp到表空间system中。

 

请问如何才能把表空间table_01的表tbs_test 导入到表空间table_02中呢

--------------------------------------------------------------------------------

 作者: oracler_oracle     时间: 2004-4-1 15:33    标题: 回复 expimp

直接使用alter table (tablename) move tablespace命令就可以了不需要导入、导出!!

案例讨论

经常有人会问:原来的数据在USERS表空间里面,我想把它IMPAPP表空间,我已经修改了目的用户的默认表空间,为什么结果还是IMPUSERS表空间中了呢。

 

关于此问题,作如下解释:

Oracle并没有提供什么参数来指定要导入哪个表空间,数据默认将导入到原本导出时数据所在的表空间中,但是我们可以通过以下的方法来实现导入到不同的表空间。

 

1.在IMP时候使用INDEXFILE参数

当给此参数指定了某一文件名,IMP的时候所有的index将不会直接导入到表空间中,而是在指定的文件中生成创建index的脚本。

然后用文本编辑器打开此文件,直接编辑脚本中的storage参数,修改为想要导入的表空间名称。

然后重新执行IMP,使用INDEXS=n参数将除Index之外的Objects导入。

最后进入SQL*PLUS,直接运行刚才编辑的脚本,生成索引。

该方法适用于将index以及constraints导入指定的表空间。

 

2.改变目的用户的默认表空间

这就是上面说的经常有人提问的方法。但是上述的问题之所以没有成功,是因为缺少了下面的几步。

首先,收回目的用户的"UNLIMITED TABLESPACE"权限:

revoke unlimited tablespace from username;

其次,取消目的用户在原数据导出表空间中的配额,这样才能迫使IMP把数据导入到用户的默认表空间中去。

然后,将希望导入的表空间设为目的用户的默认表空间,并添加配额。

最后,执行IMP

 

3。使用TOAD

TOAD是强大的Oracle数据库管理软件,是Quest出品的第三方软件,我们可以使用其中的Rebuild Multi Objects工具来实现将多个Object转移到指定的表空间。

于是我们可以不管三七二十一,先IMP,然后再用TOAD作事后的修改。

关于TOAD的使用,此处不作详细解释。




  上一篇: oracle备份恢复:当前日志损坏的...   下一篇: RMAN常用操作小结:Oracle9i RMA...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·oracle备份恢复:当前日志损坏的...
·案例:Rman全备份不完全恢复数据...
·疑问测试:在primary上rman全备份...
·Rman全备恢复到另外服务器操作指...
·RMAN备份的查询和报告
·ocfs2文件系统问题总结
·ORA-00600: [kcratr1_lastbwr]错...
·Rman功能测试
·使用RMAN启动Oracle默认实例
·使用Rman的Plus archvielog选项简...
·RMAN常用操作小结:Oracle9i RMA...
·oracle检查点系列:checkpoint小...
·RMAN备份恢复——RAC环境数据库的...
·RMAN备份恢复——RAC环境数据库的...
·Oracle9i流环境清除(三)
·Oracle9i流环境清除(二)
·ORA-24170错误
·流同步机制优化(一)
·流故障解决(数据类型冲突)
·Oracle9i流环境清除(一)
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接