ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 练习一下Oracle的逻辑备份恢复,EXP/IMP

练习一下Oracle的逻辑备份恢复,EXP/IMP

原创 Linux操作系统 作者:louloueva 时间:2009-01-08 21:29:54 0 删除 编辑

逻辑备份是个人一直比较忽视的一种备份方式
至于原因……也许是在使用SqlServer2000的日子里,接触这种备份太多的缘故吧
那时候经常要导入导出EXCEL、TXT等文档
而且,exp/imp是一种适合于Oracle数据库之间进行备份恢复的工具
并不像SqlServer的导入导出那样支持的类型广泛(虽然大部分都是MS自己的东西……)
对于Oracle的导入导出,更像是一种平台间的数据迁移工具
虽然个人不是太在意这个逻辑备份恢复功能
但看网上,此工具的使用率还是比较高的
所以还是趁着目前较轻松的时候,大概了解一下吧

先来说说Oracle传统的EXP/IMP
Oracle利用EXP将数据库、对象、数据,进行转储,并备份为二进制文件
再用IMP读取转储的文件,进行数据恢复或查看
对于新安装的数据库,在使用此功能之前,先要执行两个脚本中的一个
/home/oracle/oracle/product/10.2.0/db_1/rdbms/admin/catexp.sql
/oracle/product/10.2.0/db_1/rdbms/admin/catalog.sql
脚本用于为使用导入导出功能做一些准备
比如EXP_FULL_DATABASE和IMP_FULL_DATABASE角色的建立和赋上相应权限
并将两个角色授权给DBA角色

与之前接触过的SQL*Loder类似
导入导出可通过参数或参数文件来控制整个过程的行为
另外,还可以通过交互模式(不带除用户名/密码以外的参数调用),以及在OEM来执行

导出导入可以有几种工作模式
完全,database的完全导入导出
表空间,一个或多个表空间的导入导出
用户,针对属于某个用户的数据库对象进行导入导出
表,指定一个或多个表导入导出
选择的工作模式不同,所需要的权限也有所不同
使用时要参照相关文档进行设置
imp,可以将所用exp文件中的对象导入到与源schema相同或不同的schema中
当导入的表有相关的参照完整性或其它约束,而这些约束的条件并没有满足的时候
导入数据就会失败
可以在导入前临时禁止约束,导入后再开启
也可手动制定导入的顺序
更多功能说明,可以参考相关官方文档
比如,Oracle® Database Utilities 10g Release 2 (10.2) B14215-01
没准儿以后在实践应用更深入的功能的时候,会再进行补充总结

说了一些东西,来简单使用一下导入导出吧
因为个人要用sys用户进行测试,调用格式稍微不太一样
exp \'sys/sys@test as sysdba\'
(sys用户使用exp,部分参数无效,具体参考官方文档)
利用参数文件导出
exp \'sys/gainax@test as sysdba\' parfile='/home/oracle/exp.par'
参数文件内容(#为注释用符号):
FILE=test_exp.dmp    #导出的文件名
GRANTS=y    #导出对象权限
FULL=y      #全database导出
ROWS=y      #导出数据行 
LOG=export.log      #导出过程的日志文件
再弄一个表导出模式的
exp \'hr/hr@test\' parfile='/home/oracle/exp.par'
这次的exp.par内容:
FILE=test_exp2.dmp
TABLES=(hr.empb,hr.jobsb)  #要导出的表
ROWS=n    #不导出数据,仅导出表定义

接下来用imp,这里就用上面的表导出exp文件来试验
先将hr.empb,hr.jobsb两个表从数据库中删除
然后利用imp进行导入恢复
imp \'hr/hr@test\' parfile='/home/oracle/exp.par'
参数文件内容:
FILE=/home/oracle/test_exp.dmp
SHOW=n     #不显示表导入过程
IGNORE=n   #如果表已经存在,将会报错并跳过此表的导入
GRANTS=y   #导入权限
TABLES=(empb,jobsb)   #要导入的表
test_exp.dmp文件中没有数据,所以仅仅是在hr用户下建立两个表
再来试验将数据导入
imp \'hr/hr@test\' parfile='/home/oracle/exp.par'
参数文件内容:
FILE=/home/oracle/test_exp2.dmp
SHOW=n
IGNORE=n
GRANTS=y
TABLES=(empb,jobsb)
因为表已经存在,所以会有报错
IMP-00015: following statement failed because the object already exists
修改IGNORE=y,再来导入,成功
试验导入表到另一个用户中
imp \'sys/gainax@test as sysdba\' parfile='/home/oracle/exp.par'
参数文件内容:
FILE=/home/oracle/test_exp2.dmp
SHOW=n
IGNORE=y
GRANTS=y
FROMUSER=hr   #原所属用户名
TOUSER=louloueva   #要导入到用户名
TABLES=(empb,jobsb)

上面是对于Oracle传统的exp/imp工具的使用练习
另外,还有很多复杂的用法没有实践,但整体上已经有了笼统的认识
需要应用更深入的功能的时候,再去参照官方文档进行就行了
在Oracle进入10g之后,就推荐用户使用新一代的导入导出工具
数据泵expdp/impdp,明天了解
再之后,该开始涉及RMAN的备份恢复操作
春节前争取把Oracle的各个备份恢复方法走一遍吧 ^_^

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/556359/viewspace-531932/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-02

  • 博文量
    134
  • 访问量
    116787